/*
 * 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 = <
			0x1b0 (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 */
		>;
	};
};
