/*
 * Copyright (C) 2013 Linaro, Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

&twl {
       pinctrl-names = "default";
       pinctrl-0 = <&twl4030_pins &twl4030_vpins>;
};

&omap3_pmx_core {
       /*
        * On most OMAP3 platforms, the twl4030 IRQ line is connected
        * to the SYS_NIRQ line on OMAP.  Therefore, configure the
        * defaults for the SYS_NIRQ pin here.
        */
       twl4030_pins: pinmux_twl4030_pins {
               pinctrl-single,pins = <
                       OMAP3_CORE1_IOPAD(0x21e0, PIN_INPUT_PULLUP | PIN_OFF_WAKEUPENABLE | MUX_MODE0) /* sys_nirq.sys_nirq */
               >;
       };
};

/*
 * If your board is not using the I2C4 pins with twl4030, then don't include
 * this file. For proper idle mode signaling with sys_clkreq and sys_off_mode
 * pins we need to configure I2C4, or else use the legacy sys_nvmode1 and
 * sys_nvmode2 signaling.
 */
&omap3_pmx_wkup {
       twl4030_vpins: pinmux_twl4030_vpins {
               pinctrl-single,pins = <
                       OMAP3_WKUP_IOPAD(0x2a00, PIN_INPUT | MUX_MODE0)         /* i2c4_scl.i2c4_scl */
                       OMAP3_WKUP_IOPAD(0x2a02, PIN_INPUT | MUX_MODE0)         /* i2c4_sda.i2c4_sda */
                       OMAP3_WKUP_IOPAD(0x2a06, PIN_OUTPUT | MUX_MODE0)        /* sys_clkreq.sys_clkreq */
                       OMAP3_WKUP_IOPAD(0x2a18, PIN_OUTPUT | MUX_MODE0)        /* sys_off_mode.sys_off_mode */
               >;
       };
};
