pr_debug("omap_hwmod: %s: resetting\n", oh->name);
 
+       /*
+        * XXX We're not resetting modules with hardreset lines
+        * automatically here.  Should we do this also, or just expect
+        * those modules to define custom reset functions?
+        */
        ret = (oh->class->reset) ? oh->class->reset(oh) : _ocp_softreset(oh);
 
        if (oh->class->sysc) {
  */
 static int _enable(struct omap_hwmod *oh)
 {
-       int r;
+       int r, i;
        int hwsup = 0;
 
        pr_debug("omap_hwmod: %s: enabling\n", oh->name);
                return -EINVAL;
        }
 
-
        /*
-        * If an IP contains only one HW reset line, then de-assert it in order
+        * If an IP contains HW reset lines, then de-assert them in order
         * to allow the module state transition. Otherwise the PRCM will return
         * Intransition status, and the init will failed.
         */
-       if ((oh->_state == _HWMOD_STATE_INITIALIZED ||
-            oh->_state == _HWMOD_STATE_DISABLED) && oh->rst_lines_cnt == 1)
-               _deassert_hardreset(oh, oh->rst_lines[0].name);
+       if (oh->_state == _HWMOD_STATE_INITIALIZED ||
+           oh->_state == _HWMOD_STATE_DISABLED)
+               for (i = 0; i < oh->rst_lines_cnt; i++)
+                       _deassert_hardreset(oh, oh->rst_lines[i].name);
 
        /* Mux pins for device runtime if populated */
        if (oh->mux && (!oh->mux->enabled ||
  */
 static int _shutdown(struct omap_hwmod *oh)
 {
-       int ret;
+       int ret, i;
        u8 prev_state;
 
        if (oh->_state != _HWMOD_STATE_IDLE &&
        }
        /* XXX Should this code also force-disable the optional clocks? */
 
-       /*
-        * If an IP contains only one HW reset line, then assert it
-        * after disabling the clocks and before shutting down the IP.
-        */
-       if (oh->rst_lines_cnt == 1)
-               _assert_hardreset(oh, oh->rst_lines[0].name);
+       for (i = 0; i < oh->rst_lines_cnt; i++)
+               _assert_hardreset(oh, oh->rst_lines[i].name);
 
        /* Mux pins to safe mode or use populated off mode values */
        if (oh->mux)
         * reset asserted. Exit without warning because that behavior is
         * expected.
         */
-       if ((oh->flags & HWMOD_INIT_NO_RESET) && oh->rst_lines_cnt == 1)
+       if ((oh->flags & HWMOD_INIT_NO_RESET) && oh->rst_lines_cnt > 0)
                return 0;
 
        r = _enable(oh);