} static struct twl4030_gpio_platform_data rx51_gpio_data = { .pulldowns = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(12) | BIT(13) | BIT(14) | BIT(15) | BIT(16) | BIT(17) , .setup = rx51_twlgpio_setup, }; static struct twl4030_ins sleep_on_seq[] __initdata = { /* * Turn off everything */ {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 1, 0, RES_STATE_SLEEP), 2}, }; static struct twl4030_script sleep_on_script __initdata = { .script = sleep_on_seq, .size = ARRAY_SIZE(sleep_on_seq), .flags = TWL4030_SLEEP_SCRIPT, }; static struct twl4030_ins wakeup_seq[] __initdata = { /* * Reenable everything */ {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 1, 0, RES_STATE_ACTIVE), 2}, };
.irq_base = TWL4030_GPIO_IRQ_BASE, .irq_end = TWL4030_GPIO_IRQ_END, }; static struct twl4030_ins sleep_on_seq[] = { /* * Turn off everything. #define MSG_BROADCAST(devgrp, grp, type, type2, state) \ ( (devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \ | (type) << 4 | (state)) #define MSG_SINGULAR(devgrp, id, state) \ ((devgrp) << 13 | 0 << 12 | (id) << 4 | (state)) 0x14 - Corresponds to 500uSec */ {MSG_SINGULAR(DEV_GRP_NULL, RES_HFCLKOUT, RES_STATE_SLEEP), 0x14}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 4, 1, RES_STATE_SLEEP), 2}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 4, 2, RES_STATE_SLEEP), 2}, }; static struct twl4030_script sleep_on_script = { .script = sleep_on_seq, .size = ARRAY_SIZE(sleep_on_seq), .number_of_events = 1, .events[0] = { .offset = 0, .event = TRITON_SLEEP, }, }; static struct twl4030_ins wakeup_seq[] = { /*
TWL4030_RESCONFIG(RES_VDD1, DEV_GRP_P1, 4, 1, RES_STATE_OFF), /* ? */ TWL4030_RESCONFIG(RES_VDD2, DEV_GRP_P1, 3, 1, RES_STATE_OFF), /* ? */ TWL4030_RESCONFIG(RES_REGEN, DEV_GRP_ALL, 2, 1, RES_STATE_SLEEP), TWL4030_RESCONFIG(RES_NRES_PWRON, DEV_GRP_ALL, 0, 1, RES_STATE_SLEEP), TWL4030_RESCONFIG(RES_CLKEN, DEV_GRP_ALL, 3, 2, RES_STATE_SLEEP), TWL4030_RESCONFIG(RES_SYSEN, DEV_GRP_ALL, 6, 1, RES_STATE_SLEEP), TWL4030_RESCONFIG(RES_HFCLKOUT, DEV_GRP_P3, 0, 2, RES_STATE_SLEEP), /* ? */ TWL4030_RESCONFIG(0, 0, 0, 0, 0), }; /** * Optimized 'Active to Sleep' sequence */ static struct twl4030_ins omap3beagle_sleep_seq[] __initdata = { { MSG_SINGULAR(DEV_GRP_NULL, RES_HFCLKOUT, RES_STATE_SLEEP), 20}, { MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, RES_TYPE_R0, RES_TYPE2_R1, RES_STATE_SLEEP), 2 }, { MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, RES_TYPE_R0, RES_TYPE2_R2, RES_STATE_SLEEP), 2 }, }; static struct twl4030_script omap3beagle_sleep_script __initdata = { .script = omap3beagle_sleep_seq, .size = ARRAY_SIZE(omap3beagle_sleep_seq), .flags = TWL4030_SLEEP_SCRIPT, }; /** * Optimized 'Sleep to Active (P12)' sequence */ static struct twl4030_ins omap3beagle_wake_p12_seq[] __initdata = { { MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, RES_TYPE_R0, RES_TYPE2_R1, RES_STATE_ACTIVE), 2 } };
.pullups = BIT(1), .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) | BIT(15) | BIT(16) | BIT(17), .setup = bug_twl_gpio_setup, }; static struct twl4030_usb_data bug_usb_data = { .usb_mode = T2_USB_MODE_ULPI, }; static struct twl4030_ins sleep_on_seq[] __initdata = { /* * Turn off everything */ {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_RC, RES_TYPE_ALL, RES_TYPE2_R0, RES_STATE_SLEEP), 4}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, RES_TYPE_ALL, RES_TYPE2_R0, RES_STATE_SLEEP), 4}, }; static struct twl4030_script sleep_on_script __initdata = { .script = sleep_on_seq, .size = ARRAY_SIZE(sleep_on_seq), .flags = TWL4030_SLEEP_SCRIPT, }; static struct twl4030_ins wakeup_seq[] __initdata = { /* * Reenable everything */ {MSG_SINGULAR(DEV_GRP_NULL, RES_VUSB_1V5, RES_STATE_ACTIVE), 0x30},
.script = wakeup_p3_seq, .size = ARRAY_SIZE(wakeup_p3_seq), .flags = TWL4030_WAKEUP3_SCRIPT, }; static struct twl4030_ins wrst_seq[] __initdata = { /* * Reset twl4030. * Reset VDD1 regulator. * Reset VDD2 regulator. * Reset VPLL1 regulator. * Enable sysclk output. * Reenable twl4030. */ {MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_OFF), 2}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 0, 1, RES_STATE_ACTIVE), 0x13}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_PP, 0, 2, RES_STATE_WRST), 0x13}, {MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_PP, 0, 3, RES_STATE_OFF), 0x13}, {MSG_SINGULAR(DEV_GRP_NULL, RES_VDD1, RES_STATE_WRST), 0x13}, {MSG_SINGULAR(DEV_GRP_NULL, RES_VDD2, RES_STATE_WRST), 0x13}, {MSG_SINGULAR(DEV_GRP_NULL, RES_VPLL1, RES_STATE_WRST), 0x35}, {MSG_SINGULAR(DEV_GRP_P1, RES_HFCLKOUT, RES_STATE_ACTIVE), 2}, {MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_ACTIVE), 2}, }; static struct twl4030_script wrst_script __initdata = { .script = wrst_seq, .size = ARRAY_SIZE(wrst_seq), .flags = TWL4030_WRST_SCRIPT, };