mirror of https://gitee.com/openkylin/linux.git
Merge branch 'next/dt-samsung-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt
From Kukjin Kim: Here is second Samsung DT stuff for v3.8. This is including power domain DT support for exynos and Google ARM Chromebook, Snow board and exynos4210-origen updates. * 'next/dt-samsung-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: ARM: dts: Use drive strength 3 for SD pins for exynos4 ARM: dts: Set up power domains for exynos4 ARM: EXYNOS: Bind devices to power domains using DT ARM: EXYNOS: Fix power domain name initialization ARM: EXYNOS: Detect power domain state on registration from DT ARM: dts: Add vmmc fixed voltage regulator for exynos4210-origen ARM: dts: Update sdhci nodes for current bindings for exynos4210-origen ARM: dts: Update for pinctrl-samsung driver for exynos4210-origen ARM: dts: Split memory sections for exynos4210-origen ARM: EXYNOS: add all i2c busses to auxdata for DT ARM: dts: Add aliases for i2c controller for exynos4 ARM: dts: Add board dts file for Snow board (ARM Chromebook) ARM: dts: Move the dwmmc aliases from smdk5250 dts to exynos Add/add conflicts resolved in arch/arm/boot/dts/exynos5250-smdk5250.dts and arch/arm/mach-exynos/mach-exynos5-dt.c. Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
d408c5dcc5
|
@ -4,14 +4,13 @@ Exynos processors include support for multiple power domains which are used
|
|||
to gate power to one or more peripherals on the processor.
|
||||
|
||||
Required Properties:
|
||||
- compatiable: should be one of the following.
|
||||
- compatible: should be one of the following.
|
||||
* samsung,exynos4210-pd - for exynos4210 type power domain.
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
|
||||
Optional Properties:
|
||||
- samsung,exynos4210-pd-off: Specifies that the power domain is in turned-off
|
||||
state during boot and remains to be turned-off until explicitly turned-on.
|
||||
Node of a device using power domains must have a samsung,power-domain property
|
||||
defined with a phandle to respective power domain.
|
||||
|
||||
Example:
|
||||
|
||||
|
@ -19,3 +18,11 @@ Example:
|
|||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C00 0x10>;
|
||||
};
|
||||
|
||||
Example of the node using power domain:
|
||||
|
||||
node {
|
||||
/* ... */
|
||||
samsung,power-domain = <&lcd0>;
|
||||
/* ... */
|
||||
};
|
||||
|
|
|
@ -26,7 +26,8 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
|
|||
exynos4210-smdkv310.dtb \
|
||||
exynos4210-trats.dtb \
|
||||
exynos4412-smdk4412.dtb \
|
||||
exynos5250-smdk5250.dtb
|
||||
exynos5250-smdk5250.dtb \
|
||||
exynos5250-snow.dtb
|
||||
dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
|
||||
dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
|
||||
integratorcp.dtb
|
||||
|
|
|
@ -0,0 +1,184 @@
|
|||
/*
|
||||
* Common device tree include for all Exynos 5250 boards based off of Daisy.
|
||||
*
|
||||
* Copyright (c) 2012 Google, Inc
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x80000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
};
|
||||
|
||||
i2c@12C60000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
gpios = <&gpb3 0 2 3 0>,
|
||||
<&gpb3 1 2 3 0>;
|
||||
};
|
||||
|
||||
i2c@12C70000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
gpios = <&gpb3 2 2 3 0>,
|
||||
<&gpb3 3 2 3 0>;
|
||||
};
|
||||
|
||||
i2c@12C80000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
|
||||
/*
|
||||
* Disabled pullups since external part has its own pullups and
|
||||
* double-pulling gets us out of spec in some cases.
|
||||
*/
|
||||
gpios = <&gpa0 6 3 0 0>,
|
||||
<&gpa0 7 3 0 0>;
|
||||
|
||||
hdmiddc@50 {
|
||||
compatible = "samsung,exynos5-hdmiddc";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@12C90000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
gpios = <&gpa1 2 3 3 0>,
|
||||
<&gpa1 3 3 3 0>;
|
||||
};
|
||||
|
||||
i2c@12CA0000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@12CB0000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
gpios = <&gpa2 2 3 3 0>,
|
||||
<&gpa2 3 3 3 0>;
|
||||
};
|
||||
|
||||
i2c@12CC0000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@12CD0000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
gpios = <&gpb2 2 3 3 0>,
|
||||
<&gpb2 3 3 3 0>;
|
||||
};
|
||||
|
||||
i2c@12CE0000 {
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
|
||||
hdmiphy@38 {
|
||||
compatible = "samsung,exynos5-hdmiphy";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
||||
|
||||
dwmmc0@12200000 {
|
||||
num-slots = <1>;
|
||||
supports-highspeed;
|
||||
broken-cd;
|
||||
fifo-depth = <0x80>;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2 3>;
|
||||
|
||||
slot@0 {
|
||||
reg = <0>;
|
||||
bus-width = <8>;
|
||||
gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
|
||||
<&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
|
||||
<&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
|
||||
<&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
|
||||
<&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
|
||||
};
|
||||
};
|
||||
|
||||
dwmmc1@12210000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dwmmc2@12220000 {
|
||||
num-slots = <1>;
|
||||
supports-highspeed;
|
||||
fifo-depth = <0x80>;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2 3>;
|
||||
|
||||
slot@0 {
|
||||
reg = <0>;
|
||||
bus-width = <4>;
|
||||
samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>;
|
||||
wp-gpios = <&gpc2 1 0 0 3>;
|
||||
gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
|
||||
<&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
|
||||
<&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>;
|
||||
};
|
||||
};
|
||||
|
||||
dwmmc3@12230000 {
|
||||
num-slots = <1>;
|
||||
supports-highspeed;
|
||||
broken-cd;
|
||||
fifo-depth = <0x80>;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2 3>;
|
||||
|
||||
slot@0 {
|
||||
reg = <0>;
|
||||
bus-width = <4>;
|
||||
/* See board-specific dts files for GPIOs */
|
||||
};
|
||||
};
|
||||
|
||||
spi_0: spi@12d20000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi_1: spi@12d30000 {
|
||||
gpios = <&gpa2 4 2 3 0>,
|
||||
<&gpa2 6 2 3 0>,
|
||||
<&gpa2 7 2 3 0>;
|
||||
samsung,spi-src-clk = <0>;
|
||||
num-cs = <1>;
|
||||
};
|
||||
|
||||
spi_2: spi@12d40000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
hdmi {
|
||||
hpd-gpio = <&gpx3 7 0xf 1 3>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
power {
|
||||
label = "Power";
|
||||
gpios = <&gpx1 3 0 0x10000 0>;
|
||||
linux,code = <116>; /* KEY_POWER */
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -28,6 +28,44 @@ aliases {
|
|||
spi0 = &spi_0;
|
||||
spi1 = &spi_1;
|
||||
spi2 = &spi_2;
|
||||
i2c0 = &i2c_0;
|
||||
i2c1 = &i2c_1;
|
||||
i2c2 = &i2c_2;
|
||||
i2c3 = &i2c_3;
|
||||
i2c4 = &i2c_4;
|
||||
i2c5 = &i2c_5;
|
||||
i2c6 = &i2c_6;
|
||||
i2c7 = &i2c_7;
|
||||
};
|
||||
|
||||
pd_mfc: mfc-power-domain@10023C40 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C40 0x20>;
|
||||
};
|
||||
|
||||
pd_g3d: g3d-power-domain@10023C60 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C60 0x20>;
|
||||
};
|
||||
|
||||
pd_lcd0: lcd0-power-domain@10023C80 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C80 0x20>;
|
||||
};
|
||||
|
||||
pd_tv: tv-power-domain@10023C20 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C20 0x20>;
|
||||
};
|
||||
|
||||
pd_cam: cam-power-domain@10023C00 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023C00 0x20>;
|
||||
};
|
||||
|
||||
pd_gps: gps-power-domain@10023CE0 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023CE0 0x20>;
|
||||
};
|
||||
|
||||
gic:interrupt-controller@10490000 {
|
||||
|
@ -121,7 +159,7 @@ serial@13830000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@13860000 {
|
||||
i2c_0: i2c@13860000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -130,7 +168,7 @@ i2c@13860000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@13870000 {
|
||||
i2c_1: i2c@13870000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -139,7 +177,7 @@ i2c@13870000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@13880000 {
|
||||
i2c_2: i2c@13880000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -148,7 +186,7 @@ i2c@13880000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@13890000 {
|
||||
i2c_3: i2c@13890000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -157,7 +195,7 @@ i2c@13890000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@138A0000 {
|
||||
i2c_4: i2c@138A0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -166,7 +204,7 @@ i2c@138A0000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@138B0000 {
|
||||
i2c_5: i2c@138B0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -175,7 +213,7 @@ i2c@138B0000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@138C0000 {
|
||||
i2c_6: i2c@138C0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
@ -184,7 +222,7 @@ i2c@138C0000 {
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@138D0000 {
|
||||
i2c_7: i2c@138D0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
|
|
|
@ -22,38 +22,38 @@ / {
|
|||
compatible = "insignal,origen", "samsung,exynos4210";
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x40000000>;
|
||||
reg = <0x40000000 0x10000000
|
||||
0x50000000 0x10000000
|
||||
0x60000000 0x10000000
|
||||
0x70000000 0x10000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
|
||||
};
|
||||
|
||||
mmc_reg: voltage-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VMEM_VDD_2.8V";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
gpio = <&gpx1 1 0>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
sdhci@12530000 {
|
||||
samsung,sdhci-bus-width = <4>;
|
||||
linux,mmc_cap_4_bit_data;
|
||||
samsung,sdhci-cd-internal;
|
||||
gpio-cd = <&gpk2 2 2 3 3>;
|
||||
gpios = <&gpk2 0 2 0 3>,
|
||||
<&gpk2 1 2 0 3>,
|
||||
<&gpk2 3 2 3 3>,
|
||||
<&gpk2 4 2 3 3>,
|
||||
<&gpk2 5 2 3 3>,
|
||||
<&gpk2 6 2 3 3>;
|
||||
bus-width = <4>;
|
||||
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
|
||||
pinctrl-names = "default";
|
||||
vmmc-supply = <&mmc_reg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@12510000 {
|
||||
samsung,sdhci-bus-width = <4>;
|
||||
linux,mmc_cap_4_bit_data;
|
||||
samsung,sdhci-cd-internal;
|
||||
gpio-cd = <&gpk0 2 2 3 3>;
|
||||
gpios = <&gpk0 0 2 0 3>,
|
||||
<&gpk0 1 2 0 3>,
|
||||
<&gpk0 3 2 3 3>,
|
||||
<&gpk0 4 2 3 3>,
|
||||
<&gpk0 5 2 3 3>,
|
||||
<&gpk0 6 2 3 3>;
|
||||
bus-width = <4>;
|
||||
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_cd>;
|
||||
pinctrl-names = "default";
|
||||
vmmc-supply = <&mmc_reg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -80,35 +80,35 @@ gpio_keys {
|
|||
|
||||
up {
|
||||
label = "Up";
|
||||
gpios = <&gpx2 0 0 0x10000 2>;
|
||||
gpios = <&gpx2 0 1>;
|
||||
linux,code = <103>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
down {
|
||||
label = "Down";
|
||||
gpios = <&gpx2 1 0 0x10000 2>;
|
||||
gpios = <&gpx2 1 1>;
|
||||
linux,code = <108>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
back {
|
||||
label = "Back";
|
||||
gpios = <&gpx1 7 0 0x10000 2>;
|
||||
gpios = <&gpx1 7 1>;
|
||||
linux,code = <158>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
home {
|
||||
label = "Home";
|
||||
gpios = <&gpx1 6 0 0x10000 2>;
|
||||
gpios = <&gpx1 6 1>;
|
||||
linux,code = <102>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
menu {
|
||||
label = "Menu";
|
||||
gpios = <&gpx1 5 0 0x10000 2>;
|
||||
gpios = <&gpx1 5 1>;
|
||||
linux,code = <139>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
@ -117,7 +117,7 @@ menu {
|
|||
leds {
|
||||
compatible = "gpio-leds";
|
||||
status {
|
||||
gpios = <&gpx1 3 0 0x10000 2>;
|
||||
gpios = <&gpx1 3 1>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -482,196 +482,196 @@ sd0_clk: sd0-clk {
|
|||
samsung,pins = "gpk0-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_cmd: sd0-cmd {
|
||||
samsung,pins = "gpk0-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_cd: sd0-cd {
|
||||
samsung,pins = "gpk0-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus1: sd0-bus-width1 {
|
||||
samsung,pins = "gpk0-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus4: sd0-bus-width4 {
|
||||
samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus8: sd0-bus-width8 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_clk: sd4-clk {
|
||||
samsung,pins = "gpk0-0";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_cmd: sd4-cmd {
|
||||
samsung,pins = "gpk0-1";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_cd: sd4-cd {
|
||||
samsung,pins = "gpk0-2";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus1: sd4-bus-width1 {
|
||||
samsung,pins = "gpk0-3";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus4: sd4-bus-width4 {
|
||||
samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus8: sd4-bus-width8 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <4>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_clk: sd1-clk {
|
||||
samsung,pins = "gpk1-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_cmd: sd1-cmd {
|
||||
samsung,pins = "gpk1-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_cd: sd1-cd {
|
||||
samsung,pins = "gpk1-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_bus1: sd1-bus-width1 {
|
||||
samsung,pins = "gpk1-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_bus4: sd1-bus-width4 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_clk: sd2-clk {
|
||||
samsung,pins = "gpk2-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_cmd: sd2-cmd {
|
||||
samsung,pins = "gpk2-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_cd: sd2-cd {
|
||||
samsung,pins = "gpk2-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus1: sd2-bus-width1 {
|
||||
samsung,pins = "gpk2-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus4: sd2-bus-width4 {
|
||||
samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus8: sd2-bus-width8 {
|
||||
samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_clk: sd3-clk {
|
||||
samsung,pins = "gpk3-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_cmd: sd3-cmd {
|
||||
samsung,pins = "gpk3-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_cd: sd3-cd {
|
||||
samsung,pins = "gpk3-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_bus1: sd3-bus-width1 {
|
||||
samsung,pins = "gpk3-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_bus4: sd3-bus-width4 {
|
||||
samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
eint0: ext-int0 {
|
||||
|
|
|
@ -31,6 +31,11 @@ aliases {
|
|||
pinctrl2 = &pinctrl_2;
|
||||
};
|
||||
|
||||
pd_lcd1: lcd1-power-domain@10023CA0 {
|
||||
compatible = "samsung,exynos4210-pd";
|
||||
reg = <0x10023CA0 0x20>;
|
||||
};
|
||||
|
||||
gic:interrupt-controller@10490000 {
|
||||
cpu-offset = <0x8000>;
|
||||
};
|
||||
|
|
|
@ -586,196 +586,196 @@ sd0_clk: sd0-clk {
|
|||
samsung,pins = "gpk0-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_cmd: sd0-cmd {
|
||||
samsung,pins = "gpk0-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_cd: sd0-cd {
|
||||
samsung,pins = "gpk0-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus1: sd0-bus-width1 {
|
||||
samsung,pins = "gpk0-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus4: sd0-bus-width4 {
|
||||
samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd0_bus8: sd0-bus-width8 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_clk: sd4-clk {
|
||||
samsung,pins = "gpk0-0";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_cmd: sd4-cmd {
|
||||
samsung,pins = "gpk0-1";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_cd: sd4-cd {
|
||||
samsung,pins = "gpk0-2";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus1: sd4-bus-width1 {
|
||||
samsung,pins = "gpk0-3";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus4: sd4-bus-width4 {
|
||||
samsung,pins = "gpk0-3", "gpk0-4", "gpk0-5", "gpk0-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd4_bus8: sd4-bus-width8 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <4>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_clk: sd1-clk {
|
||||
samsung,pins = "gpk1-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_cmd: sd1-cmd {
|
||||
samsung,pins = "gpk1-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_cd: sd1-cd {
|
||||
samsung,pins = "gpk1-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_bus1: sd1-bus-width1 {
|
||||
samsung,pins = "gpk1-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd1_bus4: sd1-bus-width4 {
|
||||
samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_clk: sd2-clk {
|
||||
samsung,pins = "gpk2-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_cmd: sd2-cmd {
|
||||
samsung,pins = "gpk2-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_cd: sd2-cd {
|
||||
samsung,pins = "gpk2-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus1: sd2-bus-width1 {
|
||||
samsung,pins = "gpk2-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus4: sd2-bus-width4 {
|
||||
samsung,pins = "gpk2-3", "gpk2-4", "gpk2-5", "gpk2-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd2_bus8: sd2-bus-width8 {
|
||||
samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
|
||||
samsung,pin-function = <3>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_clk: sd3-clk {
|
||||
samsung,pins = "gpk3-0";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_cmd: sd3-cmd {
|
||||
samsung,pins = "gpk3-1";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_cd: sd3-cd {
|
||||
samsung,pins = "gpk3-2";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_bus1: sd3-bus-width1 {
|
||||
samsung,pins = "gpk3-3";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
sd3_bus4: sd3-bus-width4 {
|
||||
samsung,pins = "gpk3-3", "gpk3-4", "gpk3-5", "gpk3-6";
|
||||
samsung,pin-function = <2>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-drv = <3>;
|
||||
};
|
||||
|
||||
keypad_col0: keypad-col0 {
|
||||
|
|
|
@ -17,10 +17,6 @@ / {
|
|||
compatible = "samsung,smdk5250", "samsung,exynos5250";
|
||||
|
||||
aliases {
|
||||
mshc0 = &dwmmc_0;
|
||||
mshc1 = &dwmmc_1;
|
||||
mshc2 = &dwmmc_2;
|
||||
mshc3 = &dwmmc_3;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -112,7 +108,7 @@ hdmiphy@38 {
|
|||
};
|
||||
};
|
||||
|
||||
dwmmc_0: dwmmc0@12200000 {
|
||||
dwmmc0@12200000 {
|
||||
num-slots = <1>;
|
||||
supports-highspeed;
|
||||
broken-cd;
|
||||
|
@ -133,11 +129,11 @@ slot@0 {
|
|||
};
|
||||
};
|
||||
|
||||
dwmmc_1: dwmmc1@12210000 {
|
||||
dwmmc1@12210000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dwmmc_2: dwmmc2@12220000 {
|
||||
dwmmc2@12220000 {
|
||||
num-slots = <1>;
|
||||
supports-highspeed;
|
||||
fifo-depth = <0x80>;
|
||||
|
@ -158,7 +154,7 @@ slot@0 {
|
|||
};
|
||||
};
|
||||
|
||||
dwmmc_3: dwmmc3@12230000 {
|
||||
dwmmc3@12230000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Google Snow board device tree source
|
||||
*
|
||||
* Copyright (c) 2012 Google, Inc
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "exynos5250.dtsi"
|
||||
/include/ "cros5250-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Google Snow";
|
||||
compatible = "google,snow", "samsung,exynos5250";
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
lid-switch {
|
||||
label = "Lid";
|
||||
gpios = <&gpx3 5 0 0x10000 0>;
|
||||
linux,input-type = <5>; /* EV_SW */
|
||||
linux,code = <0>; /* SW_LID */
|
||||
debounce-interval = <1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* On Snow we've got SIP WiFi and so can keep drive strengths low to
|
||||
* reduce EMI.
|
||||
*/
|
||||
dwmmc3@12230000 {
|
||||
slot@0 {
|
||||
gpios = <&gpc4 0 2 0 0>, <&gpc4 1 2 3 0>,
|
||||
<&gpc4 3 2 3 0>, <&gpc4 4 2 3 0>,
|
||||
<&gpc4 5 2 3 0>, <&gpc4 6 2 3 0>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -31,6 +31,10 @@ aliases {
|
|||
gsc1 = &gsc_1;
|
||||
gsc2 = &gsc_2;
|
||||
gsc3 = &gsc_3;
|
||||
mshc0 = &dwmmc_0;
|
||||
mshc1 = &dwmmc_1;
|
||||
mshc2 = &dwmmc_2;
|
||||
mshc3 = &dwmmc_3;
|
||||
};
|
||||
|
||||
gic:interrupt-controller@10481000 {
|
||||
|
@ -224,7 +228,7 @@ spi_2: spi@12d40000 {
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
dwmmc0@12200000 {
|
||||
dwmmc_0: dwmmc0@12200000 {
|
||||
compatible = "samsung,exynos5250-dw-mshc";
|
||||
reg = <0x12200000 0x1000>;
|
||||
interrupts = <0 75 0>;
|
||||
|
@ -232,7 +236,7 @@ dwmmc0@12200000 {
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
dwmmc1@12210000 {
|
||||
dwmmc_1: dwmmc1@12210000 {
|
||||
compatible = "samsung,exynos5250-dw-mshc";
|
||||
reg = <0x12210000 0x1000>;
|
||||
interrupts = <0 76 0>;
|
||||
|
@ -240,7 +244,7 @@ dwmmc1@12210000 {
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
dwmmc2@12220000 {
|
||||
dwmmc_2: dwmmc2@12220000 {
|
||||
compatible = "samsung,exynos5250-dw-mshc";
|
||||
reg = <0x12220000 0x1000>;
|
||||
interrupts = <0 77 0>;
|
||||
|
@ -248,7 +252,7 @@ dwmmc2@12220000 {
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
dwmmc3@12230000 {
|
||||
dwmmc_3: dwmmc3@12230000 {
|
||||
compatible = "samsung,exynos5250-dw-mshc";
|
||||
reg = <0x12230000 0x1000>;
|
||||
interrupts = <0 78 0>;
|
||||
|
|
|
@ -52,6 +52,16 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = {
|
|||
"s3c2440-i2c.1", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2),
|
||||
"s3c2440-i2c.2", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(3),
|
||||
"s3c2440-i2c.3", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(4),
|
||||
"s3c2440-i2c.4", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(5),
|
||||
"s3c2440-i2c.5", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(6),
|
||||
"s3c2440-i2c.6", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(7),
|
||||
"s3c2440-i2c.7", NULL),
|
||||
OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8),
|
||||
"s3c2440-hdmiphy-i2c", NULL),
|
||||
OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0,
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#include <linux/pm_domain.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
#include <mach/regs-pmu.h>
|
||||
#include <plat/devs.h>
|
||||
|
@ -83,12 +85,88 @@ static struct exynos_pm_domain PD = { \
|
|||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static void exynos_add_device_to_domain(struct exynos_pm_domain *pd,
|
||||
struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dev_dbg(dev, "adding to power domain %s\n", pd->pd.name);
|
||||
|
||||
while (1) {
|
||||
ret = pm_genpd_add_device(&pd->pd, dev);
|
||||
if (ret != -EAGAIN)
|
||||
break;
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
pm_genpd_dev_need_restore(dev, true);
|
||||
}
|
||||
|
||||
static void exynos_remove_device_from_domain(struct device *dev)
|
||||
{
|
||||
struct generic_pm_domain *genpd = dev_to_genpd(dev);
|
||||
int ret;
|
||||
|
||||
dev_dbg(dev, "removing from power domain %s\n", genpd->name);
|
||||
|
||||
while (1) {
|
||||
ret = pm_genpd_remove_device(genpd, dev);
|
||||
if (ret != -EAGAIN)
|
||||
break;
|
||||
cond_resched();
|
||||
}
|
||||
}
|
||||
|
||||
static void exynos_read_domain_from_dt(struct device *dev)
|
||||
{
|
||||
struct platform_device *pd_pdev;
|
||||
struct exynos_pm_domain *pd;
|
||||
struct device_node *node;
|
||||
|
||||
node = of_parse_phandle(dev->of_node, "samsung,power-domain", 0);
|
||||
if (!node)
|
||||
return;
|
||||
pd_pdev = of_find_device_by_node(node);
|
||||
if (!pd_pdev)
|
||||
return;
|
||||
pd = platform_get_drvdata(pd_pdev);
|
||||
exynos_add_device_to_domain(pd, dev);
|
||||
}
|
||||
|
||||
static int exynos_pm_notifier_call(struct notifier_block *nb,
|
||||
unsigned long event, void *data)
|
||||
{
|
||||
struct device *dev = data;
|
||||
|
||||
switch (event) {
|
||||
case BUS_NOTIFY_BIND_DRIVER:
|
||||
if (dev->of_node)
|
||||
exynos_read_domain_from_dt(dev);
|
||||
|
||||
break;
|
||||
|
||||
case BUS_NOTIFY_UNBOUND_DRIVER:
|
||||
exynos_remove_device_from_domain(dev);
|
||||
|
||||
break;
|
||||
}
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block platform_nb = {
|
||||
.notifier_call = exynos_pm_notifier_call,
|
||||
};
|
||||
|
||||
static __init int exynos_pm_dt_parse_domains(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct device_node *np;
|
||||
|
||||
for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") {
|
||||
struct exynos_pm_domain *pd;
|
||||
int on;
|
||||
|
||||
pdev = of_find_device_by_node(np);
|
||||
|
||||
pd = kzalloc(sizeof(*pd), GFP_KERNEL);
|
||||
if (!pd) {
|
||||
|
@ -97,15 +175,22 @@ static __init int exynos_pm_dt_parse_domains(void)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (of_get_property(np, "samsung,exynos4210-pd-off", NULL))
|
||||
pd->is_off = true;
|
||||
pd->name = np->name;
|
||||
pd->pd.name = kstrdup(np->name, GFP_KERNEL);
|
||||
pd->name = pd->pd.name;
|
||||
pd->base = of_iomap(np, 0);
|
||||
pd->pd.power_off = exynos_pd_power_off;
|
||||
pd->pd.power_on = exynos_pd_power_on;
|
||||
pd->pd.of_node = np;
|
||||
pm_genpd_init(&pd->pd, NULL, false);
|
||||
|
||||
platform_set_drvdata(pdev, pd);
|
||||
|
||||
on = __raw_readl(pd->base + 0x4) & S5P_INT_LOCAL_PWR_EN;
|
||||
|
||||
pm_genpd_init(&pd->pd, NULL, !on);
|
||||
}
|
||||
|
||||
bus_register_notifier(&platform_bus_type, &platform_nb);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue