mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-29 22:14:41 +08:00
731b409878
By reconfiguring few GPIOs in the dts file we can make duovero parlor hit retention during idle: 1. Let's a larger debounce value for gpio-keys This will then make gpio-keys use software debounce and the GPIO debounce clock is not enabled. 2. Let's allow WLAN suspend for mwifiex This can be done just by adding keep-power-in-suspend. 3. Let's reconfigure smsc911x driver to use GPIO edge interrupt This will allow using NFSroot while the system idles, and the kernel has quite a few dts files with "smsc,lan9115" compatible using edge interrupts. Then to have the system hit core retention during idle, the UARTs needs to be idled and USB modules need to be unloaded or unbound. Cc: Ash Charles <ash@gumstix.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
272 lines
7.3 KiB
Plaintext
272 lines
7.3 KiB
Plaintext
/*
|
|
* Copyright (C) 2014 Florian Vaussard, EPFL Mobots group
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include "omap443x.dtsi"
|
|
|
|
/ {
|
|
model = "Gumstix Duovero";
|
|
compatible = "gumstix,omap4-duovero", "ti,omap4430", "ti,omap4";
|
|
|
|
chosen {
|
|
stdout-path = &uart3;
|
|
};
|
|
|
|
memory@80000000 {
|
|
device_type = "memory";
|
|
reg = <0x80000000 0x40000000>; /* 1 GB */
|
|
};
|
|
|
|
sound {
|
|
compatible = "ti,abe-twl6040";
|
|
ti,model = "DuoVero";
|
|
|
|
ti,mclk-freq = <38400000>;
|
|
|
|
ti,mcpdm = <&mcpdm>;
|
|
|
|
ti,twl6040 = <&twl6040>;
|
|
|
|
/* Audio routing */
|
|
ti,audio-routing =
|
|
"Headset Stereophone", "HSOL",
|
|
"Headset Stereophone", "HSOR",
|
|
"HSMIC", "Headset Mic",
|
|
"Headset Mic", "Headset Mic Bias";
|
|
};
|
|
|
|
/* HS USB Host PHY on PORT 1 */
|
|
hsusb1_phy: hsusb1_phy {
|
|
compatible = "usb-nop-xceiv";
|
|
reset-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>; /* gpio_62 */
|
|
#phy-cells = <0>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&hsusb1phy_pins>;
|
|
|
|
clocks = <&auxclk3_ck>;
|
|
clock-names = "main_clk";
|
|
clock-frequency = <19200000>;
|
|
};
|
|
|
|
/* regulator for w2cbw0015 on sdio5 */
|
|
w2cbw0015_vmmc: w2cbw0015_vmmc {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&w2cbw0015_pins>;
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "w2cbw0015";
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
gpio = <&gpio2 11 GPIO_ACTIVE_LOW>; /* gpio_43 */
|
|
startup-delay-us = <70000>;
|
|
enable-active-high;
|
|
regulator-boot-on;
|
|
};
|
|
};
|
|
|
|
&omap4_pmx_core {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <
|
|
&twl6040_pins
|
|
&hsusbb1_pins
|
|
>;
|
|
|
|
twl6040_pins: pinmux_twl6040_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x166, PIN_OUTPUT | MUX_MODE3) /* usbb2_ulpitll_nxt.gpio_160 */
|
|
OMAP4_IOPAD(0x1a0, PIN_INPUT | MUX_MODE0) /* sys_nirq2.sys_nirq2 */
|
|
>;
|
|
};
|
|
|
|
mcpdm_pins: pinmux_mcpdm_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x106, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_pdm_ul_data.abe_pdm_ul_data */
|
|
OMAP4_IOPAD(0x108, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_pdm_dl_data.abe_pdm_dl_data */
|
|
OMAP4_IOPAD(0x10a, PIN_INPUT_PULLUP | MUX_MODE0) /* abe_pdm_frame.abe_pdm_frame */
|
|
OMAP4_IOPAD(0x10c, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_pdm_lb_clk.abe_pdm_lb_clk */
|
|
OMAP4_IOPAD(0x10e, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_clks.abe_clks */
|
|
>;
|
|
};
|
|
|
|
mcbsp1_pins: pinmux_mcbsp1_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x0fe, PIN_INPUT | MUX_MODE0) /* abe_mcbsp1_clkx.abe_mcbsp1_clkx */
|
|
OMAP4_IOPAD(0x100, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp1_dr.abe_mcbsp1_dr */
|
|
OMAP4_IOPAD(0x102, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp1_dx.abe_mcbsp1_dx */
|
|
OMAP4_IOPAD(0x104, PIN_INPUT | MUX_MODE0) /* abe_mcbsp1_fsx.abe_mcbsp1_fsx */
|
|
>;
|
|
};
|
|
|
|
hsusbb1_pins: pinmux_hsusbb1_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x0c2, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_clk.usbb1_ulpiphy_clk */
|
|
OMAP4_IOPAD(0x0c4, PIN_OUTPUT | MUX_MODE4) /* usbb1_ulpitll_stp.usbb1_ulpiphy_stp */
|
|
OMAP4_IOPAD(0x0c6, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dir.usbb1_ulpiphy_dir */
|
|
OMAP4_IOPAD(0x0c8, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_nxt.usbb1_ulpiphy_nxt */
|
|
OMAP4_IOPAD(0x0ca, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat0.usbb1_ulpiphy_dat0 */
|
|
OMAP4_IOPAD(0x0cc, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat1.usbb1_ulpiphy_dat1 */
|
|
OMAP4_IOPAD(0x0ce, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat2.usbb1_ulpiphy_dat2 */
|
|
OMAP4_IOPAD(0x0d0, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat3.usbb1_ulpiphy_dat3 */
|
|
OMAP4_IOPAD(0x0d2, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat4.usbb1_ulpiphy_dat4 */
|
|
OMAP4_IOPAD(0x0d4, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat5.usbb1_ulpiphy_dat5 */
|
|
OMAP4_IOPAD(0x0d6, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat6.usbb1_ulpiphy_dat6 */
|
|
OMAP4_IOPAD(0x0d8, PIN_INPUT_PULLDOWN | MUX_MODE4) /* usbb1_ulpitll_dat7.usbb1_ulpiphy_dat7 */
|
|
>;
|
|
};
|
|
|
|
hsusb1phy_pins: pinmux_hsusb1phy_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x08c, PIN_OUTPUT | MUX_MODE3) /* gpmc_wait1.gpio_62 */
|
|
>;
|
|
};
|
|
|
|
w2cbw0015_pins: pinmux_w2cbw0015_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x066, PIN_OUTPUT | MUX_MODE3) /* gpmc_a19.gpio_43 */
|
|
OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3) /* gpmc_ncs3.gpio_53 */
|
|
>;
|
|
};
|
|
|
|
i2c1_pins: pinmux_i2c1_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x122, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_scl */
|
|
OMAP4_IOPAD(0x124, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_sda */
|
|
>;
|
|
};
|
|
|
|
i2c4_pins: pinmux_i2c4_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x12e, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c4_scl */
|
|
OMAP4_IOPAD(0x130, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c4_sda */
|
|
>;
|
|
};
|
|
|
|
mmc1_pins: pinmux_mmc1_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x0e2, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk */
|
|
OMAP4_IOPAD(0x0e4, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmcc1_cmd */
|
|
OMAP4_IOPAD(0x0e6, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmcc1_dat0 */
|
|
OMAP4_IOPAD(0x0e8, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1 */
|
|
OMAP4_IOPAD(0x0ea, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2 */
|
|
OMAP4_IOPAD(0x0ec, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3 */
|
|
>;
|
|
};
|
|
|
|
mmc5_pins: pinmux_mmc5_pins {
|
|
pinctrl-single,pins = <
|
|
OMAP4_IOPAD(0x148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_clk */
|
|
OMAP4_IOPAD(0x14a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmcc5_cmd */
|
|
OMAP4_IOPAD(0x14c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmcc5_dat0 */
|
|
OMAP4_IOPAD(0x14e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat1 */
|
|
OMAP4_IOPAD(0x150, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat2 */
|
|
OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat3 */
|
|
>;
|
|
};
|
|
};
|
|
|
|
/* PMIC */
|
|
&i2c1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&i2c1_pins>;
|
|
|
|
clock-frequency = <400000>;
|
|
|
|
twl: twl@48 {
|
|
reg = <0x48>;
|
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */
|
|
};
|
|
|
|
twl6040: twl@4b {
|
|
compatible = "ti,twl6040";
|
|
#clock-cells = <0>;
|
|
reg = <0x4b>;
|
|
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_2N cascaded to gic */
|
|
ti,audpwron-gpio = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* gpio_160 */
|
|
|
|
vio-supply = <&v1v8>;
|
|
v2v1-supply = <&v2v1>;
|
|
enable-active-high;
|
|
};
|
|
};
|
|
|
|
#include "twl6030.dtsi"
|
|
#include "twl6030_omap4.dtsi"
|
|
|
|
/* on-board bluetooth / WiFi module */
|
|
&i2c4 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&i2c4_pins>;
|
|
|
|
clock-frequency = <400000>;
|
|
};
|
|
|
|
&mcbsp1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mcbsp1_pins>;
|
|
status = "okay";
|
|
};
|
|
|
|
&mcpdm {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mcpdm_pins>;
|
|
|
|
clocks = <&twl6040>;
|
|
clock-names = "pdmclk";
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
&mmc1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mmc1_pins>;
|
|
|
|
vmmc-supply = <&vmmc>;
|
|
ti,bus-width = <4>;
|
|
ti,non-removable; /* FIXME: use PMIC_MMC detect */
|
|
};
|
|
|
|
&mmc2 {
|
|
status = "disabled";
|
|
};
|
|
|
|
/* mmc3 is available to the expansion board */
|
|
|
|
&mmc4 {
|
|
status = "disabled";
|
|
};
|
|
|
|
/* on-board WiFi module */
|
|
&mmc5 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mmc5_pins>;
|
|
|
|
vmmc-supply = <&w2cbw0015_vmmc>;
|
|
ti,bus-width = <4>;
|
|
ti,non-removable;
|
|
cap-power-off-card;
|
|
keep-power-in-suspend;
|
|
};
|
|
|
|
&twl_usb_comparator {
|
|
usb-supply = <&vusb>;
|
|
};
|
|
|
|
&usb_otg_hs {
|
|
interface-type = <1>;
|
|
mode = <3>;
|
|
power = <50>;
|
|
};
|
|
|
|
&usbhshost {
|
|
port1-mode = "ehci-phy";
|
|
};
|
|
|
|
&usbhsehci {
|
|
phys = <&hsusb1_phy>;
|
|
};
|
|
|