Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86c79bf4 authored by R Sricharan's avatar R Sricharan Committed by Tony Lindgren
Browse files

omap2+: mux: Remove the use of IDLE flag



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: default avatarsricharan <r.sricharan@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 029268e4
Loading
Loading
Loading
Loading
+7 −12
Original line number Diff line number Diff line
@@ -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,24 +368,17 @@ 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;
	}

@@ -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) {
+0 −1
Original line number Diff line number Diff line
@@ -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 */