}
/**
- * _find_mpu_port_index - find hwmod OCP slave port ID intended for MPU use
+ * _save_mpu_port_index - find and save the index to @oh's MPU port
* @oh: struct omap_hwmod *
*
- * Returns the array index of the OCP slave port that the MPU
- * addresses the device on, or -EINVAL upon error or not found.
+ * Determines the array index of the OCP slave port that the MPU uses
+ * to address the device, and saves it into the struct omap_hwmod.
+ * Intended to be called during hwmod registration only. No return
+ * value.
*/
-static int __init _find_mpu_port_index(struct omap_hwmod *oh)
+static void __init _save_mpu_port_index(struct omap_hwmod *oh)
{
- struct omap_hwmod_ocp_if *os;
+ struct omap_hwmod_ocp_if *os = NULL;
int i = 0;
- int found = 0;
if (!oh)
- return -EINVAL;
+ return;
+
+ oh->_int_flags |= _HWMOD_NO_MPU_PORT;
while (i < oh->slaves_cnt) {
os = _fetch_next_ocp_if(NULL, oh->slaves, &i);
if (os->user & OCP_USER_MPU) {
- found = 1;
+ oh->_mpu_port_index = i - 1;
+ oh->_int_flags &= ~_HWMOD_NO_MPU_PORT;
break;
}
}
- if (found)
- pr_debug("omap_hwmod: %s: MPU OCP slave port ID %d\n",
- oh->name, i - 1);
- else
- pr_debug("omap_hwmod: %s: no MPU OCP slave port found\n",
- oh->name);
-
- return (found) ? (i - 1) : -EINVAL;
+ return;
}
/**
int found = 0, i = 0;
os = _find_mpu_rt_port(oh);
- if (!os->addr)
+ if (!os || !os->addr)
return NULL;
do {
*/
static int __init _register(struct omap_hwmod *oh)
{
- int ms_id;
-
if (!oh || !oh->name || !oh->class || !oh->class->name ||
(oh->_state != _HWMOD_STATE_UNKNOWN))
return -EINVAL;
if (_lookup(oh->name))
return -EEXIST;
- ms_id = _find_mpu_port_index(oh);
- if (!IS_ERR_VALUE(ms_id))
- oh->_mpu_port_index = ms_id;
- else
- oh->_int_flags |= _HWMOD_NO_MPU_PORT;
+ _save_mpu_port_index(oh);
list_add_tail(&oh->node, &omap_hwmod_list);