/*
 * 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 */
		>;
	};
};
