diff options
Diffstat (limited to 'arch/arm/mach-omap2/mux.c')
-rw-r--r-- | arch/arm/mach-omap2/mux.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 27eb51a224cb..17bd6394d224 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -317,6 +317,54 @@ err1: | |||
317 | return NULL; | 317 | return NULL; |
318 | } | 318 | } |
319 | 319 | ||
320 | /* Assumes the calling function takes care of locking */ | ||
321 | void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state) | ||
322 | { | ||
323 | int i; | ||
324 | |||
325 | for (i = 0; i < hmux->nr_pads; i++) { | ||
326 | struct omap_device_pad *pad = &hmux->pads[i]; | ||
327 | int flags, val = -EINVAL; | ||
328 | |||
329 | flags = pad->flags; | ||
330 | |||
331 | switch (state) { | ||
332 | case _HWMOD_STATE_ENABLED: | ||
333 | if (flags & OMAP_DEVICE_PAD_ENABLED) | ||
334 | break; | ||
335 | flags |= OMAP_DEVICE_PAD_ENABLED; | ||
336 | val = pad->enable; | ||
337 | pr_debug("%s: Enabling %s %x\n", __func__, | ||
338 | pad->name, val); | ||
339 | break; | ||
340 | case _HWMOD_STATE_IDLE: | ||
341 | if (!(flags & OMAP_DEVICE_PAD_REMUX)) | ||
342 | break; | ||
343 | flags &= ~OMAP_DEVICE_PAD_ENABLED; | ||
344 | val = pad->idle; | ||
345 | pr_debug("%s: Idling %s %x\n", __func__, | ||
346 | pad->name, val); | ||
347 | break; | ||
348 | case _HWMOD_STATE_DISABLED: | ||
349 | default: | ||
350 | /* Use safe mode unless OMAP_DEVICE_PAD_REMUX */ | ||
351 | if (flags & OMAP_DEVICE_PAD_REMUX) | ||
352 | val = pad->off; | ||
353 | else | ||
354 | val = OMAP_MUX_MODE7; | ||
355 | flags &= ~OMAP_DEVICE_PAD_ENABLED; | ||
356 | pr_debug("%s: Disabling %s %x\n", __func__, | ||
357 | pad->name, val); | ||
358 | }; | ||
359 | |||
360 | if (val >= 0) { | ||
361 | omap_mux_write(pad->partition, val, | ||
362 | pad->mux->reg_offset); | ||
363 | pad->flags = flags; | ||
364 | } | ||
365 | } | ||
366 | } | ||
367 | |||
320 | #ifdef CONFIG_DEBUG_FS | 368 | #ifdef CONFIG_DEBUG_FS |
321 | 369 | ||
322 | #define OMAP_MUX_MAX_NR_FLAGS 10 | 370 | #define OMAP_MUX_MAX_NR_FLAGS 10 |