Merge branch 'drivers/mmc' into next/dt2
Changes in the dt2 branch move stuff around that gets changed in the drivers/mmc branch. I chose a non-obvious resolution by adding the new bus-width property into all the tegra sdhci device nodes. Conflicts: arch/arm/boot/dts/tegra-cardhu.dts arch/arm/boot/dts/tegra-harmony.dts arch/arm/boot/dts/tegra-ventana.dts Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Коммит
deb88cc3c6
|
@ -11,9 +11,11 @@ Required properties:
|
||||||
- interrupt-parent : interrupt source phandle.
|
- interrupt-parent : interrupt source phandle.
|
||||||
- clock-frequency : specifies eSDHC base clock frequency.
|
- clock-frequency : specifies eSDHC base clock frequency.
|
||||||
- sdhci,wp-inverted : (optional) specifies that eSDHC controller
|
- sdhci,wp-inverted : (optional) specifies that eSDHC controller
|
||||||
reports inverted write-protect state;
|
reports inverted write-protect state; New devices should use
|
||||||
|
the generic "wp-inverted" property.
|
||||||
- sdhci,1-bit-only : (optional) specifies that a controller can
|
- sdhci,1-bit-only : (optional) specifies that a controller can
|
||||||
only handle 1-bit data transfers.
|
only handle 1-bit data transfers. New devices should use the
|
||||||
|
generic "bus-width = <1>" property.
|
||||||
- sdhci,auto-cmd12: (optional) specifies that a controller can
|
- sdhci,auto-cmd12: (optional) specifies that a controller can
|
||||||
only handle auto CMD12.
|
only handle auto CMD12.
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ Required properties:
|
||||||
- interrupts : Should contain eSDHC interrupt
|
- interrupts : Should contain eSDHC interrupt
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- fsl,card-wired : Indicate the card is wired to host permanently
|
- non-removable : Indicate the card is wired to host permanently
|
||||||
- fsl,cd-internal : Indicate to use controller internal card detection
|
- fsl,cd-internal : Indicate to use controller internal card detection
|
||||||
- fsl,wp-internal : Indicate to use controller internal write protection
|
- fsl,wp-internal : Indicate to use controller internal write protection
|
||||||
- cd-gpios : Specify GPIOs for card detection
|
- cd-gpios : Specify GPIOs for card detection
|
||||||
|
|
|
@ -10,7 +10,8 @@ Required properties:
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- gpios : may specify GPIOs in this order: Card-Detect GPIO,
|
- gpios : may specify GPIOs in this order: Card-Detect GPIO,
|
||||||
Write-Protect GPIO.
|
Write-Protect GPIO. Note that this does not follow the
|
||||||
|
binding from mmc.txt, for historic reasons.
|
||||||
- interrupts : the interrupt of a card detect interrupt.
|
- interrupts : the interrupt of a card detect interrupt.
|
||||||
- interrupt-parent : the phandle for the interrupt controller that
|
- interrupt-parent : the phandle for the interrupt controller that
|
||||||
services interrupts for this device.
|
services interrupts for this device.
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
These properties are common to multiple MMC host controllers. Any host
|
||||||
|
that requires the respective functionality should implement them using
|
||||||
|
these definitions.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- bus-width: Number of data lines, can be <1>, <4>, or <8>
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- cd-gpios : Specify GPIOs for card detection, see gpio binding
|
||||||
|
- wp-gpios : Specify GPIOs for write protection, see gpio binding
|
||||||
|
- cd-inverted: when present, polarity on the wp gpio line is inverted
|
||||||
|
- wp-inverted: when present, polarity on the wp gpio line is inverted
|
||||||
|
- non-removable: non-removable slot (like eMMC)
|
||||||
|
- max-frequency: maximum operating clock frequency
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
sdhci@ab000000 {
|
||||||
|
compatible = "sdhci";
|
||||||
|
reg = <0xab000000 0x200>;
|
||||||
|
interrupts = <23>;
|
||||||
|
bus-width = <4>;
|
||||||
|
cd-gpios = <&gpio 69 0>;
|
||||||
|
cd-inverted;
|
||||||
|
wp-gpios = <&gpio 70 0>;
|
||||||
|
max-frequency = <50000000>;
|
||||||
|
}
|
|
@ -7,12 +7,12 @@ Required properties:
|
||||||
- compatible : Should be "nvidia,<chip>-sdhci"
|
- compatible : Should be "nvidia,<chip>-sdhci"
|
||||||
- reg : Should contain SD/MMC registers location and length
|
- reg : Should contain SD/MMC registers location and length
|
||||||
- interrupts : Should contain SD/MMC interrupt
|
- interrupts : Should contain SD/MMC interrupt
|
||||||
|
- bus-width : Number of data lines, can be <1>, <4>, or <8>
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- cd-gpios : Specify GPIOs for card detection
|
- cd-gpios : Specify GPIOs for card detection
|
||||||
- wp-gpios : Specify GPIOs for write protection
|
- wp-gpios : Specify GPIOs for write protection
|
||||||
- power-gpios : Specify GPIOs for power control
|
- power-gpios : Specify GPIOs for power control
|
||||||
- support-8bit : Boolean, indicates if 8-bit mode should be used.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -23,5 +23,5 @@ sdhci@c8000200 {
|
||||||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||||
power-gpios = <&gpio 155 0>; /* gpio PT3 */
|
power-gpios = <&gpio 155 0>; /* gpio PT3 */
|
||||||
support-8bit;
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,7 @@ Optional properties:
|
||||||
ti,dual-volt: boolean, supports dual voltage cards
|
ti,dual-volt: boolean, supports dual voltage cards
|
||||||
<supply-name>-supply: phandle to the regulator device tree node
|
<supply-name>-supply: phandle to the regulator device tree node
|
||||||
"supply-name" examples are "vmmc", "vmmc_aux" etc
|
"supply-name" examples are "vmmc", "vmmc_aux" etc
|
||||||
ti,bus-width: Number of data lines, default assumed is 1 if the property is missing.
|
bus-width: Number of data lines, default assumed is 1 if the property is missing.
|
||||||
cd-gpios: GPIOs for card detection
|
cd-gpios: GPIOs for card detection
|
||||||
wp-gpios: GPIOs for write protection
|
wp-gpios: GPIOs for write protection
|
||||||
ti,non-removable: non-removable slot (like eMMC)
|
ti,non-removable: non-removable slot (like eMMC)
|
||||||
|
@ -27,7 +27,7 @@ Example:
|
||||||
reg = <0x4809c000 0x400>;
|
reg = <0x4809c000 0x400>;
|
||||||
ti,hwmods = "mmc1";
|
ti,hwmods = "mmc1";
|
||||||
ti,dual-volt;
|
ti,dual-volt;
|
||||||
ti,bus-width = <4>;
|
bus-width = <4>;
|
||||||
vmmc-supply = <&vmmc>; /* phandle to regulator node */
|
vmmc-supply = <&vmmc>; /* phandle to regulator node */
|
||||||
ti,non-removable;
|
ti,non-removable;
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
esdhc@50008000 { /* ESDHC2 */
|
esdhc@50008000 { /* ESDHC2 */
|
||||||
fsl,card-wired;
|
non-removable;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
esdhc@50020000 { /* ESDHC3 */
|
esdhc@50020000 { /* ESDHC3 */
|
||||||
fsl,card-wired;
|
non-removable;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
usdhc@0219c000 { /* uSDHC4 */
|
usdhc@0219c000 { /* uSDHC4 */
|
||||||
fsl,card-wired;
|
non-removable;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc4_1>;
|
pinctrl-0 = <&pinctrl_usdhc4_1>;
|
||||||
|
|
|
@ -18,3 +18,52 @@
|
||||||
reg = <0x80000000 0x20000000>; /* 512 MB */
|
reg = <0x80000000 0x20000000>; /* 512 MB */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
clock-frequency = <2600000>;
|
||||||
|
|
||||||
|
twl: twl@48 {
|
||||||
|
reg = <0x48>;
|
||||||
|
interrupts = <7>; /* SYS_NIRQ cascaded to intc */
|
||||||
|
interrupt-parent = <&intc>;
|
||||||
|
|
||||||
|
vsim: regulator@10 {
|
||||||
|
compatible = "ti,twl4030-vsim";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/include/ "twl4030.dtsi"
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display monitor features are burnt in the EEPROM
|
||||||
|
* as EDID data.
|
||||||
|
*/
|
||||||
|
eeprom@50 {
|
||||||
|
compatible = "ti,eeprom";
|
||||||
|
reg = <0x50>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
vmmc-supply = <&vmmc1>;
|
||||||
|
vmmc_aux-supply = <&vsim>;
|
||||||
|
bus-width = <8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc3 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
|
@ -69,6 +69,60 @@
|
||||||
reg = <0x48200000 0x1000>;
|
reg = <0x48200000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gpio1: gpio@48310000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio1";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio2: gpio@49050000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio2";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio3: gpio@49052000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio3";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio4: gpio@49054000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio4";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio5: gpio@49056000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio5";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio6: gpio@49058000 {
|
||||||
|
compatible = "ti,omap3-gpio";
|
||||||
|
ti,hwmods = "gpio6";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
uart1: serial@4806a000 {
|
uart1: serial@4806a000 {
|
||||||
compatible = "ti,omap3-uart";
|
compatible = "ti,omap3-uart";
|
||||||
ti,hwmods = "uart1";
|
ti,hwmods = "uart1";
|
||||||
|
@ -113,5 +167,53 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "i2c3";
|
ti,hwmods = "i2c3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mcspi1: spi@48098000 {
|
||||||
|
compatible = "ti,omap2-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi1";
|
||||||
|
ti,spi-num-cs = <4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi2: spi@4809a000 {
|
||||||
|
compatible = "ti,omap2-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi2";
|
||||||
|
ti,spi-num-cs = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi3: spi@480b8000 {
|
||||||
|
compatible = "ti,omap2-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi3";
|
||||||
|
ti,spi-num-cs = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi4: spi@480ba000 {
|
||||||
|
compatible = "ti,omap2-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi4";
|
||||||
|
ti,spi-num-cs = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc1: mmc@4809c000 {
|
||||||
|
compatible = "ti,omap3-hsmmc";
|
||||||
|
ti,hwmods = "mmc1";
|
||||||
|
ti,dual-volt;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc2: mmc@480b4000 {
|
||||||
|
compatible = "ti,omap3-hsmmc";
|
||||||
|
ti,hwmods = "mmc2";
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc3: mmc@480ad000 {
|
||||||
|
compatible = "ti,omap3-hsmmc";
|
||||||
|
ti,hwmods = "mmc3";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,3 +18,59 @@
|
||||||
reg = <0x80000000 0x40000000>; /* 1 GB */
|
reg = <0x80000000 0x40000000>; /* 1 GB */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
twl: twl@48 {
|
||||||
|
reg = <0x48>;
|
||||||
|
/* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
|
||||||
|
interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/include/ "twl6030.dtsi"
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display monitor features are burnt in their EEPROM as EDID data.
|
||||||
|
* The EEPROM is connected as I2C slave device.
|
||||||
|
*/
|
||||||
|
eeprom@50 {
|
||||||
|
compatible = "ti,eeprom";
|
||||||
|
reg = <0x50>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c4 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
vmmc-supply = <&vmmc>;
|
||||||
|
bus-width = <8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc3 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc4 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc5 {
|
||||||
|
ti,non-removable;
|
||||||
|
bus-width = <4>;
|
||||||
|
};
|
||||||
|
|
|
@ -17,4 +17,101 @@
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x40000000>; /* 1 GB */
|
reg = <0x80000000 0x40000000>; /* 1 GB */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vdd_eth: fixedregulator@0 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "VDD_ETH";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
gpio = <&gpio2 16 0>; /* gpio line 48 */
|
||||||
|
enable-active-high;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
twl: twl@48 {
|
||||||
|
reg = <0x48>;
|
||||||
|
/* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
|
||||||
|
interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/include/ "twl6030.dtsi"
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Temperature Sensor
|
||||||
|
* http://www.ti.com/lit/ds/symlink/tmp105.pdf
|
||||||
|
*/
|
||||||
|
tmp105@48 {
|
||||||
|
compatible = "ti,tmp105";
|
||||||
|
reg = <0x48>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ambient Light Sensor
|
||||||
|
* http://www.rohm.com/products/databook/sensor/pdf/bh1780gli-e.pdf
|
||||||
|
*/
|
||||||
|
bh1780@29 {
|
||||||
|
compatible = "rohm,bh1780";
|
||||||
|
reg = <0x29>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c4 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 3-Axis Digital Compass
|
||||||
|
* http://www.sparkfun.com/datasheets/Sensors/Magneto/HMC5843.pdf
|
||||||
|
*/
|
||||||
|
hmc5843@1e {
|
||||||
|
compatible = "honeywell,hmc5843";
|
||||||
|
reg = <0x1e>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mcspi1 {
|
||||||
|
eth@0 {
|
||||||
|
compatible = "ks8851";
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
reg = <0>;
|
||||||
|
interrupt-parent = <&gpio2>;
|
||||||
|
interrupts = <2>; /* gpio line 34 */
|
||||||
|
vdd-supply = <&vdd_eth>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
vmmc-supply = <&vmmc>;
|
||||||
|
bus-width = <8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
vmmc-supply = <&vaux1>;
|
||||||
|
bus-width = <8>;
|
||||||
|
ti,non-removable;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc3 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc4 {
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc5 {
|
||||||
|
bus-width = <4>;
|
||||||
|
ti,non-removable;
|
||||||
};
|
};
|
||||||
|
|
|
@ -104,6 +104,60 @@
|
||||||
<0x48240100 0x0100>;
|
<0x48240100 0x0100>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gpio1: gpio@4a310000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio1";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio2: gpio@48055000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio2";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio3: gpio@48057000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio3";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio4: gpio@48059000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio4";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio5: gpio@4805b000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio5";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio6: gpio@4805d000 {
|
||||||
|
compatible = "ti,omap4-gpio";
|
||||||
|
ti,hwmods = "gpio6";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
uart1: serial@4806a000 {
|
uart1: serial@4806a000 {
|
||||||
compatible = "ti,omap4-uart";
|
compatible = "ti,omap4-uart";
|
||||||
ti,hwmods = "uart1";
|
ti,hwmods = "uart1";
|
||||||
|
@ -155,5 +209,68 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
ti,hwmods = "i2c4";
|
ti,hwmods = "i2c4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mcspi1: spi@48098000 {
|
||||||
|
compatible = "ti,omap4-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi1";
|
||||||
|
ti,spi-num-cs = <4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi2: spi@4809a000 {
|
||||||
|
compatible = "ti,omap4-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi2";
|
||||||
|
ti,spi-num-cs = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi3: spi@480b8000 {
|
||||||
|
compatible = "ti,omap4-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi3";
|
||||||
|
ti,spi-num-cs = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcspi4: spi@480ba000 {
|
||||||
|
compatible = "ti,omap4-mcspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
ti,hwmods = "mcspi4";
|
||||||
|
ti,spi-num-cs = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc1: mmc@4809c000 {
|
||||||
|
compatible = "ti,omap4-hsmmc";
|
||||||
|
ti,hwmods = "mmc1";
|
||||||
|
ti,dual-volt;
|
||||||
|
ti,needs-special-reset;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc2: mmc@480b4000 {
|
||||||
|
compatible = "ti,omap4-hsmmc";
|
||||||
|
ti,hwmods = "mmc2";
|
||||||
|
ti,needs-special-reset;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc3: mmc@480ad000 {
|
||||||
|
compatible = "ti,omap4-hsmmc";
|
||||||
|
ti,hwmods = "mmc3";
|
||||||
|
ti,needs-special-reset;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc4: mmc@480d1000 {
|
||||||
|
compatible = "ti,omap4-hsmmc";
|
||||||
|
ti,hwmods = "mmc4";
|
||||||
|
ti,needs-special-reset;
|
||||||
|
};
|
||||||
|
|
||||||
|
mmc5: mmc@480d5000 {
|
||||||
|
compatible = "ti,omap4-hsmmc";
|
||||||
|
ti,hwmods = "mmc5";
|
||||||
|
ti,needs-special-reset;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -139,11 +139,13 @@
|
||||||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||||
wp-gpios = <&gpio 155 0>; /* gpio PT3 */
|
wp-gpios = <&gpio 155 0>; /* gpio PT3 */
|
||||||
power-gpios = <&gpio 31 0>; /* gpio PD7 */
|
power-gpios = <&gpio 31 0>; /* gpio PD7 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@78000600 {
|
sdhci@78000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
support-8bit;
|
support-8bit;
|
||||||
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
|
|
|
@ -299,6 +299,7 @@
|
||||||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||||
power-gpios = <&gpio 155 0>; /* gpio PT3 */
|
power-gpios = <&gpio 155 0>; /* gpio PT3 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@c8000600 {
|
sdhci@c8000600 {
|
||||||
|
@ -307,6 +308,7 @@
|
||||||
wp-gpios = <&gpio 59 0>; /* gpio PH3 */
|
wp-gpios = <&gpio 59 0>; /* gpio PH3 */
|
||||||
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
||||||
support-8bit;
|
support-8bit;
|
||||||
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
|
|
|
@ -296,11 +296,13 @@
|
||||||
cd-gpios = <&gpio 173 0>; /* gpio PV5 */
|
cd-gpios = <&gpio 173 0>; /* gpio PV5 */
|
||||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||||
power-gpios = <&gpio 169 0>; /* gpio PV1 */
|
power-gpios = <&gpio 169 0>; /* gpio PV1 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@c8000600 {
|
sdhci@c8000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
support-8bit;
|
support-8bit;
|
||||||
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio-keys {
|
gpio-keys {
|
||||||
|
|
|
@ -392,11 +392,13 @@
|
||||||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||||
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@c8000600 {
|
sdhci@c8000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
support-8bit;
|
support-8bit;
|
||||||
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio-keys {
|
gpio-keys {
|
||||||
|
|
|
@ -288,12 +288,14 @@
|
||||||
|
|
||||||
sdhci@c8000000 {
|
sdhci@c8000000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@c8000600 {
|
sdhci@c8000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
cd-gpios = <&gpio 121 0>; /* gpio PP1 */
|
cd-gpios = <&gpio 121 0>; /* gpio PP1 */
|
||||||
wp-gpios = <&gpio 122 0>; /* gpio PP2 */
|
wp-gpios = <&gpio 122 0>; /* gpio PP2 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
|
|
|
@ -309,11 +309,13 @@
|
||||||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||||
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
power-gpios = <&gpio 70 0>; /* gpio PI6 */
|
||||||
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci@c8000600 {
|
sdhci@c8000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
support-8bit;
|
support-8bit;
|
||||||
|
bus-width = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Integrated Power Management Chip
|
||||||
|
*/
|
||||||
|
&twl {
|
||||||
|
compatible = "ti,twl4030";
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
|
||||||
|
rtc {
|
||||||
|
compatible = "ti,twl4030-rtc";
|
||||||
|
interrupts = <11>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vdac: regulator@0 {
|
||||||
|
compatible = "ti,twl4030-vdac";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vpll2: regulator@1 {
|
||||||
|
compatible = "ti,twl4030-vpll2";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vmmc1: regulator@2 {
|
||||||
|
compatible = "ti,twl4030-vmmc1";
|
||||||
|
regulator-min-microvolt = <1850000>;
|
||||||
|
regulator-max-microvolt = <3150000>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,86 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Integrated Power Management Chip
|
||||||
|
* http://www.ti.com/lit/ds/symlink/twl6030.pdf
|
||||||
|
*/
|
||||||
|
&twl {
|
||||||
|
compatible = "ti,twl6030";
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
|
||||||
|
rtc {
|
||||||
|
compatible = "ti,twl4030-rtc";
|
||||||
|
interrupts = <11>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vaux1: regulator@0 {
|
||||||
|
compatible = "ti,twl6030-vaux1";
|
||||||
|
regulator-min-microvolt = <1000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vaux2: regulator@1 {
|
||||||
|
compatible = "ti,twl6030-vaux2";
|
||||||
|
regulator-min-microvolt = <1200000>;
|
||||||
|
regulator-max-microvolt = <2800000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vaux3: regulator@2 {
|
||||||
|
compatible = "ti,twl6030-vaux3";
|
||||||
|
regulator-min-microvolt = <1000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vmmc: regulator@3 {
|
||||||
|
compatible = "ti,twl6030-vmmc";
|
||||||
|
regulator-min-microvolt = <1200000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vpp: regulator@4 {
|
||||||
|
compatible = "ti,twl6030-vpp";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <2500000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vusim: regulator@5 {
|
||||||
|
compatible = "ti,twl6030-vusim";
|
||||||
|
regulator-min-microvolt = <1200000>;
|
||||||
|
regulator-max-microvolt = <2900000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vdac: regulator@6 {
|
||||||
|
compatible = "ti,twl6030-vdac";
|
||||||
|
};
|
||||||
|
|
||||||
|
vana: regulator@7 {
|
||||||
|
compatible = "ti,twl6030-vana";
|
||||||
|
};
|
||||||
|
|
||||||
|
vcxio: regulator@8 {
|
||||||
|
compatible = "ti,twl6030-vcxio";
|
||||||
|
};
|
||||||
|
|
||||||
|
vusb: regulator@9 {
|
||||||
|
compatible = "ti,twl6030-vusb";
|
||||||
|
};
|
||||||
|
|
||||||
|
v1v8: regulator@10 {
|
||||||
|
compatible = "ti,twl6030-v1v8";
|
||||||
|
};
|
||||||
|
|
||||||
|
v2v1: regulator@11 {
|
||||||
|
compatible = "ti,twl6030-v2v1";
|
||||||
|
};
|
||||||
|
|
||||||
|
clk32kg: regulator@12 {
|
||||||
|
compatible = "ti,twl6030-clk32kg";
|
||||||
|
};
|
||||||
|
};
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/irqdomain.h>
|
#include <linux/irqdomain.h>
|
||||||
#include <linux/i2c/twl.h>
|
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/hardware/gic.h>
|
#include <asm/hardware/gic.h>
|
||||||
|
@ -95,22 +94,6 @@ MACHINE_END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP3
|
#ifdef CONFIG_ARCH_OMAP3
|
||||||
static struct twl4030_platform_data beagle_twldata = {
|
|
||||||
.irq_base = TWL4030_IRQ_BASE,
|
|
||||||
.irq_end = TWL4030_IRQ_END,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init omap3_i2c_init(void)
|
|
||||||
{
|
|
||||||
omap3_pmic_init("twl4030", &beagle_twldata);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init omap3_init(void)
|
|
||||||
{
|
|
||||||
omap3_i2c_init();
|
|
||||||
omap_generic_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *omap3_boards_compat[] __initdata = {
|
static const char *omap3_boards_compat[] __initdata = {
|
||||||
"ti,omap3",
|
"ti,omap3",
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -122,7 +105,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
|
||||||
.init_early = omap3430_init_early,
|
.init_early = omap3430_init_early,
|
||||||
.init_irq = omap_init_irq,
|
.init_irq = omap_init_irq,
|
||||||
.handle_irq = omap3_intc_handle_irq,
|
.handle_irq = omap3_intc_handle_irq,
|
||||||
.init_machine = omap3_init,
|
.init_machine = omap_generic_init,
|
||||||
.timer = &omap3_timer,
|
.timer = &omap3_timer,
|
||||||
.dt_compat = omap3_boards_compat,
|
.dt_compat = omap3_boards_compat,
|
||||||
.restart = omap_prcm_restart,
|
.restart = omap_prcm_restart,
|
||||||
|
@ -130,22 +113,6 @@ MACHINE_END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP4
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
static struct twl4030_platform_data sdp4430_twldata = {
|
|
||||||
.irq_base = TWL6030_IRQ_BASE,
|
|
||||||
.irq_end = TWL6030_IRQ_END,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init omap4_i2c_init(void)
|
|
||||||
{
|
|
||||||
omap4_pmic_init("twl6030", &sdp4430_twldata, NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init omap4_init(void)
|
|
||||||
{
|
|
||||||
omap4_i2c_init();
|
|
||||||
omap_generic_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *omap4_boards_compat[] __initdata = {
|
static const char *omap4_boards_compat[] __initdata = {
|
||||||
"ti,omap4",
|
"ti,omap4",
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -157,7 +124,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
|
||||||
.init_early = omap4430_init_early,
|
.init_early = omap4430_init_early,
|
||||||
.init_irq = omap_init_irq,
|
.init_irq = omap_init_irq,
|
||||||
.handle_irq = gic_handle_irq,
|
.handle_irq = gic_handle_irq,
|
||||||
.init_machine = omap4_init,
|
.init_machine = omap_generic_init,
|
||||||
.timer = &omap4_timer,
|
.timer = &omap4_timer,
|
||||||
.dt_compat = omap4_boards_compat,
|
.dt_compat = omap4_boards_compat,
|
||||||
.restart = omap_prcm_restart,
|
.restart = omap_prcm_restart,
|
||||||
|
|
|
@ -705,7 +705,9 @@ static int __init omap2_init_devices(void)
|
||||||
omap_init_dmic();
|
omap_init_dmic();
|
||||||
omap_init_camera();
|
omap_init_camera();
|
||||||
omap_init_mbox();
|
omap_init_mbox();
|
||||||
omap_init_mcspi();
|
/* If dtb is there, the devices will be created dynamically */
|
||||||
|
if (!of_have_populated_dt())
|
||||||
|
omap_init_mcspi();
|
||||||
omap_init_pmu();
|
omap_init_pmu();
|
||||||
omap_hdq_init();
|
omap_hdq_init();
|
||||||
omap_init_sti();
|
omap_init_sti();
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
|
||||||
#include <plat/omap_hwmod.h>
|
#include <plat/omap_hwmod.h>
|
||||||
#include <plat/omap_device.h>
|
#include <plat/omap_device.h>
|
||||||
|
@ -146,7 +147,10 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
|
||||||
*/
|
*/
|
||||||
static int __init omap2_gpio_init(void)
|
static int __init omap2_gpio_init(void)
|
||||||
{
|
{
|
||||||
return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init,
|
/* If dtb is there, the devices will be created dynamically */
|
||||||
NULL);
|
if (of_have_populated_dt())
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init, NULL);
|
||||||
}
|
}
|
||||||
postcore_initcall(omap2_gpio_init);
|
postcore_initcall(omap2_gpio_init);
|
||||||
|
|
|
@ -119,6 +119,7 @@
|
||||||
sdhc@2e000 {
|
sdhc@2e000 {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
sdhci,1-bit-only;
|
sdhci,1-bit-only;
|
||||||
|
bus-width = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
par_io@e0100 {
|
par_io@e0100 {
|
||||||
|
|
|
@ -1766,7 +1766,7 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
|
||||||
pdata->slots[0].nonremovable = true;
|
pdata->slots[0].nonremovable = true;
|
||||||
pdata->slots[0].no_regulator_off_init = true;
|
pdata->slots[0].no_regulator_off_init = true;
|
||||||
}
|
}
|
||||||
of_property_read_u32(np, "ti,bus-width", &bus_width);
|
of_property_read_u32(np, "bus-width", &bus_width);
|
||||||
if (bus_width == 4)
|
if (bus_width == 4)
|
||||||
pdata->slots[0].caps |= MMC_CAP_4_BIT_DATA;
|
pdata->slots[0].caps |= MMC_CAP_4_BIT_DATA;
|
||||||
else if (bus_width == 8)
|
else if (bus_width == 8)
|
||||||
|
|
|
@ -407,7 +407,7 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
|
||||||
if (!np)
|
if (!np)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
if (of_get_property(np, "fsl,card-wired", NULL))
|
if (of_get_property(np, "non-removable", NULL))
|
||||||
boarddata->cd_type = ESDHC_CD_PERMANENT;
|
boarddata->cd_type = ESDHC_CD_PERMANENT;
|
||||||
|
|
||||||
if (of_get_property(np, "fsl,cd-controller", NULL))
|
if (of_get_property(np, "fsl,cd-controller", NULL))
|
||||||
|
|
|
@ -42,7 +42,8 @@ static struct sdhci_ops sdhci_pltfm_ops = {
|
||||||
#ifdef CONFIG_OF
|
#ifdef CONFIG_OF
|
||||||
static bool sdhci_of_wp_inverted(struct device_node *np)
|
static bool sdhci_of_wp_inverted(struct device_node *np)
|
||||||
{
|
{
|
||||||
if (of_get_property(np, "sdhci,wp-inverted", NULL))
|
if (of_get_property(np, "sdhci,wp-inverted", NULL) ||
|
||||||
|
of_get_property(np, "wp-inverted", NULL))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/* Old device trees don't have the wp-inverted property. */
|
/* Old device trees don't have the wp-inverted property. */
|
||||||
|
@ -59,13 +60,16 @@ void sdhci_get_of_property(struct platform_device *pdev)
|
||||||
struct sdhci_host *host = platform_get_drvdata(pdev);
|
struct sdhci_host *host = platform_get_drvdata(pdev);
|
||||||
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
||||||
const __be32 *clk;
|
const __be32 *clk;
|
||||||
|
u32 bus_width;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
if (of_device_is_available(np)) {
|
if (of_device_is_available(np)) {
|
||||||
if (of_get_property(np, "sdhci,auto-cmd12", NULL))
|
if (of_get_property(np, "sdhci,auto-cmd12", NULL))
|
||||||
host->quirks |= SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12;
|
host->quirks |= SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12;
|
||||||
|
|
||||||
if (of_get_property(np, "sdhci,1-bit-only", NULL))
|
if (of_get_property(np, "sdhci,1-bit-only", NULL) ||
|
||||||
|
(of_property_read_u32(np, "bus-width", &bus_width) == 0 &&
|
||||||
|
bus_width == 1))
|
||||||
host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
|
host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
|
||||||
|
|
||||||
if (sdhci_of_wp_inverted(np))
|
if (sdhci_of_wp_inverted(np))
|
||||||
|
|
Загрузка…
Ссылка в новой задаче