omap2+: mux: Remove the use of IDLE flag
authorR Sricharan <r.sricharan@ti.com>
Fri, 11 Mar 2011 19:32:25 +0000 (11:32 -0800)
committerTony Lindgren <tony@atomide.com>
Fri, 11 Mar 2011 19:32:25 +0000 (11:32 -0800)
Currently OMAP_DEVICE_PAD_IDLE flag is used to mux pins
dynamically. This can be simplified by using the enabled
state variable of each pad. This also fixes the issue of
the static pads not getting muxed after idling and
disable/enable state transitions.

Signed-off-by: sricharan <r.sricharan@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/mux.h

index 8717370c91b173a4dabfeef4904dbb770860ac86..bb043cbb3886add2ca194cc1b2aa2190aaf3dd27 100644 (file)
@@ -359,7 +359,6 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
                        struct omap_device_pad *pad = hmux->pads_dynamic[i];
                        int val = -EINVAL;
 
-                       pad->flags |= OMAP_DEVICE_PAD_IDLE;
                        val = pad->idle;
                        omap_mux_write(pad->partition, val,
                                        pad->mux->reg_offset);
@@ -369,25 +368,18 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
        }
 
        /* Runtime enabling of dynamic pads */
-       if ((state == _HWMOD_STATE_ENABLED) && hmux->pads_dynamic) {
-               int idled = 0;
-
+       if ((state == _HWMOD_STATE_ENABLED) && hmux->pads_dynamic
+                                       && hmux->enabled) {
                for (i = 0; i < hmux->nr_pads_dynamic; i++) {
                        struct omap_device_pad *pad = hmux->pads_dynamic[i];
                        int val = -EINVAL;
 
-                       if (!(pad->flags & OMAP_DEVICE_PAD_IDLE))
-                               continue;
-
-                       pad->flags &= ~OMAP_DEVICE_PAD_IDLE;
                        val = pad->enable;
                        omap_mux_write(pad->partition, val,
                                        pad->mux->reg_offset);
-                       idled++;
                }
 
-               if (idled)
-                       return;
+               return;
        }
 
        /* Enabling or disabling of all pads */
@@ -404,7 +396,6 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
                                        pad->name, val);
                        break;
                case _HWMOD_STATE_DISABLED:
-               default:
                        /* Use safe mode unless OMAP_DEVICE_PAD_REMUX */
                        if (flags & OMAP_DEVICE_PAD_REMUX)
                                val = pad->off;
@@ -412,6 +403,10 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
                                val = OMAP_MUX_MODE7;
                        pr_debug("%s: Disabling %s %x\n", __func__,
                                        pad->name, val);
+                       break;
+               default:
+                       /* Nothing to be done */
+                       break;
                };
 
                if (val >= 0) {
index 1d5bf4298c6f448f13dfaf4e0d9e0f0165eb6b58..8920fa4775ac2adcd354e36d17d7911f2d21b271 100644 (file)
@@ -159,7 +159,6 @@ struct omap_board_mux {
        u16     value;
 };
 
-#define OMAP_DEVICE_PAD_IDLE           BIT(7)  /* Not needed for board-*.c */
 #define OMAP_DEVICE_PAD_REMUX          BIT(1)  /* Dynamically remux a pad,
                                                   needs enable, idle and off
                                                   values */