Merge tag 'qcom-soc-for-4.3-rc2' of git://codeaurora.org/quic/kernel/agross-msm into...
authorKevin Hilman <khilman@linaro.org>
Wed, 9 Sep 2015 23:15:34 +0000 (16:15 -0700)
committerKevin Hilman <khilman@linaro.org>
Wed, 9 Sep 2015 23:15:34 +0000 (16:15 -0700)
Qualcomm ARM Based SoC Updates for 4.3-rc2

* Fix errant private access in SMEM
* Fix use of correct remote processor ID in SMD transactions
* Correct SMD fBLOCKREADINTR handling

* tag 'qcom-soc-for-4.3-rc2' of git://codeaurora.org/quic/kernel/agross-msm:
  soc: qcom: smd: Correct fBLOCKREADINTR handling
  soc: qcom: smd: Use correct remote processor ID
  soc: qcom: smem: Fix errant private access
  devicetree: soc: Add Qualcomm SMD based RPM DT binding
  soc: qcom: Driver for the Qualcomm RPM over SMD
  soc: qcom: Add Shared Memory Driver
  soc: qcom: Add device tree binding for Shared Memory Device
  drivers: qcom: Select QCOM_SCM unconditionally for QCOM_PM
  soc: qcom: Add Shared Memory Manager driver

95 files changed:
Documentation/devicetree/bindings/reset/ath79-reset.txt [new file with mode: 0644]
Documentation/devicetree/bindings/reset/nxp,lpc1850-rgu.txt [new file with mode: 0644]
Documentation/devicetree/bindings/reset/st,sti-picophyreset.txt
Documentation/devicetree/bindings/reset/st,sti-powerdown.txt
Documentation/devicetree/bindings/reset/st,sti-softreset.txt
Documentation/devicetree/bindings/reset/zynq-reset.txt [new file with mode: 0644]
MAINTAINERS
arch/arm/boot/dts/exynos3250-monk.dts
arch/arm/boot/dts/exynos3250-rinato.dts
arch/arm/boot/dts/exynos3250.dtsi
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/exynos4210-origen.dts
arch/arm/boot/dts/exynos4210-trats.dts
arch/arm/boot/dts/exynos4210-universal_c210.dts
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4212.dtsi
arch/arm/boot/dts/exynos4412-odroid-common.dtsi
arch/arm/boot/dts/exynos4412-odroidu3.dts
arch/arm/boot/dts/exynos4412-origen.dts
arch/arm/boot/dts/exynos4412-trats2.dts
arch/arm/boot/dts/exynos4412.dtsi
arch/arm/boot/dts/exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-pinctrl.dtsi
arch/arm/boot/dts/exynos5250-smdk5250.dts
arch/arm/boot/dts/exynos5250-snow.dts
arch/arm/boot/dts/exynos5250-spring.dts
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5410-smdk5410.dts
arch/arm/boot/dts/exynos5420-pinctrl.dtsi
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi [new file with mode: 0644]
arch/arm/boot/dts/exynos5422-cpus.dtsi [new file with mode: 0644]
arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
arch/arm/boot/dts/qcom-apq8064.dtsi
arch/arm/boot/dts/qcom-apq8074-dragonboard.dts
arch/arm/boot/dts/qcom-apq8084-ifc6540.dts
arch/arm/boot/dts/qcom-apq8084-mtp.dts
arch/arm/boot/dts/qcom-apq8084.dtsi
arch/arm/boot/dts/qcom-ipq8064-ap148.dts
arch/arm/boot/dts/qcom-ipq8064.dtsi
arch/arm/boot/dts/qcom-msm8660-surf.dts
arch/arm/boot/dts/qcom-msm8660.dtsi
arch/arm/boot/dts/qcom-msm8960-cdp.dts
arch/arm/boot/dts/qcom-msm8960.dtsi
arch/arm/boot/dts/qcom-msm8974-sony-xperia-honami.dts
arch/arm/boot/dts/qcom-msm8974.dtsi
arch/arm/boot/dts/stih407-family.dtsi
arch/arm/boot/dts/stih415.dtsi
arch/arm/boot/dts/stih416.dtsi
arch/arm/configs/at91_dt_defconfig
arch/arm/configs/ep93xx_defconfig
arch/arm/configs/exynos_defconfig
arch/arm/configs/imx_v6_v7_defconfig
arch/arm/configs/marzen_defconfig [deleted file]
arch/arm/configs/multi_v7_defconfig
arch/arm/configs/mvebu_v7_defconfig
arch/arm/configs/omap2plus_defconfig
arch/arm/configs/orion5x_defconfig
arch/arm/configs/prima2_defconfig
arch/arm/configs/qcom_defconfig
arch/arm/configs/shmobile_defconfig
arch/arm/configs/sunxi_defconfig
arch/arm/configs/tegra_defconfig
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/exynos.c
arch/mips/Kconfig
arch/mips/boot/dts/qca/ar9132.dtsi
drivers/clk/samsung/clk-exynos3250.c
drivers/clk/samsung/clk-exynos4.c
drivers/clk/samsung/clk-exynos5250.c
drivers/cpufreq/Kconfig.arm
drivers/cpufreq/Makefile
drivers/cpufreq/exynos-cpufreq.c [deleted file]
drivers/cpufreq/exynos-cpufreq.h [deleted file]
drivers/cpufreq/exynos4x12-cpufreq.c [deleted file]
drivers/cpufreq/exynos5250-cpufreq.c [deleted file]
drivers/reset/Makefile
drivers/reset/reset-ath79.c [new file with mode: 0644]
drivers/reset/reset-lpc18xx.c [new file with mode: 0644]
drivers/reset/reset-socfpga.c
drivers/reset/reset-zynq.c [new file with mode: 0644]
drivers/reset/sti/reset-stih407.c
drivers/reset/sti/reset-stih415.c
drivers/reset/sti/reset-stih416.c
include/dt-bindings/clock/exynos3250.h
include/dt-bindings/clock/exynos5250.h
include/dt-bindings/reset-controller/stih407-resets.h [deleted file]
include/dt-bindings/reset-controller/stih415-resets.h [deleted file]
include/dt-bindings/reset-controller/stih416-resets.h [deleted file]
include/dt-bindings/reset/stih407-resets.h [new file with mode: 0644]
include/dt-bindings/reset/stih415-resets.h [new file with mode: 0644]
include/dt-bindings/reset/stih416-resets.h [new file with mode: 0644]
include/linux/reset.h

diff --git a/Documentation/devicetree/bindings/reset/ath79-reset.txt b/Documentation/devicetree/bindings/reset/ath79-reset.txt
new file mode 100644 (file)
index 0000000..4c56330
--- /dev/null
@@ -0,0 +1,20 @@
+Binding for Qualcomm Atheros AR7xxx/AR9XXX reset controller
+
+Please also refer to reset.txt in this directory for common reset
+controller binding usage.
+
+Required Properties:
+- compatible: has to be "qca,<soctype>-reset", "qca,ar7100-reset"
+              as fallback
+- reg: Base address and size of the controllers memory area
+- #reset-cells : Specifies the number of cells needed to encode reset
+                 line, should be 1
+
+Example:
+
+       reset-controller@1806001c {
+               compatible = "qca,ar9132-reset", "qca,ar7100-reset";
+               reg = <0x1806001c 0x4>;
+
+               #reset-cells = <1>;
+       };
diff --git a/Documentation/devicetree/bindings/reset/nxp,lpc1850-rgu.txt b/Documentation/devicetree/bindings/reset/nxp,lpc1850-rgu.txt
new file mode 100644 (file)
index 0000000..b4e96a2
--- /dev/null
@@ -0,0 +1,84 @@
+NXP LPC1850  Reset Generation Unit (RGU)
+========================================
+
+Please also refer to reset.txt in this directory for common reset
+controller binding usage.
+
+Required properties:
+- compatible: Should be "nxp,lpc1850-rgu"
+- reg: register base and length
+- clocks: phandle and clock specifier to RGU clocks
+- clock-names: should contain "delay" and "reg"
+- #reset-cells: should be 1
+
+See table below for valid peripheral reset numbers. Numbers not
+in the table below are either reserved or not applicable for
+normal operation.
+
+Reset  Peripheral
+  9    System control unit (SCU)
+ 12    ARM Cortex-M0 subsystem core (LPC43xx only)
+ 13    CPU core
+ 16    LCD controller
+ 17    USB0
+ 18    USB1
+ 19    DMA
+ 20    SDIO
+ 21    External memory controller (EMC)
+ 22    Ethernet
+ 25    Flash bank A
+ 27    EEPROM
+ 28    GPIO
+ 29    Flash bank B
+ 32    Timer0
+ 33    Timer1
+ 34    Timer2
+ 35    Timer3
+ 36    Repetitive Interrupt timer (RIT)
+ 37    State Configurable Timer (SCT)
+ 38    Motor control PWM (MCPWM)
+ 39    QEI
+ 40    ADC0
+ 41    ADC1
+ 42    DAC
+ 44    USART0
+ 45    UART1
+ 46    USART2
+ 47    USART3
+ 48    I2C0
+ 49    I2C1
+ 50    SSP0
+ 51    SSP1
+ 52    I2S0 and I2S1
+ 53    Serial Flash Interface (SPIFI)
+ 54    C_CAN1
+ 55    C_CAN0
+ 56    ARM Cortex-M0 application core (LPC4370 only)
+ 57    SGPIO (LPC43xx only)
+ 58    SPI (LPC43xx only)
+ 60    ADCHS (12-bit ADC) (LPC4370 only)
+
+Refer to NXP LPC18xx or LPC43xx user manual for more details about
+the reset signals and the connected block/peripheral.
+
+Reset provider example:
+rgu: reset-controller@40053000 {
+       compatible = "nxp,lpc1850-rgu";
+       reg = <0x40053000 0x1000>;
+       clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_BUS>;
+       clock-names = "delay", "reg";
+       #reset-cells = <1>;
+};
+
+Reset consumer example:
+mac: ethernet@40010000 {
+       compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
+       reg = <0x40010000 0x2000>;
+       interrupts = <5>;
+       interrupt-names = "macirq";
+       clocks = <&ccu1 CLK_CPU_ETHERNET>;
+       clock-names = "stmmaceth";
+       resets = <&rgu 22>;
+       reset-names = "stmmaceth";
+       status = "disabled";
+};
index 54ae9f747e45175425696159a2234d5a40716c25..9ca27761f8116116cd379222c15d1503550e077f 100644 (file)
@@ -39,4 +39,4 @@ Example:
        };
 
 Macro definitions for the supported reset channels can be found in:
-include/dt-bindings/reset-controller/stih407-resets.h
+include/dt-bindings/reset/stih407-resets.h
index 5ab26b7e9d35c9e696927fc121029f146be3523d..1cfd21d1dfa1826753be5486a7ca3f282ba500e2 100644 (file)
@@ -43,5 +43,5 @@ example:
 
 Macro definitions for the supported reset channels can be found in:
 
-include/dt-bindings/reset-controller/stih415-resets.h
-include/dt-bindings/reset-controller/stih416-resets.h
+include/dt-bindings/reset/stih415-resets.h
+include/dt-bindings/reset/stih416-resets.h
index a8d3d3c25ca265fc40f4ed688c01d5901efc3638..891a2fd85ed619ca0274b1709e3093fc0713f4c2 100644 (file)
@@ -42,5 +42,5 @@ example:
 
 Macro definitions for the supported reset channels can be found in:
 
-include/dt-bindings/reset-controller/stih415-resets.h
-include/dt-bindings/reset-controller/stih416-resets.h
+include/dt-bindings/reset/stih415-resets.h
+include/dt-bindings/reset/stih416-resets.h
diff --git a/Documentation/devicetree/bindings/reset/zynq-reset.txt b/Documentation/devicetree/bindings/reset/zynq-reset.txt
new file mode 100644 (file)
index 0000000..5860120
--- /dev/null
@@ -0,0 +1,68 @@
+Xilinx Zynq Reset Manager
+
+The Zynq AP-SoC has several different resets.
+
+See Chapter 26 of the Zynq TRM (UG585) for more information about Zynq resets.
+
+Required properties:
+- compatible: "xlnx,zynq-reset"
+- reg: SLCR offset and size taken via syscon <0x200 0x48>
+- syscon: <&slcr>
+  This should be a phandle to the Zynq's SLCR registers.
+- #reset-cells: Must be 1
+
+The Zynq Reset Manager needs to be a childnode of the SLCR.
+
+Example:
+       rstc: rstc@200 {
+               compatible = "xlnx,zynq-reset";
+               reg = <0x200 0x48>;
+               #reset-cells = <1>;
+               syscon = <&slcr>;
+       };
+
+Reset outputs:
+ 0  : soft reset
+ 32 : ddr reset
+ 64 : topsw reset
+ 96 : dmac reset
+ 128: usb0 reset
+ 129: usb1 reset
+ 160: gem0 reset
+ 161: gem1 reset
+ 164: gem0 rx reset
+ 165: gem1 rx reset
+ 166: gem0 ref reset
+ 167: gem1 ref reset
+ 192: sdio0 reset
+ 193: sdio1 reset
+ 196: sdio0 ref reset
+ 197: sdio1 ref reset
+ 224: spi0 reset
+ 225: spi1 reset
+ 226: spi0 ref reset
+ 227: spi1 ref reset
+ 256: can0 reset
+ 257: can1 reset
+ 258: can0 ref reset
+ 259: can1 ref reset
+ 288: i2c0 reset
+ 289: i2c1 reset
+ 320: uart0 reset
+ 321: uart1 reset
+ 322: uart0 ref reset
+ 323: uart1 ref reset
+ 352: gpio reset
+ 384: lqspi reset
+ 385: qspi ref reset
+ 416: smc reset
+ 417: smc ref reset
+ 448: ocm reset
+ 512: fpga0 out reset
+ 513: fpga1 out reset
+ 514: fpga2 out reset
+ 515: fpga3 out reset
+ 544: a9 reset 0
+ 545: a9 reset 1
+ 552: peri reset
+
index fd60784430838fb99d5cb13ae8767298f6b9b35d..e44c23fed3cb38092bb1b372c65e8b6af1522678 100644 (file)
@@ -8553,6 +8553,7 @@ M:        Philipp Zabel <p.zabel@pengutronix.de>
 S:     Maintained
 F:     drivers/reset/
 F:     Documentation/devicetree/bindings/reset/
+F:     include/dt-bindings/reset/
 F:     include/linux/reset.h
 F:     include/linux/reset-controller.h
 
index a5863acc5fff36aa28e1be183a85fc37883cd186..540a0adf2be6dcc94da5b487958cacca4348996d 100644 (file)
                min-microvolt = <1100000>;
                max-microvolt = <2700000>;
        };
+
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       cooling-maps {
+                               map0 {
+                                       /* Correspond to 500MHz at freq_table */
+                                       cooling-device = <&cpu0 5 5>;
+                               };
+                               map1 {
+                                       /* Correspond to 200MHz at freq_table */
+                                       cooling-device = <&cpu0 8 8>;
+                               };
+                       };
+               };
+       };
 };
 
 &adc {
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &exynos_usbphy {
        status = "okay";
 };
index 031853b75528c1043451d9c3fc02adc107f5e325..0e62a6435e073b35a8c92e76f4300a423418a4c1 100644 (file)
                min-microvolt = <1100000>;
                max-microvolt = <2700000>;
        };
+
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       cooling-maps {
+                               map0 {
+                                       /* Corresponds to 500MHz */
+                                       cooling-device = <&cpu0 5 5>;
+                               };
+                               map1 {
+                                       /* Corresponds to 200MHz */
+                                       cooling-device = <&cpu0 8 8>;
+                               };
+                       };
+               };
+       };
 };
 
 &adc {
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &exynos_usbphy {
        status = "okay";
 };
index d7201333e3bcd181d0a0281b3d214a6b5e92265a..033def482fc3d71693c48bd5a942eda4a7833bbf 100644 (file)
                        compatible = "arm,cortex-a7";
                        reg = <0>;
                        clock-frequency = <1000000000>;
+                       clocks = <&cmu CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       #cooling-cells = <2>;
+
+                       operating-points = <
+                               1000000 1150000
+                               900000  1112500
+                               800000  1075000
+                               700000  1037500
+                               600000  1000000
+                               500000  962500
+                               400000  925000
+                               300000  887500
+                               200000  850000
+                               100000  850000
+                       >;
                };
 
                cpu1: cpu@1 {
 
                mipi_phy: video-phy@10020710 {
                        compatible = "samsung,s5pv210-mipi-video-phy";
-                       reg = <0x10020710 8>;
                        #phy-cells = <1>;
+                       syscon = <&pmu_system_controller>;
                };
 
                pd_cam: cam-power-domain@10023C00 {
index b0d52b1a646af0cb1154f7216a81da9b3e64ef6a..98c0a368b7778dc3b13ec9e07d476e5eebff9cbb 100644 (file)
                clocks = <&clock CLK_JPEG>;
                clock-names = "jpeg";
                power-domains = <&pd_cam>;
+               iommus = <&sysmmu_jpeg>;
        };
 
        hdmi: hdmi@12D00000 {
index e0abfc3324d11eaed33838be9c04b7f1a167f5fb..e050d85cdacddf24268870988badefca45d75a88 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck1_reg>;
+};
+
 &fimd {
        pinctrl-0 = <&lcd_en &lcd_clk &lcd_data24 &pwm0_out>;
        pinctrl-names = "default";
index 98f3ce65cb9a387a55ee588069bf42b51103317c..ba34886f8b65b6227f82ef93c530603b64910449 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&varm_breg>;
+};
+
 &dsi_0 {
        vddcore-supply = <&vusb_reg>;
        vddio-supply = <&vmipi_reg>;
index d4f2b11319dd10d4d7b79fa295d55e63baccff9c..eb379526e23425f145daa1f20069f07292bc7f88 100644 (file)
                enable-active-high;
        };
 
-       hsotg@12480000 {
-               vusb_d-supply = <&ldo3_reg>;
-               vusb_a-supply = <&ldo8_reg>;
-               dr_mode = "peripheral";
-               status = "okay";
-       };
-
-       sdhci_emmc: sdhci@12510000 {
-               bus-width = <8>;
-               non-removable;
-               pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
-               pinctrl-names = "default";
-               vmmc-supply = <&vemmc_reg>;
-               status = "okay";
-       };
-
-       sdhci_sd: sdhci@12530000 {
-               bus-width = <4>;
-               pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
-               pinctrl-names = "default";
-               vmmc-supply = <&ldo5_reg>;
-               cd-gpios = <&gpx3 4 0>;
-               cd-inverted;
-               status = "okay";
-       };
-
-       ehci@12580000 {
-               status = "okay";
-               port@0 {
-                       status = "okay";
-               };
-       };
-
-       ohci@12590000 {
-               status = "okay";
-               port@0 {
-                       status = "okay";
-               };
-       };
-
-       exynos-usbphy@125B0000 {
-               status = "okay";
-       };
-
-       serial@13800000 {
-               status = "okay";
-       };
-
-       serial@13810000 {
-               status = "okay";
-       };
-
-       serial@13820000 {
-               status = "okay";
-       };
-
-       serial@13830000 {
-               status = "okay";
-       };
-
        gpio-keys {
                compatible = "gpio-keys";
 
                enable-active-high;
        };
 
-       i2c@13890000 {
-               samsung,i2c-sda-delay = <100>;
-               samsung,i2c-slave-addr = <0x10>;
-               samsung,i2c-max-bus-freq = <100000>;
-               pinctrl-0 = <&i2c3_bus>;
-               pinctrl-names = "default";
-               status = "okay";
-
-               tsp@4a {
-                       /* TBD: Atmel maXtouch touchscreen */
-                       reg = <0x4a>;
-               };
-       };
-
-       i2c@138B0000 {
-               samsung,i2c-sda-delay = <100>;
-               samsung,i2c-slave-addr = <0x10>;
-               samsung,i2c-max-bus-freq = <100000>;
-               pinctrl-0 = <&i2c5_bus>;
-               pinctrl-names = "default";
-               status = "okay";
-
-               vdd_arm_reg: pmic@60 {
-                       compatible = "maxim,max8952";
-                       reg = <0x60>;
-
-                       max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
-                       max8952,default-mode = <0>;
-                       max8952,dvs-mode-microvolt = <1250000>, <1200000>,
-                                                       <1050000>, <950000>;
-                       max8952,sync-freq = <0>;
-                       max8952,ramp-speed = <0>;
-
-                       regulator-name = "vdd_arm";
-                       regulator-min-microvolt = <770000>;
-                       regulator-max-microvolt = <1400000>;
-                       regulator-always-on;
-                       regulator-boot-on;
-               };
-
-               pmic@66 {
-                       compatible = "national,lp3974";
-                       reg = <0x66>;
-
-                       max8998,pmic-buck1-default-dvs-idx = <0>;
-                       max8998,pmic-buck1-dvs-gpios = <&gpx0 5 0>,
-                                                       <&gpx0 6 0>;
-                       max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
-                                                       <1100000>, <1000000>;
-
-                       max8998,pmic-buck2-default-dvs-idx = <0>;
-                       max8998,pmic-buck2-dvs-gpio = <&gpe2 0 0>;
-                       max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;
-
-                       regulators {
-                               ldo2_reg: LDO2 {
-                                       regulator-name = "VALIVE_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo3_reg: LDO3 {
-                                       regulator-name = "VUSB+MIPI_1.1V";
-                                       regulator-min-microvolt = <1100000>;
-                                       regulator-max-microvolt = <1100000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo4_reg: LDO4 {
-                                       regulator-name = "VADC_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                               };
-
-                               ldo5_reg: LDO5 {
-                                       regulator-name = "VTF_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo6_reg: LDO6 {
-                                       regulator-name = "LDO6";
-                                       regulator-min-microvolt = <2000000>;
-                                       regulator-max-microvolt = <2000000>;
-                               };
-
-                               ldo7_reg: LDO7 {
-                                       regulator-name = "VLCD+VMIPI_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                               };
-
-                               ldo8_reg: LDO8 {
-                                       regulator-name = "VUSB+VDAC_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo9_reg: LDO9 {
-                                       regulator-name = "VCC_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo10_reg: LDO10 {
-                                       regulator-name = "VPLL_1.1V";
-                                       regulator-min-microvolt = <1100000>;
-                                       regulator-max-microvolt = <1100000>;
-                                       regulator-boot-on;
-                                       regulator-always-on;
-                               };
-
-                               ldo11_reg: LDO11 {
-                                       regulator-name = "CAM_AF_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                               };
-
-                               ldo12_reg: LDO12 {
-                                       regulator-name = "PS_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo13_reg: LDO13 {
-                                       regulator-name = "VHIC_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                               };
-
-                               ldo14_reg: LDO14 {
-                                       regulator-name = "CAM_I_HOST_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                               };
-
-                               ldo15_reg: LDO15 {
-                                       regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                               };
-
-                               ldo16_reg: LDO16 {
-                                       regulator-name = "CAM_S_ANA_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo17_reg: LDO17 {
-                                       regulator-name = "VCC_3.0V_LCD";
-                                       regulator-min-microvolt = <3000000>;
-                                       regulator-max-microvolt = <3000000>;
-                               };
-
-                               buck1_reg: BUCK1 {
-                                       regulator-name = "VINT_1.1V";
-                                       regulator-min-microvolt = <750000>;
-                                       regulator-max-microvolt = <1500000>;
-                                       regulator-boot-on;
-                                       regulator-always-on;
-                               };
-
-                               buck2_reg: BUCK2 {
-                                       regulator-name = "VG3D_1.1V";
-                                       regulator-min-microvolt = <750000>;
-                                       regulator-max-microvolt = <1500000>;
-                                       regulator-boot-on;
-                               };
-
-                               buck3_reg: BUCK3 {
-                                       regulator-name = "VCC_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                                       regulator-always-on;
-                               };
-
-                               buck4_reg: BUCK4 {
-                                       regulator-name = "VMEM_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                                       regulator-always-on;
-                               };
-
-                               ap32khz_reg: EN32KHz-AP {
-                                       regulator-name = "32KHz AP";
-                                       regulator-always-on;
-                               };
-
-                               cp32khz_reg: EN32KHz-CP {
-                                       regulator-name = "32KHz CP";
-                               };
-
-                               vichg_reg: ENVICHG {
-                                       regulator-name = "VICHG";
-                               };
-
-                               safeout1_reg: ESAFEOUT1 {
-                                       regulator-name = "SAFEOUT1";
-                                       regulator-always-on;
-                               };
-
-                               safeout2_reg: ESAFEOUT2 {
-                                       regulator-name = "SAFEOUT2";
-                                       regulator-boot-on;
-                               };
-                       };
-               };
-       };
-
        spi-lcd {
                compatible = "spi-gpio";
                #address-cells = <1>;
                };
        };
 
-       fimd: fimd@11c00000 {
-               pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
-               pinctrl-names = "default";
-               status = "okay";
-               samsung,invert-vden;
-               samsung,invert-vclk;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               port@3 {
-                       reg = <3>;
-                       fimd_dpi_ep: endpoint {
-                               remote-endpoint = <&lcd_ep>;
-                       };
-               };
-       };
-
-       pwm@139D0000 {
-               compatible = "samsung,s5p6440-pwm";
-               status = "okay";
-       };
-
        camera {
                status = "okay";
 
                pinctrl-names = "default";
                status = "okay";
        };
+};
+
+&cpu0 {
+       cpu0-supply = <&vdd_arm_reg>;
+};
 
-       mixer@12C10000 {
+&ehci {
+       status = "okay";
+       port@0 {
                status = "okay";
        };
+};
 
-       hdmi@12D00000 {
-               hpd-gpio = <&gpx3 7 0>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&hdmi_hpd>;
-               hdmi-en-supply = <&hdmi_en>;
-               vdd-supply = <&ldo3_reg>;
-               vdd_osc-supply = <&ldo4_reg>;
-               vdd_pll-supply = <&ldo3_reg>;
-               ddc = <&hdmi_ddc>;
-               status = "okay";
+&exynos_usbphy {
+       status = "okay";
+};
+
+&fimd {
+       pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
+       pinctrl-names = "default";
+       status = "okay";
+       samsung,invert-vden;
+       samsung,invert-vclk;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       port@3 {
+               reg = <3>;
+               fimd_dpi_ep: endpoint {
+                       remote-endpoint = <&lcd_ep>;
+               };
+       };
+};
+
+&hdmi {
+       hpd-gpio = <&gpx3 7 0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmi_hpd>;
+       hdmi-en-supply = <&hdmi_en>;
+       vdd-supply = <&ldo3_reg>;
+       vdd_osc-supply = <&ldo4_reg>;
+       vdd_pll-supply = <&ldo3_reg>;
+       ddc = <&hdmi_ddc>;
+       status = "okay";
+};
+
+&hsotg {
+       vusb_d-supply = <&ldo3_reg>;
+       vusb_a-supply = <&ldo8_reg>;
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&i2c_3 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-slave-addr = <0x10>;
+       samsung,i2c-max-bus-freq = <100000>;
+       pinctrl-0 = <&i2c3_bus>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       tsp@4a {
+               /* TBD: Atmel maXtouch touchscreen */
+               reg = <0x4a>;
+       };
+};
+
+&i2c_5 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-slave-addr = <0x10>;
+       samsung,i2c-max-bus-freq = <100000>;
+       pinctrl-0 = <&i2c5_bus>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       vdd_arm_reg: pmic@60 {
+               compatible = "maxim,max8952";
+               reg = <0x60>;
+
+               max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
+               max8952,default-mode = <0>;
+               max8952,dvs-mode-microvolt = <1250000>, <1200000>,
+                                               <1050000>, <950000>;
+               max8952,sync-freq = <0>;
+               max8952,ramp-speed = <0>;
+
+               regulator-name = "vdd_arm";
+               regulator-min-microvolt = <770000>;
+               regulator-max-microvolt = <1400000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       pmic@66 {
+               compatible = "national,lp3974";
+               reg = <0x66>;
+
+               max8998,pmic-buck1-default-dvs-idx = <0>;
+               max8998,pmic-buck1-dvs-gpios = <&gpx0 5 0>,
+                                               <&gpx0 6 0>;
+               max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
+                                               <1100000>, <1000000>;
+
+               max8998,pmic-buck2-default-dvs-idx = <0>;
+               max8998,pmic-buck2-dvs-gpio = <&gpe2 0 0>;
+               max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;
+
+               regulators {
+                       ldo2_reg: LDO2 {
+                               regulator-name = "VALIVE_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       ldo3_reg: LDO3 {
+                               regulator-name = "VUSB+MIPI_1.1V";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-always-on;
+                       };
+
+                       ldo4_reg: LDO4 {
+                               regulator-name = "VADC_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo5_reg: LDO5 {
+                               regulator-name = "VTF_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo6_reg: LDO6 {
+                               regulator-name = "LDO6";
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                       };
+
+                       ldo7_reg: LDO7 {
+                               regulator-name = "VLCD+VMIPI_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       ldo8_reg: LDO8 {
+                               regulator-name = "VUSB+VDAC_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       ldo9_reg: LDO9 {
+                               regulator-name = "VCC_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-always-on;
+                       };
+
+                       ldo10_reg: LDO10 {
+                               regulator-name = "VPLL_1.1V";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo11_reg: LDO11 {
+                               regulator-name = "CAM_AF_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo12_reg: LDO12 {
+                               regulator-name = "PS_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo13_reg: LDO13 {
+                               regulator-name = "VHIC_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       ldo14_reg: LDO14 {
+                               regulator-name = "CAM_I_HOST_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       ldo15_reg: LDO15 {
+                               regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       ldo16_reg: LDO16 {
+                               regulator-name = "CAM_S_ANA_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo17_reg: LDO17 {
+                               regulator-name = "VCC_3.0V_LCD";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                       };
+
+                       buck1_reg: BUCK1 {
+                               regulator-name = "VINT_1.1V";
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck2_reg: BUCK2 {
+                               regulator-name = "VG3D_1.1V";
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+                       };
+
+                       buck3_reg: BUCK3 {
+                               regulator-name = "VCC_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       buck4_reg: BUCK4 {
+                               regulator-name = "VMEM_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       ap32khz_reg: EN32KHz-AP {
+                               regulator-name = "32KHz AP";
+                               regulator-always-on;
+                       };
+
+                       cp32khz_reg: EN32KHz-CP {
+                               regulator-name = "32KHz CP";
+                       };
+
+                       vichg_reg: ENVICHG {
+                               regulator-name = "VICHG";
+                       };
+
+                       safeout1_reg: ESAFEOUT1 {
+                               regulator-name = "SAFEOUT1";
+                               regulator-always-on;
+                       };
+
+                       safeout2_reg: ESAFEOUT2 {
+                               regulator-name = "SAFEOUT2";
+                               regulator-boot-on;
+                       };
+               };
        };
+};
 
-       i2c@138E0000 {
+&i2c_8 {
+       status = "okay";
+};
+
+&mdma1 {
+       reg = <0x12840000 0x1000>;
+};
+
+&mixer {
+       status = "okay";
+};
+
+&ohci {
+       status = "okay";
+       port@0 {
                status = "okay";
        };
 };
        };
 };
 
-&mdma1 {
-       reg = <0x12840000 0x1000>;
+&pwm {
+       compatible = "samsung,s5p6440-pwm";
+       status = "okay";
+};
+
+&sdhci_0 {
+       bus-width = <8>;
+       non-removable;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
+       pinctrl-names = "default";
+       vmmc-supply = <&vemmc_reg>;
+       status = "okay";
+};
+
+&sdhci_2 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
+       pinctrl-names = "default";
+       vmmc-supply = <&ldo5_reg>;
+       cd-gpios = <&gpx3 4 0>;
+       cd-inverted;
+       status = "okay";
+};
+
+&serial_0 {
+       status = "okay";
+};
+
+&serial_1 {
+       status = "okay";
+};
+
+&serial_2 {
+       status = "okay";
+};
+
+&serial_3 {
+       status = "okay";
 };
index 10d3c173396e4cb67a2443f2d3e641c264bec168..3e5ba665d20009de0a974c9ceccb283e431b3b54 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0x900>;
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       clock-latency = <160000>;
+
+                       operating-points = <
+                               1200000 1250000
+                               1000000 1150000
+                               800000  1075000
+                               500000  975000
+                               400000  975000
+                               200000  950000
+                       >;
                        cooling-min-level = <4>;
                        cooling-max-level = <2>;
                        #cooling-cells = <2>; /* min followed by max */
index d9c8efeef208d8d6cf5b39f34506083020d7b0fe..538901123d37ea594e682d6d066b2c3b3bd0064b 100644 (file)
@@ -30,6 +30,9 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA00>;
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       operating-points-v2 = <&cpu0_opp_table>;
                        cooling-min-level = <13>;
                        cooling-max-level = <7>;
                        #cooling-cells = <2>; /* min followed by max */
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA01>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
+
+       cpu0_opp_table: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp00 {
+                       opp-hz = /bits/ 64 <200000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <400000000>;
+                       opp-microvolt = <925000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <950000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <975000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <700000000>;
+                       opp-microvolt = <987500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <900000000>;
+                       opp-microvolt = <1037500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp08 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1087500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp09 {
+                       opp-hz = /bits/ 64 <1100000000>;
+                       opp-microvolt = <1137500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp10 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <1187500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp11 {
+                       opp-hz = /bits/ 64 <1300000000>;
+                       opp-microvolt = <1250000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp12 {
+                       opp-hz = /bits/ 64 <1400000000>;
+                       opp-microvolt = <1287500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp13 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <1350000>;
+                       clock-latency-ns = <200000>;
+                       turbo-mode;
                };
        };
 };
index ca7d168d1dd62004aa45db808741b3458ae1da61..db52841297a5744d29b86fc167b43dcf1c6a1db6 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 /* RSTN signal for eMMC */
 &sd1_cd {
        samsung,pin-pud = <0>;
index 44684e57ead1e6a60e86731e67f7f5bc0141adfc..8632f35c6c26892fcbea54b71d41cbed29820458 100644 (file)
@@ -13,6 +13,7 @@
 
 /dts-v1/;
 #include "exynos4412-odroid-common.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Hardkernel ODROID-U3 board based on Exynos4412";
                "Speakers", "SPKL",
                "Speakers", "SPKR";
 };
+
+&spi_1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi1_bus>;
+       cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
index 84c76310b31288d8542c2a8d1a0965b9a705bca7..9d528af68c1a45ba8b35b4d8c8100abb27afecae 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &fimd {
        pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
        pinctrl-names = "default";
index afc199d78cb9b3ed1d3cbdb5c433fd1617a4844e..2a1ebb76ebe0084af6ff07a8617df2050675af0c 100644 (file)
                        interrupt-parent = <&gpx2>;
                        interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
                        reg = <0x36>;
+
+                       maxim,over-heat-temp = <700>;
+                       maxim,over-volt = <4500>;
                };
        };
 
        status = "okay";
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &csis_0 {
        status = "okay";
        vddcore-supply = <&ldo8_reg>;
index b78ada70bd051d6ff3cc2bdd5cbb26859fd644eb..ca0e3c15977f13febd2ae550949ae704ecbf33cb 100644 (file)
@@ -30,6 +30,9 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA00>;
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       operating-points-v2 = <&cpu0_opp_table>;
                        cooling-min-level = <13>;
                        cooling-max-level = <7>;
                        #cooling-cells = <2>; /* min followed by max */
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA01>;
+                       operating-points-v2 = <&cpu0_opp_table>;
                };
 
                cpu@A02 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA02>;
+                       operating-points-v2 = <&cpu0_opp_table>;
                };
 
                cpu@A03 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0xA03>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
+
+       cpu0_opp_table: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp00 {
+                       opp-hz = /bits/ 64 <200000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <400000000>;
+                       opp-microvolt = <925000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <950000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <975000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <700000000>;
+                       opp-microvolt = <987500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <900000000>;
+                       opp-microvolt = <1037500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp08 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1087500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp09 {
+                       opp-hz = /bits/ 64 <1100000000>;
+                       opp-microvolt = <1137500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp10 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <1187500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp11 {
+                       opp-hz = /bits/ 64 <1300000000>;
+                       opp-microvolt = <1250000>;
+                       clock-latency-ns = <200000>;
+               };
+               opp12 {
+                       opp-hz = /bits/ 64 <1400000000>;
+                       opp-microvolt = <1287500>;
+                       clock-latency-ns = <200000>;
+               };
+               opp13 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <1350000>;
+                       clock-latency-ns = <200000>;
+                       turbo-mode;
                };
        };
 
index 7e728a1b55590abe15e89d109ad0433a86785f17..db3f65f3eb45995d840a7ddc60284b0ff6e85457 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &dp {
        status = "okay";
        samsung,color-space = <0>;
index 886cfca044ace2deecd63c1c1378891758d6d968..880917e508b240f73a9136d9678a4ec3d73f3bd9 100644 (file)
  * published by the Free Software Foundation.
 */
 
-/ {
-       pinctrl@11400000 {
-               gpa0: gpa0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
+&pinctrl_0 {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
 
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa1: gpa1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa2: gpa2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb0: gpb0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb1: gpb1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb2: gpb2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb3: gpb3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc0: gpc0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc1: gpc1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc2: gpc2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc3: gpc3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd0: gpd0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd1: gpd1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpy0: gpy0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy1: gpy1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy2: gpy2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy3: gpy3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy4: gpy4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy5: gpy5 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy6: gpy6 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpc4: gpc4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx0: gpx0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
-                                    <26 0>, <26 1>, <27 0>, <27 1>;
-               };
-
-               gpx1: gpx1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
-                                    <30 0>, <30 1>, <31 0>, <31 1>;
-               };
-
-               gpx2: gpx2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx3: gpx3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               uart0_data: uart0-data {
-                       samsung,pins = "gpa0-0", "gpa0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart0_fctl: uart0-fctl {
-                       samsung,pins = "gpa0-2", "gpa0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_bus: i2c2-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_hs_bus: i2c2-hs-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_data: uart2-data {
-                       samsung,pins = "gpa1-0", "gpa1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_fctl: uart2-fctl {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_bus: i2c3-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_hs_bus: i2c3-hs-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart3_data: uart3-data {
-                       samsung,pins = "gpa1-4", "gpa1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi0_bus: spi0-bus {
-                       samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c4_bus: i2c4-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c5_bus: i2c5-bus {
-                       samsung,pins = "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi1_bus: spi1-bus {
-                       samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s1_bus: i2s1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm1_bus: pcm1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               ac97_bus: ac97-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s2_bus: i2s2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm2_bus: pcm2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spdif_bus: spdif-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi2_bus: spi2-bus {
-                       samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <5>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c6_bus: i2c6-bus {
-                       samsung,pins = "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm0_out: pwm0-out {
-                       samsung,pins = "gpb2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm1_out: pwm1-out {
-                       samsung,pins = "gpb2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm2_out: pwm2-out {
-                       samsung,pins = "gpb2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm3_out: pwm3-out {
-                       samsung,pins = "gpb2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c7_bus: i2c7-bus {
-                       samsung,pins = "gpb2-2", "gpb2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_bus: i2c0-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_bus: i2c1-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_hs_bus: i2c0-hs-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_hs_bus: i2c1-hs-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               sd0_clk: sd0-clk {
-                       samsung,pins = "gpc0-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cmd: sd0-cmd {
-                       samsung,pins = "gpc0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cd: sd0-cd {
-                       samsung,pins = "gpc0-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus1: sd0-bus-width1 {
-                       samsung,pins = "gpc0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus4: sd0-bus-width4 {
-                       samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus8: sd0-bus-width8 {
-                       samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_clk: sd1-clk {
-                       samsung,pins = "gpc2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cmd: sd1-cmd {
-                       samsung,pins = "gpc2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cd: sd1-cd {
-                       samsung,pins = "gpc2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus1: sd1-bus-width1 {
-                       samsung,pins = "gpc2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus4: sd1-bus-width4 {
-                       samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_clk: sd2-clk {
-                       samsung,pins = "gpc3-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cmd: sd2-cmd {
-                       samsung,pins = "gpc3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cd: sd2-cd {
-                       samsung,pins = "gpc3-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus1: sd2-bus-width1 {
-                       samsung,pins = "gpc3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus4: sd2-bus-width4 {
-                       samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus8: sd2-bus-width8 {
-                       samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_clk: sd3-clk {
-                       samsung,pins = "gpc4-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_cmd: sd3-cmd {
-                       samsung,pins = "gpc4-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_cd: sd3-cd {
-                       samsung,pins = "gpc4-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_bus1: sd3-bus-width1 {
-                       samsung,pins = "gpc4-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_bus4: sd3-bus-width4 {
-                       samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               uart1_data: uart1-data {
-                       samsung,pins = "gpd0-0", "gpd0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_fctl: uart1-fctl {
-                       samsung,pins = "gpd0-2", "gpd0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               dp_hpd: dp_hpd {
-                       samsung,pins = "gpx0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@13400000 {
-               gpe0: gpe0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpe1: gpe1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf0: gpf0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf1: gpf1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg0: gpg0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg1: gpg1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg2: gpg2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph0: gph0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph1: gph1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               cam_gpio_a: cam-gpio-a {
-                       samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
-                                      "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
-                                      "gpe1-0", "gpe1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_gpio_b: cam-gpio-b {
-                       samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
-                                      "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c2_bus: cam-i2c2-bus {
-                       samsung,pins = "gpe0-6", "gpe1-0";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi1_bus: cam-spi1-bus {
-                       samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c1_bus: cam-i2c1-bus {
-                       samsung,pins = "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c0_bus: cam-i2c0-bus {
-                       samsung,pins = "gpf0-0", "gpf0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi0_bus: cam-spi0-bus {
-                       samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_bayrgb_bus: cam-bayrgb-bus {
-                       samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
-                                      "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
-                                      "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
-                                      "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
-                                      "gpg2-0", "gpg2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_port_a: cam-port-a {
-                       samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3",
-                                      "gph1-0", "gph1-1", "gph1-2", "gph1-3",
-                                      "gph1-4", "gph1-5", "gph1-6", "gph1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@10d10000 {
-               gpv0: gpv0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv1: gpv1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv2: gpv2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv3: gpv3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv4: gpv4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               c2c_rxd: c2c-rxd {
-                       samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3",
-                                      "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7",
-                                      "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3",
-                                      "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               c2c_txd: c2c-txd {
-                       samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3",
-                                      "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7",
-                                      "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3",
-                                      "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@03860000 {
-               gpz: gpz {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               i2s0_bus: i2s0-bus {
-                       samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
-                                       "gpz-4", "gpz-5", "gpz-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa2: gpa2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb0: gpb0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc0: gpc0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc2: gpc2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc3: gpc3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd0: gpd0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpy0: gpy0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy1: gpy1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy2: gpy2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy3: gpy3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy4: gpy4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy5: gpy5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy6: gpy6 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpc4: gpc4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx0: gpx0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
+                            <26 0>, <26 1>, <27 0>, <27 1>;
+       };
+
+       gpx1: gpx1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
+                            <30 0>, <30 1>, <31 0>, <31 1>;
+       };
+
+       gpx2: gpx2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx3: gpx3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa0-0", "gpa0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa0-2", "gpa0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_bus: i2c2-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_hs_bus: i2c2-hs-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpa1-0", "gpa1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_fctl: uart2-fctl {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_bus: i2c3-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_hs_bus: i2c3-hs-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpa1-4", "gpa1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c4_bus: i2c4-bus {
+               samsung,pins = "gpa2-0", "gpa2-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c5_bus: i2c5-bus {
+               samsung,pins = "gpa2-2", "gpa2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       ac97_bus: ac97-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm2_bus: pcm2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spdif_bus: spdif-bus {
+               samsung,pins = "gpb1-0", "gpb1-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi2_bus: spi2-bus {
+               samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c6_bus: i2c6-bus {
+               samsung,pins = "gpb1-3", "gpb1-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpb2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpb2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm2_out: pwm2-out {
+               samsung,pins = "gpb2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm3_out: pwm3-out {
+               samsung,pins = "gpb2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c7_bus: i2c7-bus {
+               samsung,pins = "gpb2-2", "gpb2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_hs_bus: i2c0-hs-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_hs_bus: i2c1-hs-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpc0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpc0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpc0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus1: sd0-bus-width1 {
+               samsung,pins = "gpc0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus4: sd0-bus-width4 {
+               samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus8: sd0-bus-width8 {
+               samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gpc2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gpc2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus1: sd1-bus-width1 {
+               samsung,pins = "gpc2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus4: sd1-bus-width4 {
+               samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpc3-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpc3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cd: sd2-cd {
+               samsung,pins = "gpc3-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus1: sd2-bus-width1 {
+               samsung,pins = "gpc3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus4: sd2-bus-width4 {
+               samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus8: sd2-bus-width8 {
+               samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_clk: sd3-clk {
+               samsung,pins = "gpc4-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cmd: sd3-cmd {
+               samsung,pins = "gpc4-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cd: sd3-cd {
+               samsung,pins = "gpc4-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus1: sd3-bus-width1 {
+               samsung,pins = "gpc4-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus4: sd3-bus-width4 {
+               samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpd0-0", "gpd0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpd0-2", "gpd0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       dp_hpd: dp_hpd {
+               samsung,pins = "gpx0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_1 {
+       gpe0: gpe0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe1: gpe1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph0: gph0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph1: gph1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       cam_gpio_a: cam-gpio-a {
+               samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
+                              "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
+                              "gpe1-0", "gpe1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_gpio_b: cam-gpio-b {
+               samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
+                              "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c2_bus: cam-i2c2-bus {
+               samsung,pins = "gpe0-6", "gpe1-0";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi1_bus: cam-spi1-bus {
+               samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c1_bus: cam-i2c1-bus {
+               samsung,pins = "gpf0-2", "gpf0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c0_bus: cam-i2c0-bus {
+               samsung,pins = "gpf0-0", "gpf0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi0_bus: cam-spi0-bus {
+               samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_bayrgb_bus: cam-bayrgb-bus {
+               samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
+                              "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
+                              "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
+                              "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
+                              "gpg2-0", "gpg2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_a: cam-port-a {
+               samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3",
+                              "gph1-0", "gph1-1", "gph1-2", "gph1-3",
+                              "gph1-4", "gph1-5", "gph1-6", "gph1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_2 {
+       gpv0: gpv0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv1: gpv1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv2: gpv2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv3: gpv3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv4: gpv4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       c2c_rxd: c2c-rxd {
+               samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3",
+                              "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7",
+                              "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3",
+                              "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       c2c_txd: c2c-txd {
+               samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3",
+                              "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7",
+                              "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3",
+                              "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_3 {
+       gpz: gpz {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
+                               "gpz-4", "gpz-5", "gpz-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
        };
 };
index 4fe186d01f8a52b52f9155d76b1496b7d586ed7e..15aea760c1dadee45c631d78c64366cea7739276 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &dp {
        samsung,color-space = <0>;
        samsung,dynamic-range = <0>;
index b7f4122df456b05438b8f719adaa9eb95a5dfb5f..0720caab5511112026a1d53156deae2cf6338345 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &dp {
        status = "okay";
        pinctrl-names = "default";
        status = "okay";
        samsung,spi-src-clk = <0>;
        num-cs = <1>;
+       cs-gpios = <&gpa2 5 GPIO_ACTIVE_HIGH>;
 };
 
 &usbdrd_dwc3 {
index d03f9b8d376d082308fa9e06c515f69ae83386c2..c1edd6d038a905dffd68e895cdafae25c967f160 100644 (file)
        };
 };
 
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 &dp {
        status = "okay";
        pinctrl-names = "default";
index bf9bee67c4167500b177bcabb01ab4b06b072ab5..b24610ea8c2a93619bfe75770b63d1b67b61d680 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <dt-bindings/clock/exynos5250.h>
 #include "exynos5.dtsi"
-#include "exynos5250-pinctrl.dtsi"
 #include "exynos4-cpu-thermal.dtsi"
 #include <dt-bindings/clock/exynos-audss-clk.h>
 
                        compatible = "arm,cortex-a15";
                        reg = <0>;
                        clock-frequency = <1700000000>;
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       clock-latency = <140000>;
+
+                       operating-points = <
+                               1700000 1300000
+                               1600000 1250000
+                               1500000 1225000
+                               1400000 1200000
+                               1300000 1150000
+                               1200000 1125000
+                               1100000 1100000
+                               1000000 1075000
+                                900000 1050000
+                                800000 1025000
+                                700000 1012500
+                                600000 1000000
+                                500000  975000
+                                400000  950000
+                                300000  937500
+                                200000  925000
+                       >;
                        cooling-min-level = <15>;
                        cooling-max-level = <9>;
                        #cooling-cells = <2>; /* min followed by max */
        clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
        clock-names = "uart", "clk_uart_baud0";
 };
+
+#include "exynos5250-pinctrl.dtsi"
index be3e02530b42881b2cbe6e35d7d16f0a4f547b77..cebeaab3abecd4177566e45d614ef6da6d8405ab 100644 (file)
 };
 
 &uart0 {
-               status = "okay";
+       status = "okay";
 };
 
 &uart1 {
-               status = "okay";
+       status = "okay";
 };
 
 &uart2 {
-               status = "okay";
+       status = "okay";
 };
index 8b153166ebdb430e6c827ab1a80d5bd9da316e47..130563b2ca95b6de7b365d7c93e124c9e5e8edc0 100644 (file)
  * published by the Free Software Foundation.
 */
 
-/ {
-       pinctrl@13400000 {
-               gpy7: gpy7 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx0: gpx0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
-                                    <26 0>, <26 1>, <27 0>, <27 1>;
-               };
-
-               gpx1: gpx1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
-                                    <30 0>, <30 1>, <31 0>, <31 1>;
-               };
-
-               gpx2: gpx2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx3: gpx3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               dp_hpd: dp_hpd {
-                       samsung,pins = "gpx0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@13410000 {
-               gpc0: gpc0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc1: gpc1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc2: gpc2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc3: gpc3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc4: gpc4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd1: gpd1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpy0: gpy0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy1: gpy1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy2: gpy2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy3: gpy3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy4: gpy4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy5: gpy5 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy6: gpy6 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               sd0_clk: sd0-clk {
-                       samsung,pins = "gpc0-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cmd: sd0-cmd {
-                       samsung,pins = "gpc0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cd: sd0-cd {
-                       samsung,pins = "gpc0-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus1: sd0-bus-width1 {
-                       samsung,pins = "gpc0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus4: sd0-bus-width4 {
-                       samsung,pins = "gpc0-4", "gpc0-5", "gpc0-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus8: sd0-bus-width8 {
-                       samsung,pins = "gpc3-0", "gpc3-1", "gpc3-2", "gpc3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_clk: sd1-clk {
-                       samsung,pins = "gpc1-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_rclk: sd0-rclk {
-                       samsung,pins = "gpc0-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <1>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cmd: sd1-cmd {
-                       samsung,pins = "gpc1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cd: sd1-cd {
-                       samsung,pins = "gpc1-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_int: sd1-int {
-                       samsung,pins = "gpd1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               sd1_bus1: sd1-bus-width1 {
-                       samsung,pins = "gpc1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus4: sd1-bus-width4 {
-                       samsung,pins = "gpc1-4", "gpc1-5", "gpc1-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus8: sd1-bus-width8 {
-                       samsung,pins = "gpd1-4", "gpd1-5", "gpd1-6", "gpd1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_clk: sd2-clk {
-                       samsung,pins = "gpc2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cmd: sd2-cmd {
-                       samsung,pins = "gpc2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cd: sd2-cd {
-                       samsung,pins = "gpc2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus1: sd2-bus-width1 {
-                       samsung,pins = "gpc2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus4: sd2-bus-width4 {
-                       samsung,pins = "gpc2-4", "gpc2-5", "gpc2-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-       };
-
-       pinctrl@14000000 {
-               gpe0: gpe0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpe1: gpe1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf0: gpf0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf1: gpf1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg0: gpg0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg1: gpg1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg2: gpg2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpj4: gpj4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               cam_gpio_a: cam-gpio-a {
-                       samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
-                                      "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
-                                      "gpe1-0", "gpe1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_gpio_b: cam-gpio-b {
-                       samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
-                                      "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c2_bus: cam-i2c2-bus {
-                       samsung,pins = "gpf0-4", "gpf0-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-               cam_spi1_bus: cam-spi1-bus {
-                       samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c1_bus: cam-i2c1-bus {
-                       samsung,pins = "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c0_bus: cam-i2c0-bus {
-                       samsung,pins = "gpf0-0", "gpf0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi0_bus: cam-spi0-bus {
-                       samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_bayrgb_bus: cam-bayrgb-bus {
-                       samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
-                                      "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
-                                      "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
-                                      "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
-                                      "gpg2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@14010000 {
-               gpa0: gpa0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa1: gpa1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa2: gpa2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb0: gpb0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb1: gpb1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb2: gpb2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb3: gpb3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb4: gpb4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph0: gph0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               uart0_data: uart0-data {
-                       samsung,pins = "gpa0-0", "gpa0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart0_fctl: uart0-fctl {
-                       samsung,pins = "gpa0-2", "gpa0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_data: uart1-data {
-                       samsung,pins = "gpa0-4", "gpa0-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_fctl: uart1-fctl {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_bus: i2c2-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_data: uart2-data {
-                       samsung,pins = "gpa1-0", "gpa1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_fctl: uart2-fctl {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_bus: i2c3-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart3_data: uart3-data {
-                       samsung,pins = "gpa1-4", "gpa1-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi0_bus: spi0-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1", "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi1_bus: spi1-bus {
-                       samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c4_hs_bus: i2c4-hs-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c5_hs_bus: i2c5-hs-bus {
-                       samsung,pins = "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s1_bus: i2s1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm1_bus: pcm1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s2_bus: i2s2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm2_bus: pcm2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spdif_bus: spdif-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi2_bus: spi2-bus {
-                       samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <5>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c6_hs_bus: i2c6-hs-bus {
-                       samsung,pins = "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm0_out: pwm0-out {
-                       samsung,pins = "gpb2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm1_out: pwm1-out {
-                       samsung,pins = "gpb2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm2_out: pwm2-out {
-                       samsung,pins = "gpb2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm3_out: pwm3-out {
-                       samsung,pins = "gpb2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c7_hs_bus: i2c7-hs-bus {
-                       samsung,pins = "gpb2-2", "gpb2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_bus: i2c0-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_bus: i2c1-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c8_hs_bus: i2c8-hs-bus {
-                       samsung,pins = "gpb3-4", "gpb3-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c9_hs_bus: i2c9-hs-bus {
-                       samsung,pins = "gpb3-6", "gpb3-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c10_hs_bus: i2c10-hs-bus {
-                       samsung,pins = "gpb4-0", "gpb4-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@03860000 {
-               gpz: gpz {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               i2s0_bus: i2s0-bus {
-                       samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
-                                       "gpz-4", "gpz-5", "gpz-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
+&pinctrl_0 {
+       gpy7: gpy7 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx0: gpx0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
+                            <26 0>, <26 1>, <27 0>, <27 1>;
+       };
+
+       gpx1: gpx1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
+                            <30 0>, <30 1>, <31 0>, <31 1>;
+       };
+
+       gpx2: gpx2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx3: gpx3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       dp_hpd: dp_hpd {
+               samsung,pins = "gpx0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_1 {
+       gpc0: gpc0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc2: gpc2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc3: gpc3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc4: gpc4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpy0: gpy0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy1: gpy1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy2: gpy2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy3: gpy3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy4: gpy4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy5: gpy5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy6: gpy6 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpc0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpc0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpc0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus1: sd0-bus-width1 {
+               samsung,pins = "gpc0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus4: sd0-bus-width4 {
+               samsung,pins = "gpc0-4", "gpc0-5", "gpc0-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus8: sd0-bus-width8 {
+               samsung,pins = "gpc3-0", "gpc3-1", "gpc3-2", "gpc3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gpc1-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_rclk: sd0-rclk {
+               samsung,pins = "gpc0-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <1>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gpc1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpc1-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_int: sd1-int {
+               samsung,pins = "gpd1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       sd1_bus1: sd1-bus-width1 {
+               samsung,pins = "gpc1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus4: sd1-bus-width4 {
+               samsung,pins = "gpc1-4", "gpc1-5", "gpc1-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus8: sd1-bus-width8 {
+               samsung,pins = "gpd1-4", "gpd1-5", "gpd1-6", "gpd1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpc2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpc2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cd: sd2-cd {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus1: sd2-bus-width1 {
+               samsung,pins = "gpc2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus4: sd2-bus-width4 {
+               samsung,pins = "gpc2-4", "gpc2-5", "gpc2-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+};
+
+&pinctrl_2 {
+       gpe0: gpe0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe1: gpe1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj4: gpj4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       cam_gpio_a: cam-gpio-a {
+               samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
+                              "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
+                              "gpe1-0", "gpe1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_gpio_b: cam-gpio-b {
+               samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
+                              "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c2_bus: cam-i2c2-bus {
+               samsung,pins = "gpf0-4", "gpf0-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi1_bus: cam-spi1-bus {
+               samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c1_bus: cam-i2c1-bus {
+               samsung,pins = "gpf0-2", "gpf0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c0_bus: cam-i2c0-bus {
+               samsung,pins = "gpf0-0", "gpf0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi0_bus: cam-spi0-bus {
+               samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_bayrgb_bus: cam-bayrgb-bus {
+               samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
+                              "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
+                              "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
+                              "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
+                              "gpg2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_3 {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa2: gpa2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb0: gpb0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb4: gpb4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph0: gph0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa0-0", "gpa0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa0-2", "gpa0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpa0-4", "gpa0-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_bus: i2c2-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpa1-0", "gpa1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_fctl: uart2-fctl {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_bus: i2c3-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpa1-4", "gpa1-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpa2-0", "gpa2-1", "gpa2-2", "gpa2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c4_hs_bus: i2c4-hs-bus {
+               samsung,pins = "gpa2-0", "gpa2-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c5_hs_bus: i2c5-hs-bus {
+               samsung,pins = "gpa2-2", "gpa2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm2_bus: pcm2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spdif_bus: spdif-bus {
+               samsung,pins = "gpb1-0", "gpb1-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi2_bus: spi2-bus {
+               samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c6_hs_bus: i2c6-hs-bus {
+               samsung,pins = "gpb1-3", "gpb1-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpb2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpb2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm2_out: pwm2-out {
+               samsung,pins = "gpb2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm3_out: pwm3-out {
+               samsung,pins = "gpb2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c7_hs_bus: i2c7-hs-bus {
+               samsung,pins = "gpb2-2", "gpb2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c8_hs_bus: i2c8-hs-bus {
+               samsung,pins = "gpb3-4", "gpb3-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c9_hs_bus: i2c9-hs-bus {
+               samsung,pins = "gpb3-6", "gpb3-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c10_hs_bus: i2c10-hs-bus {
+               samsung,pins = "gpb4-0", "gpb4-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_4 {
+       gpz: gpz {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
+                               "gpz-4", "gpz-5", "gpz-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
        };
 };
index 534f27ceb10b04f0c7a485029827ba2620a88ca3..df9aee92ecf4d71c714e763665013e7d2f6f4591 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <dt-bindings/clock/exynos5420.h>
 #include "exynos5.dtsi"
-#include "exynos5420-pinctrl.dtsi"
 
 #include <dt-bindings/clock/exynos-audss-clk.h>
 
        clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
        clock-names = "uart", "clk_uart_baud0";
 };
+
+#include "exynos5420-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
new file mode 100644 (file)
index 0000000..2b289d7
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Device tree sources for Exynos5422 thermal zone
+ *
+ * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
+ *                     Anand Moon <linux.amoon@gmail.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.
+ *
+ */
+
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       thermal-zones {
+               cpu0_thermal: cpu0-thermal {
+                       thermal-sensors = <&tmu_cpu0 0>;
+                       polling-delay-passive = <0>;
+                       polling-delay = <0>;
+                       trips {
+                               cpu_alert0: cpu-alert-0 {
+                                       temperature = <50000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_alert1: cpu-alert-1 {
+                                       temperature = <60000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_alert2: cpu-alert-2 {
+                                       temperature = <70000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_crit0: cpu-crit-0 {
+                                       temperature = <120000>; /* millicelsius */
+                                       hysteresis = <0>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+                       cooling-maps {
+                               map0 {
+                                    trip = <&cpu_alert0>;
+                                    cooling-device = <&fan0 0 1>;
+                               };
+                               map1 {
+                                    trip = <&cpu_alert1>;
+                                    cooling-device = <&fan0 1 2>;
+                               };
+                               map2 {
+                                    trip = <&cpu_alert2>;
+                                    cooling-device = <&fan0 2 3>;
+                               };
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/exynos5422-cpus.dtsi b/arch/arm/boot/dts/exynos5422-cpus.dtsi
new file mode 100644 (file)
index 0000000..b7f60c8
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * SAMSUNG EXYNOS5422 SoC cpu device tree source
+ *
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * The only difference between EXYNOS5422 and EXYNOS5800 is cpu ordering. The
+ * EXYNOS5422 is booting from Cortex-A7 core while the EXYNOS5800 is booting
+ * from Cortex-A15 core.
+ *
+ * EXYNOS5422 based board files can include this file to provide cpu ordering
+ * which could boot a cortex-a7 from cpu0.
+ *
+ * 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.
+ */
+
+&cpu0 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a7";
+       reg = <0x100>;
+       clock-frequency = <1000000000>;
+       cci-control-port = <&cci_control0>;
+};
+
+&cpu1 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a7";
+       reg = <0x101>;
+       clock-frequency = <1000000000>;
+       cci-control-port = <&cci_control0>;
+};
+
+&cpu2 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a7";
+       reg = <0x102>;
+       clock-frequency = <1000000000>;
+       cci-control-port = <&cci_control0>;
+};
+
+&cpu3 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a7";
+       reg = <0x103>;
+       clock-frequency = <1000000000>;
+       cci-control-port = <&cci_control0>;
+};
+
+&cpu4 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a15";
+       reg = <0x0>;
+       clock-frequency = <1800000000>;
+       cci-control-port = <&cci_control1>;
+};
+
+&cpu5 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a15";
+       reg = <0x1>;
+       clock-frequency = <1800000000>;
+       cci-control-port = <&cci_control1>;
+};
+
+&cpu6 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a15";
+       reg = <0x2>;
+       clock-frequency = <1800000000>;
+       cci-control-port = <&cci_control1>;
+};
+
+&cpu7 {
+       device_type = "cpu";
+       compatible = "arm,cortex-a15";
+       reg = <0x3>;
+       clock-frequency = <1800000000>;
+       cci-control-port = <&cci_control1>;
+};
index 8adf455744e9c8d0545fe69cd0038b9f1f450d16..79ffdfe712aa4a8ad193d4afd671962edfb73646 100644 (file)
@@ -15,6 +15,8 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/sound/samsung-i2s.h>
 #include "exynos5800.dtsi"
+#include "exynos5422-cpus.dtsi"
+#include "exynos5422-cpu-thermal.dtsi"
 
 / {
        memory {
                        clocks = <&i2s0 CLK_I2S_CDCLK>;
                };
        };
+
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm 0 20972 0>;
+               cooling-min-state = <0>;
+               cooling-max-state = <3>;
+               #cooling-cells = <2>;
+               cooling-levels = <0 130 170 230>;
+       };
 };
 
 &clock_audss {
         */
        pinctrl-0 = <&pwm0_out &pwm1_out &pwm2_out &pwm3_out>;
        pinctrl-names = "default";
+       samsung,pwm-outputs = <0>;
+       status = "okay";
+};
+
+&tmu_cpu0 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu1 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu2 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu3 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_gpu {
+       vtmu-supply = <&ldo7_reg>;
        status = "okay";
 };
 
 &usbdrd_dwc3_1 {
        dr_mode = "otg";
 };
+
+&usbdrd3_0 {
+       vdd33-supply = <&ldo9_reg>;
+       vdd10-supply = <&ldo11_reg>;
+};
+
+&usbdrd3_1 {
+       vdd33-supply = <&ldo9_reg>;
+       vdd10-supply = <&ldo11_reg>;
+};
index 71512b3ca4443c7e12dfb106a442e73921c81ac5..47c0282bdfca7ce11a8ce0e05119f8df229b9a4f 100644 (file)
@@ -4,6 +4,14 @@
        model = "CompuLab CM-QS600";
        compatible = "qcom,apq8064-cm-qs600", "qcom,apq8064";
 
+       aliases {
+               serial0 = &gsbi7_serial;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                pinctrl@800000 {
                        i2c1_pins: i2c1 {
                                        bias-pull-down;
                                };
 
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
                                pm8921_l23: l23 {
                                        regulator-min-microvolt = <1700000>;
                                        regulator-max-microvolt = <1900000>;
                        status = "okay";
                };
 
+               /* on board fixed 3.3v supply */
+               v3p3_fixed: v3p3 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "PCIE V3P3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
                amba {
                        /* eMMC */
                        sdcc1: sdcc@12400000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l5>;
+                               vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
                        sdcc3: sdcc@12180000 {
                                status = "okay";
+                               vmmc-supply = <&v3p3_fixed>;
                        };
                        /* WLAN */
                        sdcc4: sdcc@121c0000 {
                                status = "okay";
+                               vmmc-supply = <&v3p3_fixed>;
+                               vqmmc-supply = <&v3p3_fixed>;
                        };
                };
        };
index a7c939ba88730bf7b1e7076dc9b592e9d2b5577d..f3100da082b2a3cbe1a1229a1f6be0a21ab4ca5a 100644 (file)
@@ -7,6 +7,11 @@
 
        aliases {
                serial0 = &gsbi7_serial;
+               serial1 = &gsbi6_serial;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
        };
 
        soc {
                                        bias-pull-down;
                                };
 
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
                                pm8921_l6: l6 {
                                        regulator-min-microvolt = <2950000>;
                                        regulator-max-microvolt = <2950000>;
                                        regulator-max-microvolt = <1900000>;
                                        bias-pull-down;
                                };
+
+                               pm8921_lvs1: lvs1 {
+                                       bias-pull-down;
+                               };
                        };
                };
 
+               ext_3p3v: regulator-fixed@1 {
+                       compatible = "regulator-fixed";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-name = "ext_3p3v";
+                       regulator-type = "voltage";
+                       startup-delay-us = <0>;
+                       gpio = <&tlmm_pinmux 77 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       regulator-boot-on;
+               };
+
                gsbi3: gsbi@16200000 {
                        status = "okay";
                        qcom,mode = <GSBI_PROT_I2C>;
                        };
                };
 
+               gsbi@16500000 {
+                       status = "ok";
+                       qcom,mode = <GSBI_PROT_I2C_UART>;
+
+                       serial@16540000 {
+                               status = "ok";
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart_pins>;
+                       };
+               };
+
                gsbi@16600000 {
                        status = "ok";
                        qcom,mode = <GSBI_PROT_I2C_UART>;
                        /* eMMC */
                        sdcc1: sdcc@12400000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l5>;
+                               vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
                        sdcc3: sdcc@12180000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l6>;
                                pinctrl-names   = "default";
                                pinctrl-0       = <&card_detect>;
                                cd-gpios        = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
                        /* WLAN */
                        sdcc4: sdcc@121c0000 {
                                status = "okay";
+                               vmmc-supply = <&ext_3p3v>;
+                               vqmmc-supply = <&pm8921_lvs1>;
                        };
                };
        };
index df2061ec630d16e71165d78ce71a8a4a32092271..d2e94d647c27936c682c7a4d6bb9033c769173e7 100644 (file)
@@ -6,7 +6,6 @@
 #include <dt-bindings/clock/qcom,mmcc-msm8960.h>
 #include <dt-bindings/soc/qcom,gsbi.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-
 / {
        model = "Qualcomm APQ8064";
        compatible = "qcom,apq8064";
                                        function = "gsbi3";
                                };
                        };
+
+                       uart_pins: uart_pins {
+                               mux {
+                                       pins = "gpio14", "gpio15", "gpio16", "gpio17";
+                                       function = "gsbi6";
+                               };
+                       };
                };
 
                intc: interrupt-controller@2000000 {
                gsbi3: gsbi@16200000 {
                        status = "disabled";
                        compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <3>;
                        reg = <0x16200000 0x100>;
                        clocks = <&gcc GSBI3_H_CLK>;
                        clock-names = "iface";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-
                        i2c3: i2c@16280000 {
                                compatible = "qcom,i2c-qup-v1.1.1";
                                reg = <0x16280000 0x1000>;
                        };
                };
 
+               gsbi6: gsbi@16500000 {
+                       status = "disabled";
+                       compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <6>;
+                       reg = <0x16500000 0x03>;
+                       clocks = <&gcc GSBI6_H_CLK>;
+                       clock-names = "iface";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       gsbi6_serial: serial@16540000 {
+                               compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
+                               reg = <0x16540000 0x100>,
+                                     <0x16500000 0x03>;
+                               interrupts = <0 156 0x0>;
+                               clocks = <&gcc GSBI6_UART_CLK>, <&gcc GSBI6_H_CLK>;
+                               clock-names = "core", "iface";
+                               status = "disabled";
+                       };
+               };
+
                gsbi7: gsbi@16600000 {
                        status = "disabled";
                        compatible = "qcom,gsbi-v1.0.0";
                        compatible = "qcom,ssbi";
                        reg = <0x00500000 0x1000>;
                        qcom,controller-type = "pmic-arbiter";
+
+                       pmicintc: pmic@0 {
+                               compatible = "qcom,pm8921";
+                               interrupt-parent = <&tlmm_pinmux>;
+                               interrupts = <74 8>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               pm8921_gpio: gpio@150 {
+
+                                       compatible = "qcom,pm8921-gpio";
+                                       reg = <0x150>;
+                                       interrupts = <192 1>, <193 1>, <194 1>,
+                                                    <195 1>, <196 1>, <197 1>,
+                                                    <198 1>, <199 1>, <200 1>,
+                                                    <201 1>, <202 1>, <203 1>,
+                                                    <204 1>, <205 1>, <206 1>,
+                                                    <207 1>, <208 1>, <209 1>,
+                                                    <210 1>, <211 1>, <212 1>,
+                                                    <213 1>, <214 1>, <215 1>,
+                                                    <216 1>, <217 1>, <218 1>,
+                                                    <219 1>, <220 1>, <221 1>,
+                                                    <222 1>, <223 1>, <224 1>,
+                                                    <225 1>, <226 1>, <227 1>,
+                                                    <228 1>, <229 1>, <230 1>,
+                                                    <231 1>, <232 1>, <233 1>,
+                                                    <234 1>, <235 1>;
+
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+
+                               };
+
+                               pm8921_mpps: mpps@50 {
+                                       compatible = "qcom,pm8921-mpp";
+                                       reg = <0x50>;
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       interrupts =
+                                       <128 1>, <129 1>, <130 1>, <131 1>,
+                                       <132 1>, <133 1>, <134 1>, <135 1>,
+                                       <136 1>, <137 1>, <138 1>, <139 1>;
+                               };
+
+                       };
                };
 
                gcc: clock-controller@900000 {
                };
 
                /* Temporary fixed regulator */
-               vsdcc_fixed: vsdcc-regulator {
-                       compatible = "regulator-fixed";
-                       regulator-name = "SDCC Power";
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <2700000>;
-                       regulator-always-on;
-               };
-
                sdcc1bam:dma@12402000{
                        compatible = "qcom,bam-v1.3.0";
                        reg = <0x12402000 0x8000>;
                                non-removable;
                                cap-sd-highspeed;
                                cap-mmc-highspeed;
-                               vmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc1bam 2>, <&sdcc1bam 1>;
                                dma-names = "tx", "rx";
                        };
                                cap-mmc-highspeed;
                                max-frequency   = <192000000>;
                                no-1-8-v;
-                               vmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
                                dma-names = "tx", "rx";
                        };
                                cap-sd-highspeed;
                                cap-mmc-highspeed;
                                max-frequency   = <48000000>;
-                               vmmc-supply = <&vsdcc_fixed>;
-                               vqmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc4bam 2>, <&sdcc4bam 1>;
                                dma-names = "tx", "rx";
                                pinctrl-names = "default";
index d484d08163e9415557e17d05e34c567c7e2d9de1..835bdc71c5ba4e7db71642305e541f5e203d4758 100644 (file)
@@ -6,6 +6,14 @@
        model = "Qualcomm APQ8074 Dragonboard";
        compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
 
+       aliases {
+               serial0 = &blsp1_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                serial@f991e000 {
                        status = "ok";
index f7725b96612c65475fec7f67445f4afb54c19e81..c9c2b769554f84d91b0a535e98fb1a070cf6b232 100644 (file)
@@ -5,6 +5,14 @@
        model = "Qualcomm APQ8084/IFC6540";
        compatible = "qcom,apq8084-ifc6540", "qcom,apq8084";
 
+       aliases {
+               serial0 = &blsp2_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                serial@f995e000 {
                        status = "okay";
index cb43acfc5d1d9d0773243d42874d5bd1f5243e4f..3016c7048d446cb5ee1e0810b37986663eb20398 100644 (file)
@@ -5,6 +5,14 @@
        model = "Qualcomm APQ 8084-MTP";
        compatible = "qcom,apq8084-mtp", "qcom,apq8084";
 
+       aliases {
+               serial0 = &blsp2_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                serial@f995e000 {
                        status = "okay";
index 7084010ee61ba463024a9e4ba5d48caf327e3c05..0554fbd72c40ba78f0c7205cdd050821d8b52b43 100644 (file)
                        interrupts = <0 208 0>;
                };
 
-               serial@f995e000 {
+               blsp2_uart2: serial@f995e000 {
                        compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                        reg = <0xf995e000 0x1000>;
                        interrupts = <0 114 0x0>;
index 55b2910efd872170ca19a99d867be4a34dd60794..d501382493e3d6eb97f4a4ec3635734240180922 100644 (file)
@@ -4,6 +4,14 @@
        model = "Qualcomm IPQ8064/AP148";
        compatible = "qcom,ipq8064-ap148", "qcom,ipq8064";
 
+       aliases {
+               serial0 = &gsbi4_serial;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        reserved-memory {
                #address-cells = <1>;
                #size-cells = <1>;
index 9f727d8eadf6998561e748e0400e46299417f9b3..fa698635eea0d1f859d57c766c679438a416b55d 100644 (file)
 
                        syscon-tcsr = <&tcsr>;
 
-                       serial@16340000 {
+                       gsbi4_serial: serial@16340000 {
                                compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
                                reg = <0x16340000 0x1000>,
                                      <0x16300000 0x1000>;
index e0883c376248073158153de3341b6bae038c58f9..b17f379e8c2afe3f92fe1f905fbe501fccad9118 100644 (file)
@@ -6,6 +6,14 @@
        model = "Qualcomm MSM8660 SURF";
        compatible = "qcom,msm8660-surf", "qcom,msm8660";
 
+       aliases {
+               serial0 = &gsbi12_serial;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                gsbi@19c00000 {
                        status = "ok";
index e0b2ce2910e0aeef770230ac727effc79236dc39..e5f7f33aa4677739f9bc1e6d57d969db9b856cf9 100644 (file)
                        cpu-offset = <0x40000>;
                };
 
-               msmgpio: gpio@800000 {
-                       compatible = "qcom,msm-gpio";
-                       reg = <0x00800000 0x4000>;
+               tlmm: pinctrl@800000 {
+                       compatible = "qcom,msm8660-pinctrl";
+                       reg = <0x800000 0x4000>;
+
                        gpio-controller;
                        #gpio-cells = <2>;
-                       ngpio = <173>;
                        interrupts = <0 16 0x4>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
+
                };
 
                gcc: clock-controller@900000 {
@@ -97,7 +98,7 @@
 
                        syscon-tcsr = <&tcsr>;
 
-                       serial@19c40000 {
+                       gsbi12_serial: serial@19c40000 {
                                compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
                                reg = <0x19c40000 0x1000>,
                                      <0x19c00000 0x1000>;
 
                        pmicintc: pmic@0 {
                                compatible = "qcom,pm8058";
-                               interrupt-parent = <&msmgpio>;
+                               interrupt-parent = <&tlmm>;
                                interrupts = <88 8>;
                                #interrupt-cells = <2>;
                                interrupt-controller;
index 7f70fae90959ea54fc11fb29c944cebb0b468f66..b72a55462caf1b2aaf99d8a293ad47c79ef7858d 100644 (file)
@@ -6,6 +6,14 @@
        model = "Qualcomm MSM8960 CDP";
        compatible = "qcom,msm8960-cdp", "qcom,msm8960";
 
+       aliases {
+               serial0 = &gsbi5_serial;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        soc {
                gsbi@16400000 {
                        status = "ok";
                                status = "okay";
                        };
                };
+
+               rpm@108000 {
+                       regulators {
+                               compatible = "qcom,rpm-pm8921-regulators";
+                               vin_lvs1_3_6-supply = <&pm8921_s4>;
+                               vin_lvs2-supply = <&pm8921_s4>;
+                               vin_lvs4_5_7-supply = <&pm8921_s4>;
+                               vdd_ncp-supply = <&pm8921_l6>;
+                               vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
+                               vdd_l21_l23_l29-supply = <&pm8921_s8>;
+                               vdd_l24-supply = <&pm8921_s1>;
+                               vdd_l25-supply = <&pm8921_s1>;
+                               vdd_l27-supply = <&pm8921_s7>;
+                               vdd_l28-supply = <&pm8921_s7>;
+
+                               /* Buck SMPS */
+                               pm8921_s1: s1 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1225000>;
+                                       regulator-max-microvolt = <1225000>;
+                                       qcom,switch-mode-frequency = <3200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s2: s2 {
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s3: s3 {
+                                       regulator-min-microvolt = <500000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       qcom,switch-mode-frequency = <4800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s4: s4 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                                       qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
+                               };
+
+                               pm8921_s7: s7 {
+                                       regulator-min-microvolt = <1150000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       qcom,switch-mode-frequency = <3200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s8: s8 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <2050000>;
+                                       regulator-max-microvolt = <2050000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                               };
+
+                               /* PMOS LDO */
+                               pm8921_l1: l1 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l2: l2 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l3: l3 {
+                                       regulator-min-microvolt = <3075000>;
+                                       regulator-max-microvolt = <3075000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l4: l4 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l6: l6 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l7: l7 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1850000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l8: l8 {
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l9: l9 {
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l10: l10 {
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l11: l11 {
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l12: l12 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l14: l14 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l15: l15 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l16: l16 {
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l17: l17 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l18: l18 {
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l21: l21 {
+                                       regulator-min-microvolt = <1900000>;
+                                       regulator-max-microvolt = <1900000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l22: l22 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <2750000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l23: l23 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l24: l24 {
+                                       regulator-min-microvolt = <750000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l25: l25 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1250000>;
+                                       regulator-max-microvolt = <1250000>;
+                                       bias-pull-down;
+                               };
+
+                               /* Low Voltage Switch */
+                               pm8921_lvs1: lvs1 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs2: lvs2 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs3: lvs3 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs4: lvs4 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs5: lvs5 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs6: lvs6 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs7: lvs7 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_ncp: ncp {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                               };
+                       };
+               };
+
+               gsbi@16000000 {
+                       status = "ok";
+                       qcom,mode = <GSBI_PROT_SPI>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi1_default>;
+                       spi@16080000 {
+                               status = "ok";
+                               eth@0 {
+                                       compatible = "micrel,ks8851";
+                                       reg = <0>;
+                                       interrupt-parent = <&msmgpio>;
+                                       interrupts = <90 8>;
+                                       spi-max-frequency = <5400000>;
+                                       vdd-supply = <&ext_l2>;
+                                       vdd-io-supply = <&pm8921_lvs6>;
+                                       reset-gpios = <&msmgpio 89 0>;
+                               };
+                       };
+               };
+
+               pinctrl@800000 {
+                       spi1_default: spi1_default {
+                               mux {
+                                       pins = "gpio6", "gpio7", "gpio9";
+                                       function = "gsbi1";
+                               };
+
+                               mosi {
+                                       pins = "gpio6";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+
+                               miso {
+                                       pins = "gpio7";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+
+                               cs {
+                                       pins = "gpio8";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                                       output-low;
+                               };
+
+                               clk {
+                                       pins = "gpio9";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+                       };
+               };
+       };
+
+       regulators {
+               compatible = "simple-bus";
+
+               ext_l2: gpio-regulator@91 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "ext_l2";
+                       gpio = <&msmgpio 91 0>;
+                       startup-delay-us = <10000>;
+                       enable-active-high;
+               };
        };
 };
 
index a02b984cc68d8e2704abcb175e54c061ed54f629..134cd91d68ece1034077c0e36f154756f6143cb6 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-msm8960.h>
+#include <dt-bindings/mfd/qcom-rpm.h>
 #include <dt-bindings/soc/qcom,gsbi.h>
 
 / {
                        cpu-offset = <0x80000>;
                };
 
-               msmgpio: gpio@800000 {
-                       compatible = "qcom,msm-gpio";
+               msmgpio: pinctrl@800000 {
+                       compatible = "qcom,msm8960-pinctrl";
                        gpio-controller;
                        #gpio-cells = <2>;
-                       ngpio = <150>;
                        interrupts = <0 16 0x4>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        #reset-cells = <1>;
                };
 
+               l2cc: clock-controller@2011000 {
+                       compatible      = "syscon";
+                       reg             = <0x2011000 0x1000>;
+               };
+
+               rpm@108000 {
+                       compatible      = "qcom,rpm-msm8960";
+                       reg             = <0x108000 0x1000>;
+                       qcom,ipc        = <&l2cc 0x8 2>;
+
+                       interrupts      = <0 19 0>, <0 21 0>, <0 22 0>;
+                       interrupt-names = "ack", "err", "wakeup";
+
+                       regulators {
+                               compatible = "qcom,rpm-pm8921-regulators";
+                       };
+               };
+
                acc0: clock-controller@2088000 {
                        compatible = "qcom,kpss-acc-v1";
                        reg = <0x02088000 0x1000>, <0x02008000 0x1000>;
 
                        syscon-tcsr = <&tcsr>;
 
-                       serial@16440000 {
+                       gsbi5_serial: serial@16440000 {
                                compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
                                reg = <0x16440000 0x1000>,
                                      <0x16400000 0x1000>;
                        compatible = "qcom,tcsr-msm8960", "syscon";
                        reg = <0x1a400000 0x100>;
                };
+
+               gsbi@16000000 {
+                       compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <1>;
+                       reg = <0x16000000 0x100>;
+                       clocks = <&gcc GSBI1_H_CLK>;
+                       clock-names = "iface";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       spi@16080000 {
+                               compatible = "qcom,spi-qup-v1.1.1";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x16080000 0x1000>;
+                               interrupts = <0 147 0>;
+                               spi-max-frequency = <24000000>;
+                               cs-gpios = <&msmgpio 8 0>;
+
+                               clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
+                               clock-names = "core", "iface";
+                               status = "disabled";
+                       };
+               };
        };
 };
index bd35b0674ff6894cd6518046d049b385e038a624..eb547f1f6a605616edb66e038f0bd024109d9254 100644 (file)
@@ -6,6 +6,14 @@
        model = "Sony Xperia Z1";
        compatible = "sony,xperia-honami", "qcom,msm8974";
 
+       aliases {
+               serial0 = &blsp1_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        memory@0 {
                reg = <0 0x40000000>, <0x40000000 0x40000000>;
                device_type = "memory";
index 37b47b5538b816bb51c251c521d58d18b7bbd806..ab8e5725046809e53b9ef7ce39b1f6ca33d35dcc 100644 (file)
@@ -9,6 +9,17 @@
        compatible = "qcom,msm8974";
        interrupt-parent = <&intc>;
 
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               smem_region: smem@fa00000 {
+                       reg = <0xfa00000 0x200000>;
+                       no-map;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        reg = <0xfc400000 0x4000>;
                };
 
+               tcsr_mutex_block: syscon@fd484000 {
+                       compatible = "syscon";
+                       reg = <0xfd484000 0x2000>;
+               };
+
                mmcc: clock-controller@fd8c0000 {
                        compatible = "qcom,mmcc-msm8974";
                        #clock-cells = <1>;
                        reg = <0xfd8c0000 0x6000>;
                };
 
-               serial@f991e000 {
+               tcsr_mutex: tcsr-mutex {
+                       compatible = "qcom,tcsr-mutex";
+                       syscon = <&tcsr_mutex_block 0 0x80>;
+
+                       #hwlock-cells = <1>;
+               };
+
+               smem@fa00000 {
+                       compatible = "qcom,smem";
+
+                       memory-region = <&smem_region>;
+                       reg = <0xfc428000 0x4000>;
+
+                       hwlocks = <&tcsr_mutex 3>;
+               };
+
+               blsp1_uart2: serial@f991e000 {
                        compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                        reg = <0xf991e000 0x1000>;
                        interrupts = <0 108 0x0>;
index 838b812cbda10c1ec991aa0a471a7956e1fbace2..eab3477e0a0e2f32f4f8c00303c3fd96230785dc 100644 (file)
@@ -9,7 +9,7 @@
 #include "stih407-pinctrl.dtsi"
 #include <dt-bindings/mfd/st-lpc.h>
 #include <dt-bindings/phy/phy.h>
-#include <dt-bindings/reset-controller/stih407-resets.h>
+#include <dt-bindings/reset/stih407-resets.h>
 #include <dt-bindings/interrupt-controller/irq-st.h>
 / {
        #address-cells = <1>;
index 19b019b5f30e6aab57d5a793c06a2fdc834b43d3..12427e651e5e947da74b11fabbc5ef4ed93c50d8 100644 (file)
@@ -10,7 +10,7 @@
 #include "stih415-clock.dtsi"
 #include "stih415-pinctrl.dtsi"
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/reset-controller/stih415-resets.h>
+#include <dt-bindings/reset/stih415-resets.h>
 / {
 
        L2: cache-controller {
index 9dca173e694a1c28715cdc196325c88f16c45cd0..9e3170ccd18c628f54d5896558c1646283c535da 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <dt-bindings/phy/phy.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/reset-controller/stih416-resets.h>
+#include <dt-bindings/reset/stih416-resets.h>
 #include <dt-bindings/interrupt-controller/irq-st.h>
 / {
        L2: cache-controller {
index 94b5dcabdeccddec2e6179abc87601bc0ed0ca03..090c5b25dbed59d2800a2121675f26f80f9dbf40 100644 (file)
@@ -73,7 +73,6 @@ CONFIG_SCSI=y
 CONFIG_BLK_DEV_SD=y
 # CONFIG_SCSI_LOWLEVEL is not set
 CONFIG_NETDEVICES=y
-CONFIG_ARM_AT91_ETHER=y
 CONFIG_MACB=y
 # CONFIG_NET_VENDOR_BROADCOM is not set
 CONFIG_DM9000=y
@@ -131,8 +130,18 @@ CONFIG_POWER_RESET=y
 CONFIG_WATCHDOG=y
 CONFIG_AT91SAM9X_WATCHDOG=y
 CONFIG_SSB=m
+CONFIG_MFD_ATMEL_HLCDC=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_SOC_CAMERA=y
+CONFIG_VIDEO_ATMEL_ISI=y
+CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_DRM=y
+CONFIG_DRM_ATMEL_HLCDC=y
+CONFIG_DRM_PANEL_SIMPLE=y
 CONFIG_FB=y
 CONFIG_FB_ATMEL=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
@@ -140,6 +149,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_BACKLIGHT_ATMEL_LCDC=y
 # CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_LOGO=y
@@ -186,6 +196,7 @@ CONFIG_IIO=y
 CONFIG_AT91_ADC=y
 CONFIG_PWM=y
 CONFIG_PWM_ATMEL=y
+CONFIG_PWM_ATMEL_HLCDC_PWM=y
 CONFIG_PWM_ATMEL_TCB=y
 CONFIG_EXT4_FS=y
 CONFIG_FANOTIFY=y
index 72233b9c9d07a36bf08d815aedf4d4a867d9152a..a7846d64b396d7a88b0b31894f4201ae5c29e55f 100644 (file)
@@ -1,4 +1,6 @@
 CONFIG_SYSVIPC=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=14
@@ -15,19 +17,25 @@ CONFIG_CRUNCH=y
 CONFIG_MACH_ADSSPHERE=y
 CONFIG_MACH_EDB9301=y
 CONFIG_MACH_EDB9302=y
+CONFIG_MACH_EDB9302A=y
 CONFIG_MACH_EDB9307=y
+CONFIG_MACH_EDB9307A=y
 CONFIG_MACH_EDB9312=y
 CONFIG_MACH_EDB9315=y
+CONFIG_MACH_EDB9315A=y
 CONFIG_MACH_GESBC9312=y
 CONFIG_MACH_MICRO9H=y
+CONFIG_MACH_MICRO9M=y
 CONFIG_MACH_MICRO9L=y
+CONFIG_MACH_MICRO9S=y
+CONFIG_MACH_SIM_ONE=y
+CONFIG_MACH_SNAPPER_CL15=y
 CONFIG_MACH_TS72XX=y
+CONFIG_MACH_VISION_EP9307=y
 CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/nfs ip=bootp"
-CONFIG_FPE_NWFPE=y
-CONFIG_FPE_NWFPE_XP=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -74,11 +82,18 @@ CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_I2C=y
 CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_GPIO=y
 CONFIG_I2C_DEBUG_CORE=y
 CONFIG_I2C_DEBUG_ALGO=y
 CONFIG_I2C_DEBUG_BUS=y
+CONFIG_SPI=y
+CONFIG_SPI_EP93XX=y
 CONFIG_WATCHDOG=y
 CONFIG_EP93XX_WATCHDOG=y
+CONFIG_FB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_EP93XX=y
+CONFIG_LOGO=y
 CONFIG_USB=y
 CONFIG_USB_DYNAMIC_MINORS=y
 CONFIG_USB_OHCI_HCD=y
@@ -87,13 +102,23 @@ CONFIG_USB_STORAGE=y
 CONFIG_USB_SERIAL=y
 CONFIG_USB_SERIAL_CONSOLE=y
 CONFIG_USB_SERIAL_PL2303=y
+CONFIG_MMC=y
+CONFIG_MMC_SPI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_M48T86=y
 CONFIG_RTC_DRV_EP93XX=y
+CONFIG_DMADEVICES=y
+CONFIG_EP93XX_DMA=y
 CONFIG_EXT2_FS=y
 CONFIG_EXT3_FS=y
 # CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_TMPFS=y
 CONFIG_JFFS2_FS=y
index 9504e779028834deaa29731f24c9f4adf63aa24a..2263cd94cb93491c51bb0f46a15dcfed45051a3f 100644 (file)
@@ -27,6 +27,8 @@ CONFIG_ARM_APPENDED_DTB=y
 CONFIG_ARM_ATAG_DTB_COMPAT=y
 CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc mem=256M"
 CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPUFREQ_DT=y
 CONFIG_CPU_IDLE=y
 CONFIG_ARM_EXYNOS_CPUIDLE=y
 CONFIG_VFP=y
@@ -94,6 +96,7 @@ CONFIG_CHARGER_MAX14577=y
 CONFIG_CHARGER_MAX77693=y
 CONFIG_CHARGER_TPS65090=y
 CONFIG_SENSORS_LM90=y
+CONFIG_SENSORS_NTC_THERMISTOR=y
 CONFIG_SENSORS_PWM_FAN=y
 CONFIG_SENSORS_INA2XX=y
 CONFIG_THERMAL=y
@@ -144,6 +147,8 @@ CONFIG_SND=y
 CONFIG_SND_SOC=y
 CONFIG_SND_SOC_SAMSUNG=y
 CONFIG_SND_SOC_SNOW=y
+CONFIG_SND_SOC_ODROIDX2=y
+CONFIG_SND_SIMPLE_CARD=y
 CONFIG_USB=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_XHCI_HCD=y
index b47863d49ac6aaf192f4feac7111f0b7e8d21488..a4ebc95c243cb66839f4a553c5790e3adc9625ae 100644 (file)
@@ -3,6 +3,8 @@ CONFIG_SYSVIPC=y
 CONFIG_FHANDLE=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=18
 CONFIG_CGROUPS=y
 CONFIG_RELAY=y
@@ -38,9 +40,10 @@ CONFIG_SOC_IMX53=y
 CONFIG_SOC_IMX6Q=y
 CONFIG_SOC_IMX6SL=y
 CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6UL=y
 CONFIG_SOC_IMX7D=y
-CONFIG_SOC_VF610=y
 CONFIG_SOC_LS1021A=y
+CONFIG_SOC_VF610=y
 CONFIG_PCI=y
 CONFIG_PCI_IMX6=y
 CONFIG_SMP=y
@@ -50,13 +53,13 @@ CONFIG_AEABI=y
 CONFIG_HIGHMEM=y
 CONFIG_CMA=y
 CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_KEXEC=y
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_ARM_IMX6Q_CPUFREQ=y
 CONFIG_VFP=y
 CONFIG_NEON=y
 CONFIG_BINFMT_MISC=m
-CONFIG_PM=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_TEST_SUSPEND=y
 CONFIG_NET=y
@@ -75,8 +78,8 @@ CONFIG_CAN=y
 CONFIG_CAN_FLEXCAN=y
 CONFIG_BT=y
 CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIUART_3WIRE=y
 CONFIG_CFG80211=y
 CONFIG_MAC80211=y
 CONFIG_RFKILL=y
@@ -150,6 +153,7 @@ CONFIG_WLCORE_SDIO=m
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_EVBUG=m
 CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_SNVS_PWRKEY=y
 CONFIG_KEYBOARD_IMX=y
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2_ELANTECH=y
@@ -185,6 +189,7 @@ CONFIG_POWER_SUPPLY=y
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_IMX=y
 CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
 CONFIG_SENSORS_GPIO_FAN=y
 CONFIG_THERMAL=y
 CONFIG_CPU_THERMAL=y
@@ -219,10 +224,16 @@ CONFIG_SOC_CAMERA_OV2640=y
 CONFIG_IMX_IPUV3_CORE=y
 CONFIG_DRM=y
 CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_IMX=y
+CONFIG_DRM_IMX_FB_HELPER=y
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
+CONFIG_DRM_IMX_TVE=y
+CONFIG_DRM_IMX_LDB=y
+CONFIG_DRM_IMX_HDMI=y
+CONFIG_FB_MXS=y
 CONFIG_LCD_CLASS_DEVICE=y
 CONFIG_LCD_L4F00242T03=y
 CONFIG_LCD_PLATFORM=y
-CONFIG_FB_MXS=y
 CONFIG_BACKLIGHT_PWM=y
 CONFIG_BACKLIGHT_GPIO=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
@@ -231,7 +242,7 @@ CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_SOC=y
-CONFIG_SND_SOC_FSL_SAI=y
+CONFIG_SND_SOC_FSL_ASRC=y
 CONFIG_SND_IMX_SOC=y
 CONFIG_SND_SOC_PHYCORE_AC97=y
 CONFIG_SND_SOC_EUKREA_TLV320=y
@@ -239,6 +250,8 @@ CONFIG_SND_SOC_IMX_WM8962=y
 CONFIG_SND_SOC_IMX_SGTL5000=y
 CONFIG_SND_SOC_IMX_SPDIF=y
 CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_FSL_ASOC_CARD=y
+CONFIG_SND_SOC_CS42XX8_I2C=y
 CONFIG_SND_SOC_TLV320AIC3X=y
 CONFIG_SND_SIMPLE_CARD=y
 CONFIG_USB=y
@@ -301,13 +314,6 @@ CONFIG_IMX_SDMA=y
 CONFIG_MXS_DMA=y
 CONFIG_FSL_EDMA=y
 CONFIG_STAGING=y
-CONFIG_DRM_IMX=y
-CONFIG_DRM_IMX_FB_HELPER=y
-CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
-CONFIG_DRM_IMX_TVE=y
-CONFIG_DRM_IMX_LDB=y
-CONFIG_DRM_IMX_IPUV3=y
-CONFIG_DRM_IMX_HDMI=y
 # CONFIG_IOMMU_SUPPORT is not set
 CONFIG_PWM=y
 CONFIG_PWM_IMX=y
@@ -354,7 +360,6 @@ CONFIG_PROVE_LOCKING=y
 # CONFIG_FTRACE is not set
 # CONFIG_ARM_UNWIND is not set
 CONFIG_SECURITYFS=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
 # CONFIG_CRYPTO_HW is not set
 CONFIG_CRC_CCITT=m
 CONFIG_CRC_T10DIF=y
diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
deleted file mode 100644 (file)
index 3c8b6d8..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
-CONFIG_EXPERIMENTAL=y
-CONFIG_KERNEL_LZMA=y
-CONFIG_NO_HZ=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_EMBEDDED=y
-CONFIG_SLAB=y
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE_LEGACY=y
-CONFIG_ARCH_R8A7779=y
-CONFIG_MACH_MARZEN=y
-CONFIG_MEMORY_START=0x60000000
-CONFIG_MEMORY_SIZE=0x10000000
-CONFIG_SHMOBILE_TIMER_HZ=1024
-# CONFIG_SH_TIMER_CMT is not set
-# CONFIG_SWP_EMULATE is not set
-CONFIG_ARM_ERRATA_430973=y
-CONFIG_ARM_ERRATA_458693=y
-CONFIG_ARM_ERRATA_460075=y
-CONFIG_ARM_ERRATA_743622=y
-CONFIG_ARM_ERRATA_754322=y
-CONFIG_SMP=y
-# CONFIG_ARM_CPU_TOPOLOGY is not set
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-CONFIG_HIGHMEM=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_VFP=y
-CONFIG_KEXEC=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_PM=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IPV6 is not set
-# CONFIG_WIRELESS is not set
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-# CONFIG_FW_LOADER is not set
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_ATA=y
-CONFIG_ATA_SFF=y
-CONFIG_ATA_BMDMA=y
-CONFIG_SATA_RCAR=y
-CONFIG_NETDEVICES=y
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-CONFIG_SMSC911X=y
-# CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_VT is not set
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_DEVKMEM is not set
-CONFIG_SERIAL_SH_SCI=y
-CONFIG_SERIAL_SH_SCI_NR_UARTS=6
-CONFIG_SERIAL_SH_SCI_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_RCAR=y
-CONFIG_SPI=y
-CONFIG_SPI_SH_HSPI=y
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_RCAR=y
-# CONFIG_HWMON is not set
-CONFIG_THERMAL=y
-CONFIG_RCAR_THERMAL=y
-CONFIG_SSB=y
-CONFIG_REGULATOR=y
-CONFIG_MEDIA_SUPPORT=y
-CONFIG_MEDIA_CAMERA_SUPPORT=y
-CONFIG_V4L_PLATFORM_DRIVERS=y
-CONFIG_SOC_CAMERA=y
-CONFIG_VIDEO_RCAR_VIN=y
-# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
-CONFIG_VIDEO_ADV7180=y
-CONFIG_DRM=y
-CONFIG_DRM_RCAR_DU=y
-CONFIG_USB=y
-CONFIG_USB_RCAR_PHY=y
-CONFIG_MMC=y
-CONFIG_MMC_SDHI=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_PLATFORM=y
-CONFIG_USB_EHCI_HCD_PLATFORM=y
-CONFIG_USB_STORAGE=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_DMADEVICES=y
-CONFIG_RCAR_HPB_DMAE=y
-CONFIG_UIO=y
-CONFIG_UIO_PDRV_GENIRQ=y
-# CONFIG_IOMMU_SUPPORT is not set
-# CONFIG_DNOTIFY is not set
-CONFIG_TMPFS=y
-# CONFIG_MISC_FILESYSTEMS is not set
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_INFO=y
-CONFIG_DEBUG_INFO_REDUCED=y
-# CONFIG_FTRACE is not set
-CONFIG_DEBUG_USER=y
-CONFIG_AVERAGE=y
index 5fd8df6f50ea0c4f9d86cbf0b95364c159c17fb1..0ee0d50d758350ceee3e6f62da73078d73896d94 100644 (file)
@@ -49,6 +49,8 @@ CONFIG_SOC_IMX53=y
 CONFIG_SOC_IMX6Q=y
 CONFIG_SOC_IMX6SL=y
 CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6UL=y
+CONFIG_SOC_IMX7D=y
 CONFIG_SOC_VF610=y
 CONFIG_SOC_LS1021A=y
 CONFIG_ARCH_OMAP3=y
@@ -80,6 +82,7 @@ CONFIG_ARCH_R8A7778=y
 CONFIG_ARCH_R8A7779=y
 CONFIG_ARCH_R8A7790=y
 CONFIG_ARCH_R8A7791=y
+CONFIG_ARCH_R8A7793=y
 CONFIG_ARCH_R8A7794=y
 CONFIG_ARCH_SH73A0=y
 CONFIG_MACH_MARZEN=y
@@ -98,6 +101,7 @@ CONFIG_MACH_SNOWBALL=y
 CONFIG_MACH_UX500_DT=y
 CONFIG_ARCH_VEXPRESS=y
 CONFIG_ARCH_VEXPRESS_CA9X4=y
+CONFIG_ARCH_VEXPRESS_TC2_PM=y
 CONFIG_ARCH_WM8850=y
 CONFIG_ARCH_ZYNQ=y
 CONFIG_TRUSTED_FOUNDATIONS=y
@@ -251,6 +255,7 @@ CONFIG_SERIAL_8250_CONSOLE=y
 CONFIG_SERIAL_8250_DW=y
 CONFIG_SERIAL_8250_EM=y
 CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_UNIPHIER=y
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
 CONFIG_SERIAL_ATMEL=y
@@ -301,6 +306,7 @@ CONFIG_I2C_S3C2410=y
 CONFIG_I2C_SH_MOBILE=y
 CONFIG_I2C_SIRF=y
 CONFIG_I2C_ST=y
+CONFIG_I2C_SUN6I_P2WI=y
 CONFIG_I2C_TEGRA=y
 CONFIG_I2C_XILINX=y
 CONFIG_I2C_RCAR=y
@@ -356,6 +362,7 @@ CONFIG_POWER_RESET_KEYSTONE=y
 CONFIG_POWER_RESET_RMOBILE=y
 CONFIG_SENSORS_LM90=y
 CONFIG_SENSORS_LM95245=y
+CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_THERMAL=y
 CONFIG_CPU_THERMAL=y
 CONFIG_RCAR_THERMAL=y
@@ -370,7 +377,9 @@ CONFIG_ARM_SP805_WATCHDOG=y
 CONFIG_ORION_WATCHDOG=y
 CONFIG_ST_LPC_WATCHDOG=y
 CONFIG_SUNXI_WATCHDOG=y
+CONFIG_TEGRA_WATCHDOG=m
 CONFIG_MESON_WATCHDOG=y
+CONFIG_DIGICOLOR_WATCHDOG=y
 CONFIG_MFD_AS3711=y
 CONFIG_MFD_AS3722=y
 CONFIG_MFD_BCM590XX=y
@@ -402,7 +411,10 @@ CONFIG_REGULATOR_MAX8907=y
 CONFIG_REGULATOR_MAX8973=y
 CONFIG_REGULATOR_MAX77686=y
 CONFIG_REGULATOR_MAX77693=m
+CONFIG_REGULATOR_MAX77802=m
 CONFIG_REGULATOR_PALMAS=y
+CONFIG_REGULATOR_PBIAS=y
+CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_S2MPS11=y
 CONFIG_REGULATOR_S5M8767=y
 CONFIG_REGULATOR_TPS51632=y
@@ -429,8 +441,11 @@ CONFIG_VIDEO_RENESAS_VSP1=m
 CONFIG_VIDEO_ADV7180=m
 CONFIG_VIDEO_ML86V7667=m
 CONFIG_DRM=y
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
 CONFIG_DRM_PTN3460=m
 CONFIG_DRM_PS8622=m
+CONFIG_DRM_NOUVEAU=m
 CONFIG_DRM_EXYNOS=m
 CONFIG_DRM_EXYNOS_DSI=y
 CONFIG_DRM_EXYNOS_FIMD=y
@@ -454,12 +469,18 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 CONFIG_SOUND=m
 CONFIG_SND=m
 CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_HDA_TEGRA=m
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_HDMI=m
 CONFIG_SND_USB_AUDIO=y
 CONFIG_SND_SOC=m
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_ATMEL_SOC_WM8904=m
 CONFIG_SND_SOC_SH4_FSI=m
 CONFIG_SND_SOC_RCAR=m
+CONFIG_SND_SOC_RSRC_CARD=m
 CONFIG_SND_SOC_TEGRA=m
 CONFIG_SND_SOC_TEGRA_RT5640=m
 CONFIG_SND_SOC_TEGRA_WM8753=m
@@ -491,8 +512,6 @@ CONFIG_USB_CHIPIDEA_HOST=y
 CONFIG_AB8500_USB=y
 CONFIG_KEYSTONE_USB_PHY=y
 CONFIG_OMAP_USB3=y
-CONFIG_SAMSUNG_USB2PHY=y
-CONFIG_SAMSUNG_USB3PHY=y
 CONFIG_USB_GPIO_VBUS=y
 CONFIG_USB_ISP1301=y
 CONFIG_USB_MXS_PHY=y
@@ -587,6 +606,7 @@ CONFIG_IMX_DMA=y
 CONFIG_MXS_DMA=y
 CONFIG_DMA_OMAP=y
 CONFIG_XILINX_VDMA=y
+CONFIG_DMA_SUN6I=y
 CONFIG_STAGING=y
 CONFIG_SENSORS_ISL29018=y
 CONFIG_SENSORS_ISL29028=y
@@ -612,9 +632,11 @@ CONFIG_TEGRA_IOMMU_SMMU=y
 CONFIG_PM_DEVFREQ=y
 CONFIG_ARM_TEGRA_DEVFREQ=m
 CONFIG_MEMORY=y
+CONFIG_EXTCON=y
 CONFIG_TI_AEMIF=y
 CONFIG_IIO=y
 CONFIG_AT91_ADC=m
+CONFIG_EXYNOS_ADC=m
 CONFIG_XILINX_XADC=y
 CONFIG_AK8975=y
 CONFIG_PWM=y
@@ -622,9 +644,11 @@ CONFIG_PWM_ATMEL=m
 CONFIG_PWM_ATMEL_TCB=m
 CONFIG_PWM_RENESAS_TPU=y
 CONFIG_PWM_SAMSUNG=m
+CONFIG_PWM_SUN4I=y
 CONFIG_PWM_TEGRA=y
 CONFIG_PWM_VT8500=y
 CONFIG_PHY_HIX5HD2_SATA=y
+CONFIG_PWM_STI=m
 CONFIG_OMAP_USB2=y
 CONFIG_TI_PIPE3=y
 CONFIG_PHY_MIPHY28LP=y
@@ -660,6 +684,7 @@ CONFIG_LOCKUP_DETECTOR=y
 CONFIG_CRYPTO_DEV_TEGRA_AES=y
 CONFIG_CPUFREQ_DT=y
 CONFIG_KEYSTONE_IRQ=y
+CONFIG_CRYPTO_DEV_SUN4I_SS=m
 CONFIG_ARM_CRYPTO=y
 CONFIG_CRYPTO_SHA1_ARM=m
 CONFIG_CRYPTO_SHA1_ARM_NEON=m
index cacc9f4055a72945aab6dba3909b0409c6cf9abc..13fcd020e37516cef27c74099c527818c464c4db 100644 (file)
@@ -58,6 +58,7 @@ CONFIG_MTD_M25P80=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_PXA3xx=y
 CONFIG_MTD_SPI_NOR=y
+CONFIG_EEPROM_AT24=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_ATA=y
 CONFIG_AHCI_MVEBU=y
@@ -83,11 +84,14 @@ CONFIG_I2C_MV64XXX=y
 CONFIG_SPI=y
 CONFIG_SPI_ORION=y
 CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_PCA953X=y
 CONFIG_SENSORS_GPIO_FAN=y
 CONFIG_THERMAL=y
 CONFIG_ARMADA_THERMAL=y
 CONFIG_WATCHDOG=y
 CONFIG_ORION_WATCHDOG=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SOC=y
index ac521e764d10903b2b344021f49295fab979a838..f7dec31bc2643a4008fc043e80e9d125b210d760 100644 (file)
@@ -136,6 +136,8 @@ CONFIG_MTD_ONENAND=y
 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
 CONFIG_MTD_ONENAND_OMAP2=y
 CONFIG_MTD_UBI=y
+CONFIG_MTD_SPI_NOR=m
+CONFIG_MTD_M25P80=m
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=16384
@@ -169,6 +171,7 @@ CONFIG_SMSC911X=y
 # CONFIG_NET_VENDOR_STMICRO is not set
 CONFIG_TI_DAVINCI_EMAC=y
 CONFIG_TI_CPSW=y
+CONFIG_TI_CPTS=y
 # CONFIG_NET_VENDOR_VIA is not set
 # CONFIG_NET_VENDOR_WIZNET is not set
 CONFIG_AT803X_PHY=y
@@ -208,6 +211,7 @@ CONFIG_TOUCHSCREEN_EDT_FT5X06=m
 CONFIG_TOUCHSCREEN_PIXCIR=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2007=m
+CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_TPS65218_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_PWRBUTTON=m
@@ -269,6 +273,7 @@ CONFIG_MFD_PALMAS=y
 CONFIG_MFD_TPS65217=y
 CONFIG_MFD_TPS65218=y
 CONFIG_MFD_TPS65910=y
+CONFIG_MFD_TI_AM335X_TSCADC=m
 CONFIG_TWL6040_CORE=y
 CONFIG_REGULATOR_PALMAS=y
 CONFIG_REGULATOR_PBIAS=y
@@ -398,6 +403,8 @@ CONFIG_EXTCON=m
 CONFIG_EXTCON_USB_GPIO=m
 CONFIG_EXTCON_PALMAS=m
 CONFIG_TI_EMIF=m
+CONFIG_IIO=m
+CONFIG_TI_AM335X_ADC=m
 CONFIG_PWM=y
 CONFIG_PWM_TIECAP=m
 CONFIG_PWM_TIEHRPWM=m
index 855143fac6bd426c4363f94775b464f9c72ee129..8099417a946645cb0f189e8847bd77a3d9b1ff75 100644 (file)
@@ -14,8 +14,10 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_BSD_DISKLABEL=y
 CONFIG_ARCH_ORION5X=y
+CONFIG_ARCH_ORION5X_DT=y
 CONFIG_MACH_DB88F5281=y
 CONFIG_MACH_RD88F5182=y
+CONFIG_MACH_RD88F5182_DT=y
 CONFIG_MACH_KUROBOX_PRO=y
 CONFIG_MACH_DNS323=y
 CONFIG_MACH_TS209=y
@@ -41,6 +43,7 @@ CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
 CONFIG_FPE_NWFPE=y
 CONFIG_VFP=y
 CONFIG_NET=y
index f610230b9c1fa534cdc2b60cd97d410abaccd4ad..7cc8e8e4d2961e0fd933efdc9b6c7e7a15dcd79c 100644 (file)
@@ -1,4 +1,3 @@
-CONFIG_EXPERIMENTAL=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_RELAY=y
@@ -11,14 +10,12 @@ CONFIG_PARTITION_ADVANCED=y
 CONFIG_BSD_DISKLABEL=y
 CONFIG_SOLARIS_X86_PARTITION=y
 CONFIG_ARCH_SIRF=y
-# CONFIG_SWP_EMULATE is not set
 CONFIG_SMP=y
 CONFIG_SCHED_MC=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
 CONFIG_KEXEC=y
 CONFIG_BINFMT_MISC=y
-CONFIG_PM=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
@@ -29,6 +26,7 @@ CONFIG_CHR_DEV_SG=y
 CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_MOUSE is not set
 CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_MISC=y
 CONFIG_SERIAL_SIRFSOC=y
 CONFIG_SERIAL_SIRFSOC_CONSOLE=y
 CONFIG_HW_RANDOM=y
@@ -45,10 +43,14 @@ CONFIG_USB_MASS_STORAGE=m
 CONFIG_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_SIRF=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_SIRFSOC=y
 CONFIG_DMADEVICES=y
 CONFIG_DMADEVICES_DEBUG=y
 CONFIG_DMADEVICES_VDEBUG=y
 CONFIG_SIRF_DMA=y
+CONFIG_HWSPINLOCK_SIRF=y
 # CONFIG_IOMMU_SUPPORT is not set
 CONFIG_EXT2_FS=y
 CONFIG_MSDOS_FS=y
@@ -60,12 +62,12 @@ CONFIG_ROMFS_FS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_SECTION_MISMATCH=y
+CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_DEBUG_PREEMPT is not set
 CONFIG_DEBUG_RT_MUTEXES=y
 CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_INFO=y
 CONFIG_CRC_CCITT=y
index e6a6f282e3de0bc60b0c0fb604469033bb19e75d..ff7985ba226ee1dfc3f6cdf6e11e3f570ebcac1d 100644 (file)
@@ -67,6 +67,7 @@ CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SCAN_ASYNC=y
 CONFIG_NETDEVICES=y
 CONFIG_DUMMY=y
+CONFIG_KS8851=y
 CONFIG_MDIO_BITBANG=y
 CONFIG_MDIO_GPIO=y
 CONFIG_SLIP=y
@@ -104,8 +105,10 @@ CONFIG_GPIO_SYSFS=y
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_MSM=y
 CONFIG_THERMAL=y
+CONFIG_MFD_QCOM_RPM=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_QCOM_RPM=y
 CONFIG_MEDIA_SUPPORT=y
 CONFIG_FB=y
 CONFIG_SOUND=y
index 9961fbd633f8d1658829ad84efb81b9cc57c427f..89bf31ccfbfa1b269ce4b3e9c66c7053b7edcfb0 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_ARCH_R8A7778=y
 CONFIG_ARCH_R8A7779=y
 CONFIG_ARCH_R8A7790=y
 CONFIG_ARCH_R8A7791=y
+CONFIG_ARCH_R8A7793=y
 CONFIG_ARCH_R8A7794=y
 CONFIG_ARCH_SH73A0=y
 CONFIG_MACH_MARZEN=y
@@ -121,6 +122,7 @@ CONFIG_WATCHDOG=y
 CONFIG_DA9063_WATCHDOG=y
 CONFIG_MFD_AS3711=y
 CONFIG_MFD_DA9063=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_AS3711=y
 CONFIG_REGULATOR_DA9210=y
 CONFIG_REGULATOR_GPIO=y
@@ -151,6 +153,7 @@ CONFIG_SND=y
 CONFIG_SND_SOC=y
 CONFIG_SND_SOC_SH4_FSI=y
 CONFIG_SND_SOC_RCAR=y
+CONFIG_SND_SOC_RSRC_CARD=y
 CONFIG_SND_SOC_AK4642=y
 CONFIG_SND_SOC_WM8978=y
 CONFIG_USB=y
index 7ebc346bf9fa56e2dad3ae90914012f0928019b3..51eea220baae4be2d68ae036f8d39739ec6a9c5a 100644 (file)
@@ -1,5 +1,7 @@
+CONFIG_FHANDLE=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
+CONFIG_CGROUPS=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_PERF_EVENTS=y
 CONFIG_MODULES=y
@@ -72,12 +74,12 @@ CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_I2C=y
 CONFIG_I2C_CHARDEV=y
 CONFIG_I2C_MV64XXX=y
+CONFIG_I2C_SUN6I_P2WI=y
 CONFIG_SPI=y
 CONFIG_SPI_SUN4I=y
 CONFIG_SPI_SUN6I=y
 CONFIG_GPIO_SYSFS=y
 CONFIG_POWER_SUPPLY=y
-CONFIG_POWER_RESET=y
 CONFIG_THERMAL=y
 CONFIG_CPU_THERMAL=y
 CONFIG_WATCHDOG=y
@@ -109,7 +111,12 @@ CONFIG_RTC_CLASS=y
 # CONFIG_RTC_INTF_PROC is not set
 CONFIG_RTC_DRV_SUN6I=y
 CONFIG_RTC_DRV_SUNXI=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_SUN6I=y
 # CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXTCON=y
+CONFIG_PWM=y
+CONFIG_PWM_SUN4I=y
 CONFIG_PHY_SUN4I_USB=y
 CONFIG_PHY_SUN9I_USB=y
 CONFIG_EXT4_FS=y
@@ -123,3 +130,4 @@ CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_PRINTK_TIME=y
 CONFIG_DEBUG_FS=y
+CONFIG_CRYPTO_DEV_SUN4I_SS=y
index cdf9abb46015c5dbdbcd3839c7b613c6cfa9a021..9808581176cc81790913c024e625b648a3650c68 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_KEXEC=y
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPUFREQ_DT=y
 CONFIG_CPU_IDLE=y
 CONFIG_VFP=y
 CONFIG_NEON=y
@@ -146,7 +147,6 @@ CONFIG_GPIO_PCA953X_IRQ=y
 CONFIG_GPIO_PALMAS=y
 CONFIG_GPIO_TPS6586X=y
 CONFIG_GPIO_TPS65910=y
-CONFIG_POWER_SUPPLY=y
 CONFIG_BATTERY_SBS=y
 CONFIG_CHARGER_TPS65090=y
 CONFIG_POWER_RESET=y
@@ -182,11 +182,10 @@ CONFIG_MEDIA_USB_SUPPORT=y
 CONFIG_USB_VIDEO_CLASS=y
 CONFIG_USB_GSPCA=y
 CONFIG_DRM=y
+CONFIG_DRM_NOUVEAU=m
 CONFIG_DRM_TEGRA=y
 CONFIG_DRM_PANEL_SIMPLE=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
 # CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_GENERIC is not set
 CONFIG_BACKLIGHT_PWM=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
@@ -196,14 +195,11 @@ CONFIG_SOUND=y
 CONFIG_SND=y
 # CONFIG_SND_SUPPORT_OLD_API is not set
 # CONFIG_SND_DRIVERS is not set
-CONFIG_SND_HDA=y
 CONFIG_SND_HDA_TEGRA=y
 CONFIG_SND_HDA_INPUT_BEEP=y
-CONFIG_SND_HDA_INPUT_JACK=y
 CONFIG_SND_HDA_PATCH_LOADER=y
 CONFIG_SND_HDA_CODEC_REALTEK=y
 CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_GENERIC=y
 # CONFIG_SND_ARM is not set
 # CONFIG_SND_SPI is not set
 # CONFIG_SND_USB is not set
@@ -300,5 +296,4 @@ CONFIG_DEBUG_SG=y
 CONFIG_DEBUG_LL=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_CRYPTO_TWOFISH=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
 CONFIG_CRC_CCITT=y
index 81064cd61a0a9e72536d6dd6df56555bae352d61..a2d358d44aad94df4783d58a6c8f3a99b03ce36c 100644 (file)
@@ -15,6 +15,7 @@ menuconfig ARCH_EXYNOS
        select ARM_AMBA
        select ARM_GIC
        select COMMON_CLK_SAMSUNG
+       select EXYNOS_THERMAL
        select HAVE_ARM_SCU if SMP
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@ -24,6 +25,7 @@ menuconfig ARCH_EXYNOS
        select PM_GENERIC_DOMAINS if PM
        select S5P_DEV_MFC
        select SRAM
+       select THERMAL
        select MFD_SYSCON
        help
          Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5)
index 5f8ddcdeeacf1117d92313e6cb34608be136a955..1c47aee31e9cc60aeabc8c504b41c76c2379a435 100644 (file)
@@ -225,7 +225,11 @@ static void __init exynos_init_irq(void)
 }
 
 static const struct of_device_id exynos_cpufreq_matches[] = {
+       { .compatible = "samsung,exynos3250", .data = "cpufreq-dt" },
        { .compatible = "samsung,exynos4210", .data = "cpufreq-dt" },
+       { .compatible = "samsung,exynos4212", .data = "cpufreq-dt" },
+       { .compatible = "samsung,exynos4412", .data = "cpufreq-dt" },
+       { .compatible = "samsung,exynos5250", .data = "cpufreq-dt" },
        { /* sentinel */ }
 };
 
index aab7e46cadd5d843f3f7252a494fa9b0ef9af0c2..3a3548f267b461ef122aa6b3ae8af2f4db99421f 100644 (file)
@@ -118,6 +118,7 @@ config ATH25
 
 config ATH79
        bool "Atheros AR71XX/AR724X/AR913X based boards"
+       select ARCH_HAS_RESET_CONTROLLER
        select ARCH_REQUIRE_GPIOLIB
        select BOOT_RAW
        select CEVT_R4K
index 4759cff814d1b8c0a9f24bb4690f1bf677c522c2..fb7734eadbf0e08faab7c6ab36b29851d3845e35 100644 (file)
                                interrupt-controller;
                                #interrupt-cells = <1>;
                        };
+
+                       rst: reset-controller@1806001c {
+                               compatible = "qca,ar9132-reset",
+                                               "qca,ar7100-reset";
+                               reg = <0x1806001c 0x4>;
+
+                               #reset-cells = <1>;
+                       };
                };
 
                spi@1f000000 {
index 538de66a759e12092e70b385e579bbc112133ca3..1880a90e2ebca600bca7b71722b7550651245dac 100644 (file)
@@ -19,6 +19,7 @@
 #include <dt-bindings/clock/exynos3250.h>
 
 #include "clk.h"
+#include "clk-cpu.h"
 #include "clk-pll.h"
 
 #define SRC_LEFTBUS            0x4200
@@ -319,8 +320,10 @@ static struct samsung_mux_clock mux_clks[] __initdata = {
        MUX(CLK_MOUT_MPLL_USER_C, "mout_mpll_user_c", mout_mpll_user_p,
            SRC_CPU, 24, 1),
        MUX(CLK_MOUT_HPM, "mout_hpm", mout_hpm_p, SRC_CPU, 20, 1),
-       MUX(CLK_MOUT_CORE, "mout_core", mout_core_p, SRC_CPU, 16, 1),
-       MUX(CLK_MOUT_APLL, "mout_apll", mout_apll_p, SRC_CPU, 0, 1),
+       MUX_F(CLK_MOUT_CORE, "mout_core", mout_core_p, SRC_CPU, 16, 1,
+                       CLK_SET_RATE_PARENT, 0),
+       MUX_F(CLK_MOUT_APLL, "mout_apll", mout_apll_p, SRC_CPU, 0, 1,
+                       CLK_SET_RATE_PARENT, 0),
 };
 
 static struct samsung_div_clock div_clks[] __initdata = {
@@ -772,6 +775,26 @@ static struct samsung_cmu_info cmu_info __initdata = {
        .nr_clk_regs            = ARRAY_SIZE(exynos3250_cmu_clk_regs),
 };
 
+#define E3250_CPU_DIV0(apll, pclk_dbg, atb, corem)                     \
+               (((apll) << 24) | ((pclk_dbg) << 20) | ((atb) << 16) |  \
+               ((corem) << 4))
+#define E3250_CPU_DIV1(hpm, copy)                                      \
+               (((hpm) << 4) | ((copy) << 0))
+
+static const struct exynos_cpuclk_cfg_data e3250_armclk_d[] __initconst = {
+       { 1000000, E3250_CPU_DIV0(1, 7, 4, 1), E3250_CPU_DIV1(7, 7), },
+       {  900000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  800000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  700000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  600000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  500000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  400000, E3250_CPU_DIV0(1, 7, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  300000, E3250_CPU_DIV0(1, 5, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  200000, E3250_CPU_DIV0(1, 3, 3, 1), E3250_CPU_DIV1(7, 7), },
+       {  100000, E3250_CPU_DIV0(1, 1, 1, 1), E3250_CPU_DIV1(7, 7), },
+       {  0 },
+};
+
 static void __init exynos3250_cmu_init(struct device_node *np)
 {
        struct samsung_clk_provider *ctx;
@@ -780,6 +803,11 @@ static void __init exynos3250_cmu_init(struct device_node *np)
        if (!ctx)
                return;
 
+       exynos_register_cpu_clock(ctx, CLK_ARM_CLK, "armclk",
+                       mout_core_p[0], mout_core_p[1], 0x14200,
+                       e3250_armclk_d, ARRAY_SIZE(e3250_armclk_d),
+                       CLK_CPU_HAS_DIV1);
+
        exynos3_core_down_clock(ctx->reg_base);
 }
 CLK_OF_DECLARE(exynos3250_cmu, "samsung,exynos3250-cmu", exynos3250_cmu_init);
index cae2c048488db3e7a4c3545c81faa50f450797d7..30712608f8c52807134425ab51e9436ee8494eab 100644 (file)
@@ -1396,6 +1396,45 @@ static const struct exynos_cpuclk_cfg_data e4210_armclk_d[] __initconst = {
        {  0 },
 };
 
+static const struct exynos_cpuclk_cfg_data e4212_armclk_d[] __initconst = {
+       { 1500000, E4210_CPU_DIV0(2, 1, 6, 0, 7, 3), E4210_CPU_DIV1(2, 6), },
+       { 1400000, E4210_CPU_DIV0(2, 1, 6, 0, 7, 3), E4210_CPU_DIV1(2, 6), },
+       { 1300000, E4210_CPU_DIV0(2, 1, 5, 0, 7, 3), E4210_CPU_DIV1(2, 5), },
+       { 1200000, E4210_CPU_DIV0(2, 1, 5, 0, 7, 3), E4210_CPU_DIV1(2, 5), },
+       { 1100000, E4210_CPU_DIV0(2, 1, 4, 0, 6, 3), E4210_CPU_DIV1(2, 4), },
+       { 1000000, E4210_CPU_DIV0(1, 1, 4, 0, 5, 2), E4210_CPU_DIV1(2, 4), },
+       {  900000, E4210_CPU_DIV0(1, 1, 3, 0, 5, 2), E4210_CPU_DIV1(2, 3), },
+       {  800000, E4210_CPU_DIV0(1, 1, 3, 0, 5, 2), E4210_CPU_DIV1(2, 3), },
+       {  700000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4210_CPU_DIV1(2, 3), },
+       {  600000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4210_CPU_DIV1(2, 3), },
+       {  500000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4210_CPU_DIV1(2, 3), },
+       {  400000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4210_CPU_DIV1(2, 3), },
+       {  300000, E4210_CPU_DIV0(1, 1, 2, 0, 4, 2), E4210_CPU_DIV1(2, 3), },
+       {  200000, E4210_CPU_DIV0(1, 1, 1, 0, 3, 1), E4210_CPU_DIV1(2, 3), },
+       {  0 },
+};
+
+#define E4412_CPU_DIV1(cores, hpm, copy)                               \
+               (((cores) << 8) | ((hpm) << 4) | ((copy) << 0))
+
+static const struct exynos_cpuclk_cfg_data e4412_armclk_d[] __initconst = {
+       { 1500000, E4210_CPU_DIV0(2, 1, 6, 0, 7, 3), E4412_CPU_DIV1(7, 0, 6), },
+       { 1400000, E4210_CPU_DIV0(2, 1, 6, 0, 7, 3), E4412_CPU_DIV1(6, 0, 6), },
+       { 1300000, E4210_CPU_DIV0(2, 1, 5, 0, 7, 3), E4412_CPU_DIV1(6, 0, 5), },
+       { 1200000, E4210_CPU_DIV0(2, 1, 5, 0, 7, 3), E4412_CPU_DIV1(5, 0, 5), },
+       { 1100000, E4210_CPU_DIV0(2, 1, 4, 0, 6, 3), E4412_CPU_DIV1(5, 0, 4), },
+       { 1000000, E4210_CPU_DIV0(1, 1, 4, 0, 5, 2), E4412_CPU_DIV1(4, 0, 4), },
+       {  900000, E4210_CPU_DIV0(1, 1, 3, 0, 5, 2), E4412_CPU_DIV1(4, 0, 3), },
+       {  800000, E4210_CPU_DIV0(1, 1, 3, 0, 5, 2), E4412_CPU_DIV1(3, 0, 3), },
+       {  700000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4412_CPU_DIV1(3, 0, 3), },
+       {  600000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4412_CPU_DIV1(2, 0, 3), },
+       {  500000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4412_CPU_DIV1(2, 0, 3), },
+       {  400000, E4210_CPU_DIV0(1, 1, 3, 0, 4, 2), E4412_CPU_DIV1(1, 0, 3), },
+       {  300000, E4210_CPU_DIV0(1, 1, 2, 0, 4, 2), E4412_CPU_DIV1(1, 0, 3), },
+       {  200000, E4210_CPU_DIV0(1, 1, 1, 0, 3, 1), E4412_CPU_DIV1(0, 0, 3), },
+       {  0 },
+};
+
 /* register exynos4 clocks */
 static void __init exynos4_clk_init(struct device_node *np,
                                    enum exynos4_soc soc)
@@ -1489,6 +1528,17 @@ static void __init exynos4_clk_init(struct device_node *np,
                samsung_clk_register_fixed_factor(ctx,
                        exynos4x12_fixed_factor_clks,
                        ARRAY_SIZE(exynos4x12_fixed_factor_clks));
+               if (of_machine_is_compatible("samsung,exynos4412")) {
+                       exynos_register_cpu_clock(ctx, CLK_ARM_CLK, "armclk",
+                               mout_core_p4x12[0], mout_core_p4x12[1], 0x14200,
+                               e4412_armclk_d, ARRAY_SIZE(e4412_armclk_d),
+                               CLK_CPU_NEEDS_DEBUG_ALT_DIV | CLK_CPU_HAS_DIV1);
+               } else {
+                       exynos_register_cpu_clock(ctx, CLK_ARM_CLK, "armclk",
+                               mout_core_p4x12[0], mout_core_p4x12[1], 0x14200,
+                               e4212_armclk_d, ARRAY_SIZE(e4212_armclk_d),
+                               CLK_CPU_NEEDS_DEBUG_ALT_DIV | CLK_CPU_HAS_DIV1);
+               }
        }
 
        samsung_clk_register_alias(ctx, exynos4_aliases,
index 70ec3d2608a17e2f282e65dc198cd6af9c3fbbb9..d87f34de215220dfa764bf80e655e4124d78cfa2 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/syscore_ops.h>
 
 #include "clk.h"
+#include "clk-cpu.h"
 
 #define APLL_LOCK              0x0
 #define APLL_CON0              0x100
@@ -748,6 +749,32 @@ static struct samsung_pll_clock exynos5250_plls[nr_plls] __initdata = {
                VPLL_LOCK, VPLL_CON0, NULL),
 };
 
+#define E5250_CPU_DIV0(apll, pclk_dbg, atb, periph, acp, cpud)         \
+               ((((apll) << 24) | ((pclk_dbg) << 20) | ((atb) << 16) | \
+                ((periph) << 12) | ((acp) << 8) | ((cpud) << 4)))
+#define E5250_CPU_DIV1(hpm, copy)                                      \
+               (((hpm) << 4) | (copy))
+
+static const struct exynos_cpuclk_cfg_data exynos5250_armclk_d[] __initconst = {
+       { 1700000, E5250_CPU_DIV0(5, 3, 7, 7, 7, 3), E5250_CPU_DIV1(2, 0), },
+       { 1600000, E5250_CPU_DIV0(4, 1, 7, 7, 7, 3), E5250_CPU_DIV1(2, 0), },
+       { 1500000, E5250_CPU_DIV0(4, 1, 7, 7, 7, 2), E5250_CPU_DIV1(2, 0), },
+       { 1400000, E5250_CPU_DIV0(4, 1, 6, 7, 7, 2), E5250_CPU_DIV1(2, 0), },
+       { 1300000, E5250_CPU_DIV0(3, 1, 6, 7, 7, 2), E5250_CPU_DIV1(2, 0), },
+       { 1200000, E5250_CPU_DIV0(3, 1, 5, 7, 7, 2), E5250_CPU_DIV1(2, 0), },
+       { 1100000, E5250_CPU_DIV0(3, 1, 5, 7, 7, 3), E5250_CPU_DIV1(2, 0), },
+       { 1000000, E5250_CPU_DIV0(2, 1, 4, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  900000, E5250_CPU_DIV0(2, 1, 4, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  800000, E5250_CPU_DIV0(2, 1, 4, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  700000, E5250_CPU_DIV0(1, 1, 3, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  600000, E5250_CPU_DIV0(1, 1, 3, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  500000, E5250_CPU_DIV0(1, 1, 2, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  400000, E5250_CPU_DIV0(1, 1, 2, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  300000, E5250_CPU_DIV0(1, 1, 1, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  200000, E5250_CPU_DIV0(1, 1, 1, 7, 7, 1), E5250_CPU_DIV1(2, 0), },
+       {  0 },
+};
+
 static const struct of_device_id ext_clk_match[] __initconst = {
        { .compatible = "samsung,clock-xxti", .data = (void *)0, },
        { },
@@ -797,6 +824,10 @@ static void __init exynos5250_clk_init(struct device_node *np)
                        ARRAY_SIZE(exynos5250_div_clks));
        samsung_clk_register_gate(ctx, exynos5250_gate_clks,
                        ARRAY_SIZE(exynos5250_gate_clks));
+       exynos_register_cpu_clock(ctx, CLK_ARM_CLK, "armclk",
+                       mout_cpu_p[0], mout_cpu_p[1], 0x200,
+                       exynos5250_armclk_d, ARRAY_SIZE(exynos5250_armclk_d),
+                       CLK_CPU_HAS_DIV1);
 
        /*
         * Enable arm clock down (in idle) and set arm divider
index cc8a71c267b88132496efc6bc083ed5107a7e46b..4937fe4d597581f8e7f6e4892be4222533c2cd31 100644 (file)
@@ -24,55 +24,6 @@ config ARM_VEXPRESS_SPC_CPUFREQ
           This add the CPUfreq driver support for Versatile Express
          big.LITTLE platforms using SPC for power management.
 
-
-config ARM_EXYNOS_CPUFREQ
-       tristate "SAMSUNG EXYNOS CPUfreq Driver"
-       depends on CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412 || SOC_EXYNOS5250
-       depends on THERMAL
-       help
-         This adds the CPUFreq driver for Samsung EXYNOS platforms.
-         Supported SoC versions are:
-            Exynos4210, Exynos4212, Exynos4412, and Exynos5250.
-
-         If in doubt, say N.
-
-config ARM_EXYNOS4X12_CPUFREQ
-       bool "SAMSUNG EXYNOS4x12"
-       depends on SOC_EXYNOS4212 || SOC_EXYNOS4412
-       depends on ARM_EXYNOS_CPUFREQ
-       default y
-       help
-         This adds the CPUFreq driver for Samsung EXYNOS4X12
-         SoC (EXYNOS4212 or EXYNOS4412).
-
-         If in doubt, say N.
-
-config ARM_EXYNOS5250_CPUFREQ
-       bool "SAMSUNG EXYNOS5250"
-       depends on SOC_EXYNOS5250
-       depends on ARM_EXYNOS_CPUFREQ
-       default y
-       help
-         This adds the CPUFreq driver for Samsung EXYNOS5250
-         SoC.
-
-         If in doubt, say N.
-
-config ARM_EXYNOS_CPU_FREQ_BOOST_SW
-       bool "EXYNOS Frequency Overclocking - Software"
-       depends on ARM_EXYNOS_CPUFREQ && THERMAL
-       select CPU_FREQ_BOOST_SW
-       select EXYNOS_THERMAL
-       help
-         This driver supports software managed overclocking (BOOST).
-         It allows usage of special frequencies for Samsung Exynos
-         processors if thermal conditions are appropriate.
-
-         It requires, for safe operation, thermal framework with properly
-         defined trip points.
-
-         If in doubt, say N.
-
 config ARM_EXYNOS5440_CPUFREQ
        tristate "SAMSUNG EXYNOS5440"
        depends on SOC_EXYNOS5440
index 2169bf792db76cbcea69f8b5d57670004853e47b..6d8186de9bf05f59cebe24821d4107589c40b298 100644 (file)
@@ -52,10 +52,6 @@ obj-$(CONFIG_ARM_DT_BL_CPUFREQ)              += arm_big_little_dt.o
 
 obj-$(CONFIG_ARCH_DAVINCI)             += davinci-cpufreq.o
 obj-$(CONFIG_UX500_SOC_DB8500)         += dbx500-cpufreq.o
-obj-$(CONFIG_ARM_EXYNOS_CPUFREQ)       += arm-exynos-cpufreq.o
-arm-exynos-cpufreq-y                                   := exynos-cpufreq.o
-arm-exynos-cpufreq-$(CONFIG_ARM_EXYNOS4X12_CPUFREQ)    += exynos4x12-cpufreq.o
-arm-exynos-cpufreq-$(CONFIG_ARM_EXYNOS5250_CPUFREQ)    += exynos5250-cpufreq.o
 obj-$(CONFIG_ARM_EXYNOS5440_CPUFREQ)   += exynos5440-cpufreq.o
 obj-$(CONFIG_ARM_HIGHBANK_CPUFREQ)     += highbank-cpufreq.o
 obj-$(CONFIG_ARM_HISI_ACPU_CPUFREQ)    += hisi-acpu-cpufreq.o
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c
deleted file mode 100644 (file)
index ae5b2bd..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * EXYNOS - CPU frequency scaling support for EXYNOS series
- *
- * 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 <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/regulator/consumer.h>
-#include <linux/cpufreq.h>
-#include <linux/platform_device.h>
-#include <linux/of.h>
-#include <linux/cpu_cooling.h>
-#include <linux/cpu.h>
-
-#include "exynos-cpufreq.h"
-
-static struct exynos_dvfs_info *exynos_info;
-static struct thermal_cooling_device *cdev;
-static struct regulator *arm_regulator;
-static unsigned int locking_frequency;
-
-static int exynos_cpufreq_get_index(unsigned int freq)
-{
-       struct cpufreq_frequency_table *freq_table = exynos_info->freq_table;
-       struct cpufreq_frequency_table *pos;
-
-       cpufreq_for_each_entry(pos, freq_table)
-               if (pos->frequency == freq)
-                       break;
-
-       if (pos->frequency == CPUFREQ_TABLE_END)
-               return -EINVAL;
-
-       return pos - freq_table;
-}
-
-static int exynos_cpufreq_scale(unsigned int target_freq)
-{
-       struct cpufreq_frequency_table *freq_table = exynos_info->freq_table;
-       unsigned int *volt_table = exynos_info->volt_table;
-       struct cpufreq_policy *policy = cpufreq_cpu_get(0);
-       unsigned int arm_volt, safe_arm_volt = 0;
-       unsigned int mpll_freq_khz = exynos_info->mpll_freq_khz;
-       struct device *dev = exynos_info->dev;
-       unsigned int old_freq;
-       int index, old_index;
-       int ret = 0;
-
-       old_freq = policy->cur;
-
-       /*
-        * The policy max have been changed so that we cannot get proper
-        * old_index with cpufreq_frequency_table_target(). Thus, ignore
-        * policy and get the index from the raw frequency table.
-        */
-       old_index = exynos_cpufreq_get_index(old_freq);
-       if (old_index < 0) {
-               ret = old_index;
-               goto out;
-       }
-
-       index = exynos_cpufreq_get_index(target_freq);
-       if (index < 0) {
-               ret = index;
-               goto out;
-       }
-
-       /*
-        * ARM clock source will be changed APLL to MPLL temporary
-        * To support this level, need to control regulator for
-        * required voltage level
-        */
-       if (exynos_info->need_apll_change != NULL) {
-               if (exynos_info->need_apll_change(old_index, index) &&
-                  (freq_table[index].frequency < mpll_freq_khz) &&
-                  (freq_table[old_index].frequency < mpll_freq_khz))
-                       safe_arm_volt = volt_table[exynos_info->pll_safe_idx];
-       }
-       arm_volt = volt_table[index];
-
-       /* When the new frequency is higher than current frequency */
-       if ((target_freq > old_freq) && !safe_arm_volt) {
-               /* Firstly, voltage up to increase frequency */
-               ret = regulator_set_voltage(arm_regulator, arm_volt, arm_volt);
-               if (ret) {
-                       dev_err(dev, "failed to set cpu voltage to %d\n",
-                               arm_volt);
-                       return ret;
-               }
-       }
-
-       if (safe_arm_volt) {
-               ret = regulator_set_voltage(arm_regulator, safe_arm_volt,
-                                     safe_arm_volt);
-               if (ret) {
-                       dev_err(dev, "failed to set cpu voltage to %d\n",
-                               safe_arm_volt);
-                       return ret;
-               }
-       }
-
-       exynos_info->set_freq(old_index, index);
-
-       /* When the new frequency is lower than current frequency */
-       if ((target_freq < old_freq) ||
-          ((target_freq > old_freq) && safe_arm_volt)) {
-               /* down the voltage after frequency change */
-               ret = regulator_set_voltage(arm_regulator, arm_volt,
-                               arm_volt);
-               if (ret) {
-                       dev_err(dev, "failed to set cpu voltage to %d\n",
-                               arm_volt);
-                       goto out;
-               }
-       }
-
-out:
-       cpufreq_cpu_put(policy);
-
-       return ret;
-}
-
-static int exynos_target(struct cpufreq_policy *policy, unsigned int index)
-{
-       return exynos_cpufreq_scale(exynos_info->freq_table[index].frequency);
-}
-
-static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)
-{
-       policy->clk = exynos_info->cpu_clk;
-       policy->suspend_freq = locking_frequency;
-       return cpufreq_generic_init(policy, exynos_info->freq_table, 100000);
-}
-
-static struct cpufreq_driver exynos_driver = {
-       .flags          = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK,
-       .verify         = cpufreq_generic_frequency_table_verify,
-       .target_index   = exynos_target,
-       .get            = cpufreq_generic_get,
-       .init           = exynos_cpufreq_cpu_init,
-       .name           = "exynos_cpufreq",
-       .attr           = cpufreq_generic_attr,
-#ifdef CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW
-       .boost_supported = true,
-#endif
-#ifdef CONFIG_PM
-       .suspend        = cpufreq_generic_suspend,
-#endif
-};
-
-static int exynos_cpufreq_probe(struct platform_device *pdev)
-{
-       struct device_node *cpu0;
-       int ret = -EINVAL;
-
-       exynos_info = kzalloc(sizeof(*exynos_info), GFP_KERNEL);
-       if (!exynos_info)
-               return -ENOMEM;
-
-       exynos_info->dev = &pdev->dev;
-
-       if (of_machine_is_compatible("samsung,exynos4212")) {
-               exynos_info->type = EXYNOS_SOC_4212;
-               ret = exynos4x12_cpufreq_init(exynos_info);
-       } else if (of_machine_is_compatible("samsung,exynos4412")) {
-               exynos_info->type = EXYNOS_SOC_4412;
-               ret = exynos4x12_cpufreq_init(exynos_info);
-       } else if (of_machine_is_compatible("samsung,exynos5250")) {
-               exynos_info->type = EXYNOS_SOC_5250;
-               ret = exynos5250_cpufreq_init(exynos_info);
-       } else {
-               pr_err("%s: Unknown SoC type\n", __func__);
-               return -ENODEV;
-       }
-
-       if (ret)
-               goto err_vdd_arm;
-
-       if (exynos_info->set_freq == NULL) {
-               dev_err(&pdev->dev, "No set_freq function (ERR)\n");
-               goto err_vdd_arm;
-       }
-
-       arm_regulator = regulator_get(NULL, "vdd_arm");
-       if (IS_ERR(arm_regulator)) {
-               dev_err(&pdev->dev, "failed to get resource vdd_arm\n");
-               goto err_vdd_arm;
-       }
-
-       /* Done here as we want to capture boot frequency */
-       locking_frequency = clk_get_rate(exynos_info->cpu_clk) / 1000;
-
-       ret = cpufreq_register_driver(&exynos_driver);
-       if (ret)
-               goto err_cpufreq_reg;
-
-       cpu0 = of_get_cpu_node(0, NULL);
-       if (!cpu0) {
-               pr_err("failed to find cpu0 node\n");
-               return 0;
-       }
-
-       if (of_find_property(cpu0, "#cooling-cells", NULL)) {
-               cdev = of_cpufreq_cooling_register(cpu0,
-                                                  cpu_present_mask);
-               if (IS_ERR(cdev))
-                       pr_err("running cpufreq without cooling device: %ld\n",
-                              PTR_ERR(cdev));
-       }
-
-       return 0;
-
-err_cpufreq_reg:
-       dev_err(&pdev->dev, "failed to register cpufreq driver\n");
-       regulator_put(arm_regulator);
-err_vdd_arm:
-       kfree(exynos_info);
-       return -EINVAL;
-}
-
-static struct platform_driver exynos_cpufreq_platdrv = {
-       .driver = {
-               .name   = "exynos-cpufreq",
-       },
-       .probe = exynos_cpufreq_probe,
-};
-module_platform_driver(exynos_cpufreq_platdrv);
diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos-cpufreq.h
deleted file mode 100644 (file)
index a3855e4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * EXYNOS - CPUFreq support
- *
- * 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.
-*/
-
-enum cpufreq_level_index {
-       L0, L1, L2, L3, L4,
-       L5, L6, L7, L8, L9,
-       L10, L11, L12, L13, L14,
-       L15, L16, L17, L18, L19,
-       L20,
-};
-
-enum exynos_soc_type {
-       EXYNOS_SOC_4212,
-       EXYNOS_SOC_4412,
-       EXYNOS_SOC_5250,
-};
-
-#define APLL_FREQ(f, a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, m, p, s) \
-       { \
-               .freq = (f) * 1000, \
-               .clk_div_cpu0 = ((a0) | (a1) << 4 | (a2) << 8 | (a3) << 12 | \
-                       (a4) << 16 | (a5) << 20 | (a6) << 24 | (a7) << 28), \
-               .clk_div_cpu1 = (b0 << 0 | b1 << 4 | b2 << 8), \
-               .mps = ((m) << 16 | (p) << 8 | (s)), \
-       }
-
-struct apll_freq {
-       unsigned int freq;
-       u32 clk_div_cpu0;
-       u32 clk_div_cpu1;
-       u32 mps;
-};
-
-struct exynos_dvfs_info {
-       enum exynos_soc_type type;
-       struct device   *dev;
-       unsigned long   mpll_freq_khz;
-       unsigned int    pll_safe_idx;
-       struct clk      *cpu_clk;
-       unsigned int    *volt_table;
-       struct cpufreq_frequency_table  *freq_table;
-       void (*set_freq)(unsigned int, unsigned int);
-       bool (*need_apll_change)(unsigned int, unsigned int);
-       void __iomem    *cmu_regs;
-};
-
-#ifdef CONFIG_ARM_EXYNOS4X12_CPUFREQ
-extern int exynos4x12_cpufreq_init(struct exynos_dvfs_info *);
-#else
-static inline int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info)
-{
-       return -EOPNOTSUPP;
-}
-#endif
-#ifdef CONFIG_ARM_EXYNOS5250_CPUFREQ
-extern int exynos5250_cpufreq_init(struct exynos_dvfs_info *);
-#else
-static inline int exynos5250_cpufreq_init(struct exynos_dvfs_info *info)
-{
-       return -EOPNOTSUPP;
-}
-#endif
-
-#define EXYNOS4_CLKSRC_CPU                     0x14200
-#define EXYNOS4_CLKMUX_STATCPU                 0x14400
-
-#define EXYNOS4_CLKDIV_CPU                     0x14500
-#define EXYNOS4_CLKDIV_CPU1                    0x14504
-#define EXYNOS4_CLKDIV_STATCPU                 0x14600
-#define EXYNOS4_CLKDIV_STATCPU1                        0x14604
-
-#define EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT       (16)
-#define EXYNOS4_CLKMUX_STATCPU_MUXCORE_MASK    (0x7 << EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT)
-
-#define EXYNOS5_APLL_LOCK                      0x00000
-#define EXYNOS5_APLL_CON0                      0x00100
-#define EXYNOS5_CLKMUX_STATCPU                 0x00400
-#define EXYNOS5_CLKDIV_CPU0                    0x00500
-#define EXYNOS5_CLKDIV_CPU1                    0x00504
-#define EXYNOS5_CLKDIV_STATCPU0                        0x00600
-#define EXYNOS5_CLKDIV_STATCPU1                        0x00604
diff --git a/drivers/cpufreq/exynos4x12-cpufreq.c b/drivers/cpufreq/exynos4x12-cpufreq.c
deleted file mode 100644 (file)
index 9e78a85..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 2010-2012 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * EXYNOS4X12 - CPU frequency scaling support
- *
- * 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 <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/cpufreq.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-
-#include "exynos-cpufreq.h"
-
-static struct clk *cpu_clk;
-static struct clk *moutcore;
-static struct clk *mout_mpll;
-static struct clk *mout_apll;
-static struct exynos_dvfs_info *cpufreq;
-
-static unsigned int exynos4x12_volt_table[] = {
-       1350000, 1287500, 1250000, 1187500, 1137500, 1087500, 1037500,
-       1000000,  987500,  975000,  950000,  925000,  900000,  900000
-};
-
-static struct cpufreq_frequency_table exynos4x12_freq_table[] = {
-       {CPUFREQ_BOOST_FREQ, L0, 1500 * 1000},
-       {0, L1, 1400 * 1000},
-       {0, L2, 1300 * 1000},
-       {0, L3, 1200 * 1000},
-       {0, L4, 1100 * 1000},
-       {0, L5, 1000 * 1000},
-       {0, L6,  900 * 1000},
-       {0, L7,  800 * 1000},
-       {0, L8,  700 * 1000},
-       {0, L9,  600 * 1000},
-       {0, L10, 500 * 1000},
-       {0, L11, 400 * 1000},
-       {0, L12, 300 * 1000},
-       {0, L13, 200 * 1000},
-       {0, 0, CPUFREQ_TABLE_END},
-};
-
-static struct apll_freq *apll_freq_4x12;
-
-static struct apll_freq apll_freq_4212[] = {
-       /*
-        * values:
-        * freq
-        * clock divider for CORE, COREM0, COREM1, PERIPH, ATB, PCLK_DBG, APLL, CORE2
-        * clock divider for COPY, HPM, RESERVED
-        * PLL M, P, S
-        */
-       APLL_FREQ(1500, 0, 3, 7, 0, 6, 1, 2, 0, 6, 2, 0, 250, 4, 0),
-       APLL_FREQ(1400, 0, 3, 7, 0, 6, 1, 2, 0, 6, 2, 0, 175, 3, 0),
-       APLL_FREQ(1300, 0, 3, 7, 0, 5, 1, 2, 0, 5, 2, 0, 325, 6, 0),
-       APLL_FREQ(1200, 0, 3, 7, 0, 5, 1, 2, 0, 5, 2, 0, 200, 4, 0),
-       APLL_FREQ(1100, 0, 3, 6, 0, 4, 1, 2, 0, 4, 2, 0, 275, 6, 0),
-       APLL_FREQ(1000, 0, 2, 5, 0, 4, 1, 1, 0, 4, 2, 0, 125, 3, 0),
-       APLL_FREQ(900,  0, 2, 5, 0, 3, 1, 1, 0, 3, 2, 0, 150, 4, 0),
-       APLL_FREQ(800,  0, 2, 5, 0, 3, 1, 1, 0, 3, 2, 0, 100, 3, 0),
-       APLL_FREQ(700,  0, 2, 4, 0, 3, 1, 1, 0, 3, 2, 0, 175, 3, 1),
-       APLL_FREQ(600,  0, 2, 4, 0, 3, 1, 1, 0, 3, 2, 0, 200, 4, 1),
-       APLL_FREQ(500,  0, 2, 4, 0, 3, 1, 1, 0, 3, 2, 0, 125, 3, 1),
-       APLL_FREQ(400,  0, 2, 4, 0, 3, 1, 1, 0, 3, 2, 0, 100, 3, 1),
-       APLL_FREQ(300,  0, 2, 4, 0, 2, 1, 1, 0, 3, 2, 0, 200, 4, 2),
-       APLL_FREQ(200,  0, 1, 3, 0, 1, 1, 1, 0, 3, 2, 0, 100, 3, 2),
-};
-
-static struct apll_freq apll_freq_4412[] = {
-       /*
-        * values:
-        * freq
-        * clock divider for CORE, COREM0, COREM1, PERIPH, ATB, PCLK_DBG, APLL, CORE2
-        * clock divider for COPY, HPM, CORES
-        * PLL M, P, S
-        */
-       APLL_FREQ(1500, 0, 3, 7, 0, 6, 1, 2, 0, 6, 0, 7, 250, 4, 0),
-       APLL_FREQ(1400, 0, 3, 7, 0, 6, 1, 2, 0, 6, 0, 6, 175, 3, 0),
-       APLL_FREQ(1300, 0, 3, 7, 0, 5, 1, 2, 0, 5, 0, 6, 325, 6, 0),
-       APLL_FREQ(1200, 0, 3, 7, 0, 5, 1, 2, 0, 5, 0, 5, 200, 4, 0),
-       APLL_FREQ(1100, 0, 3, 6, 0, 4, 1, 2, 0, 4, 0, 5, 275, 6, 0),
-       APLL_FREQ(1000, 0, 2, 5, 0, 4, 1, 1, 0, 4, 0, 4, 125, 3, 0),
-       APLL_FREQ(900,  0, 2, 5, 0, 3, 1, 1, 0, 3, 0, 4, 150, 4, 0),
-       APLL_FREQ(800,  0, 2, 5, 0, 3, 1, 1, 0, 3, 0, 3, 100, 3, 0),
-       APLL_FREQ(700,  0, 2, 4, 0, 3, 1, 1, 0, 3, 0, 3, 175, 3, 1),
-       APLL_FREQ(600,  0, 2, 4, 0, 3, 1, 1, 0, 3, 0, 2, 200, 4, 1),
-       APLL_FREQ(500,  0, 2, 4, 0, 3, 1, 1, 0, 3, 0, 2, 125, 3, 1),
-       APLL_FREQ(400,  0, 2, 4, 0, 3, 1, 1, 0, 3, 0, 1, 100, 3, 1),
-       APLL_FREQ(300,  0, 2, 4, 0, 2, 1, 1, 0, 3, 0, 1, 200, 4, 2),
-       APLL_FREQ(200,  0, 1, 3, 0, 1, 1, 1, 0, 3, 0, 0, 100, 3, 2),
-};
-
-static void exynos4x12_set_clkdiv(unsigned int div_index)
-{
-       unsigned int tmp;
-
-       /* Change Divider - CPU0 */
-
-       tmp = apll_freq_4x12[div_index].clk_div_cpu0;
-
-       __raw_writel(tmp, cpufreq->cmu_regs + EXYNOS4_CLKDIV_CPU);
-
-       while (__raw_readl(cpufreq->cmu_regs + EXYNOS4_CLKDIV_STATCPU)
-              & 0x11111111)
-               cpu_relax();
-
-       /* Change Divider - CPU1 */
-       tmp = apll_freq_4x12[div_index].clk_div_cpu1;
-
-       __raw_writel(tmp, cpufreq->cmu_regs + EXYNOS4_CLKDIV_CPU1);
-
-       do {
-               cpu_relax();
-               tmp = __raw_readl(cpufreq->cmu_regs + EXYNOS4_CLKDIV_STATCPU1);
-       } while (tmp != 0x0);
-}
-
-static void exynos4x12_set_apll(unsigned int index)
-{
-       unsigned int tmp, freq = apll_freq_4x12[index].freq;
-
-       /* MUX_CORE_SEL = MPLL, ARMCLK uses MPLL for lock time */
-       clk_set_parent(moutcore, mout_mpll);
-
-       do {
-               cpu_relax();
-               tmp = (__raw_readl(cpufreq->cmu_regs + EXYNOS4_CLKMUX_STATCPU)
-                       >> EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT);
-               tmp &= 0x7;
-       } while (tmp != 0x2);
-
-       clk_set_rate(mout_apll, freq * 1000);
-
-       /* MUX_CORE_SEL = APLL */
-       clk_set_parent(moutcore, mout_apll);
-
-       do {
-               cpu_relax();
-               tmp = __raw_readl(cpufreq->cmu_regs + EXYNOS4_CLKMUX_STATCPU);
-               tmp &= EXYNOS4_CLKMUX_STATCPU_MUXCORE_MASK;
-       } while (tmp != (0x1 << EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT));
-}
-
-static void exynos4x12_set_frequency(unsigned int old_index,
-                                 unsigned int new_index)
-{
-       if (old_index > new_index) {
-               exynos4x12_set_clkdiv(new_index);
-               exynos4x12_set_apll(new_index);
-       } else if (old_index < new_index) {
-               exynos4x12_set_apll(new_index);
-               exynos4x12_set_clkdiv(new_index);
-       }
-}
-
-int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info)
-{
-       struct device_node *np;
-       unsigned long rate;
-
-       /*
-        * HACK: This is a temporary workaround to get access to clock
-        * controller registers directly and remove static mappings and
-        * dependencies on platform headers. It is necessary to enable
-        * Exynos multi-platform support and will be removed together with
-        * this whole driver as soon as Exynos gets migrated to use
-        * cpufreq-dt driver.
-        */
-       np = of_find_compatible_node(NULL, NULL, "samsung,exynos4412-clock");
-       if (!np) {
-               pr_err("%s: failed to find clock controller DT node\n",
-                       __func__);
-               return -ENODEV;
-       }
-
-       info->cmu_regs = of_iomap(np, 0);
-       if (!info->cmu_regs) {
-               pr_err("%s: failed to map CMU registers\n", __func__);
-               return -EFAULT;
-       }
-
-       cpu_clk = clk_get(NULL, "armclk");
-       if (IS_ERR(cpu_clk))
-               return PTR_ERR(cpu_clk);
-
-       moutcore = clk_get(NULL, "moutcore");
-       if (IS_ERR(moutcore))
-               goto err_moutcore;
-
-       mout_mpll = clk_get(NULL, "mout_mpll");
-       if (IS_ERR(mout_mpll))
-               goto err_mout_mpll;
-
-       rate = clk_get_rate(mout_mpll) / 1000;
-
-       mout_apll = clk_get(NULL, "mout_apll");
-       if (IS_ERR(mout_apll))
-               goto err_mout_apll;
-
-       if (info->type == EXYNOS_SOC_4212)
-               apll_freq_4x12 = apll_freq_4212;
-       else
-               apll_freq_4x12 = apll_freq_4412;
-
-       info->mpll_freq_khz = rate;
-       /* 800Mhz */
-       info->pll_safe_idx = L7;
-       info->cpu_clk = cpu_clk;
-       info->volt_table = exynos4x12_volt_table;
-       info->freq_table = exynos4x12_freq_table;
-       info->set_freq = exynos4x12_set_frequency;
-
-       cpufreq = info;
-
-       return 0;
-
-err_mout_apll:
-       clk_put(mout_mpll);
-err_mout_mpll:
-       clk_put(moutcore);
-err_moutcore:
-       clk_put(cpu_clk);
-
-       pr_debug("%s: failed initialization\n", __func__);
-       return -EINVAL;
-}
diff --git a/drivers/cpufreq/exynos5250-cpufreq.c b/drivers/cpufreq/exynos5250-cpufreq.c
deleted file mode 100644 (file)
index 3eafdc7..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (c) 2010-20122Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * EXYNOS5250 - CPU frequency scaling support
- *
- * 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 <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/cpufreq.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-
-#include "exynos-cpufreq.h"
-
-static struct clk *cpu_clk;
-static struct clk *moutcore;
-static struct clk *mout_mpll;
-static struct clk *mout_apll;
-static struct exynos_dvfs_info *cpufreq;
-
-static unsigned int exynos5250_volt_table[] = {
-       1300000, 1250000, 1225000, 1200000, 1150000,
-       1125000, 1100000, 1075000, 1050000, 1025000,
-       1012500, 1000000,  975000,  950000,  937500,
-       925000
-};
-
-static struct cpufreq_frequency_table exynos5250_freq_table[] = {
-       {0, L0, 1700 * 1000},
-       {0, L1, 1600 * 1000},
-       {0, L2, 1500 * 1000},
-       {0, L3, 1400 * 1000},
-       {0, L4, 1300 * 1000},
-       {0, L5, 1200 * 1000},
-       {0, L6, 1100 * 1000},
-       {0, L7, 1000 * 1000},
-       {0, L8,  900 * 1000},
-       {0, L9,  800 * 1000},
-       {0, L10, 700 * 1000},
-       {0, L11, 600 * 1000},
-       {0, L12, 500 * 1000},
-       {0, L13, 400 * 1000},
-       {0, L14, 300 * 1000},
-       {0, L15, 200 * 1000},
-       {0, 0, CPUFREQ_TABLE_END},
-};
-
-static struct apll_freq apll_freq_5250[] = {
-       /*
-        * values:
-        * freq
-        * clock divider for ARM, CPUD, ACP, PERIPH, ATB, PCLK_DBG, APLL, ARM2
-        * clock divider for COPY, HPM, RESERVED
-        * PLL M, P, S
-        */
-       APLL_FREQ(1700, 0, 3, 7, 7, 7, 3, 5, 0, 0, 2, 0, 425, 6, 0),
-       APLL_FREQ(1600, 0, 3, 7, 7, 7, 1, 4, 0, 0, 2, 0, 200, 3, 0),
-       APLL_FREQ(1500, 0, 2, 7, 7, 7, 1, 4, 0, 0, 2, 0, 250, 4, 0),
-       APLL_FREQ(1400, 0, 2, 7, 7, 6, 1, 4, 0, 0, 2, 0, 175, 3, 0),
-       APLL_FREQ(1300, 0, 2, 7, 7, 6, 1, 3, 0, 0, 2, 0, 325, 6, 0),
-       APLL_FREQ(1200, 0, 2, 7, 7, 5, 1, 3, 0, 0, 2, 0, 200, 4, 0),
-       APLL_FREQ(1100, 0, 3, 7, 7, 5, 1, 3, 0, 0, 2, 0, 275, 6, 0),
-       APLL_FREQ(1000, 0, 1, 7, 7, 4, 1, 2, 0, 0, 2, 0, 125, 3, 0),
-       APLL_FREQ(900,  0, 1, 7, 7, 4, 1, 2, 0, 0, 2, 0, 150, 4, 0),
-       APLL_FREQ(800,  0, 1, 7, 7, 4, 1, 2, 0, 0, 2, 0, 100, 3, 0),
-       APLL_FREQ(700,  0, 1, 7, 7, 3, 1, 1, 0, 0, 2, 0, 175, 3, 1),
-       APLL_FREQ(600,  0, 1, 7, 7, 3, 1, 1, 0, 0, 2, 0, 200, 4, 1),
-       APLL_FREQ(500,  0, 1, 7, 7, 2, 1, 1, 0, 0, 2, 0, 125, 3, 1),
-       APLL_FREQ(400,  0, 1, 7, 7, 2, 1, 1, 0, 0, 2, 0, 100, 3, 1),
-       APLL_FREQ(300,  0, 1, 7, 7, 1, 1, 1, 0, 0, 2, 0, 200, 4, 2),
-       APLL_FREQ(200,  0, 1, 7, 7, 1, 1, 1, 0, 0, 2, 0, 100, 3, 2),
-};
-
-static void set_clkdiv(unsigned int div_index)
-{
-       unsigned int tmp;
-
-       /* Change Divider - CPU0 */
-
-       tmp = apll_freq_5250[div_index].clk_div_cpu0;
-
-       __raw_writel(tmp, cpufreq->cmu_regs + EXYNOS5_CLKDIV_CPU0);
-
-       while (__raw_readl(cpufreq->cmu_regs + EXYNOS5_CLKDIV_STATCPU0)
-              & 0x11111111)
-               cpu_relax();
-
-       /* Change Divider - CPU1 */
-       tmp = apll_freq_5250[div_index].clk_div_cpu1;
-
-       __raw_writel(tmp, cpufreq->cmu_regs + EXYNOS5_CLKDIV_CPU1);
-
-       while (__raw_readl(cpufreq->cmu_regs + EXYNOS5_CLKDIV_STATCPU1) & 0x11)
-               cpu_relax();
-}
-
-static void set_apll(unsigned int index)
-{
-       unsigned int tmp;
-       unsigned int freq = apll_freq_5250[index].freq;
-
-       /* MUX_CORE_SEL = MPLL, ARMCLK uses MPLL for lock time */
-       clk_set_parent(moutcore, mout_mpll);
-
-       do {
-               cpu_relax();
-               tmp = (__raw_readl(cpufreq->cmu_regs + EXYNOS5_CLKMUX_STATCPU)
-                       >> 16);
-               tmp &= 0x7;
-       } while (tmp != 0x2);
-
-       clk_set_rate(mout_apll, freq * 1000);
-
-       /* MUX_CORE_SEL = APLL */
-       clk_set_parent(moutcore, mout_apll);
-
-       do {
-               cpu_relax();
-               tmp = __raw_readl(cpufreq->cmu_regs + EXYNOS5_CLKMUX_STATCPU);
-               tmp &= (0x7 << 16);
-       } while (tmp != (0x1 << 16));
-}
-
-static void exynos5250_set_frequency(unsigned int old_index,
-                                 unsigned int new_index)
-{
-       if (old_index > new_index) {
-               set_clkdiv(new_index);
-               set_apll(new_index);
-       } else if (old_index < new_index) {
-               set_apll(new_index);
-               set_clkdiv(new_index);
-       }
-}
-
-int exynos5250_cpufreq_init(struct exynos_dvfs_info *info)
-{
-       struct device_node *np;
-       unsigned long rate;
-
-       /*
-        * HACK: This is a temporary workaround to get access to clock
-        * controller registers directly and remove static mappings and
-        * dependencies on platform headers. It is necessary to enable
-        * Exynos multi-platform support and will be removed together with
-        * this whole driver as soon as Exynos gets migrated to use
-        * cpufreq-dt driver.
-        */
-       np = of_find_compatible_node(NULL, NULL, "samsung,exynos5250-clock");
-       if (!np) {
-               pr_err("%s: failed to find clock controller DT node\n",
-                       __func__);
-               return -ENODEV;
-       }
-
-       info->cmu_regs = of_iomap(np, 0);
-       if (!info->cmu_regs) {
-               pr_err("%s: failed to map CMU registers\n", __func__);
-               return -EFAULT;
-       }
-
-       cpu_clk = clk_get(NULL, "armclk");
-       if (IS_ERR(cpu_clk))
-               return PTR_ERR(cpu_clk);
-
-       moutcore = clk_get(NULL, "mout_cpu");
-       if (IS_ERR(moutcore))
-               goto err_moutcore;
-
-       mout_mpll = clk_get(NULL, "mout_mpll");
-       if (IS_ERR(mout_mpll))
-               goto err_mout_mpll;
-
-       rate = clk_get_rate(mout_mpll) / 1000;
-
-       mout_apll = clk_get(NULL, "mout_apll");
-       if (IS_ERR(mout_apll))
-               goto err_mout_apll;
-
-       info->mpll_freq_khz = rate;
-       /* 800Mhz */
-       info->pll_safe_idx = L9;
-       info->cpu_clk = cpu_clk;
-       info->volt_table = exynos5250_volt_table;
-       info->freq_table = exynos5250_freq_table;
-       info->set_freq = exynos5250_set_frequency;
-
-       cpufreq = info;
-
-       return 0;
-
-err_mout_apll:
-       clk_put(mout_mpll);
-err_mout_mpll:
-       clk_put(moutcore);
-err_moutcore:
-       clk_put(cpu_clk);
-
-       pr_err("%s: failed initialization\n", __func__);
-       return -EINVAL;
-}
index 157d421f755bcb4e221cbe77539bf9b7ddf6fcd2..85d5904e5480f0f818a051bba74b9cb39ea6874e 100644 (file)
@@ -1,5 +1,8 @@
 obj-$(CONFIG_RESET_CONTROLLER) += core.o
+obj-$(CONFIG_ARCH_LPC18XX) += reset-lpc18xx.o
 obj-$(CONFIG_ARCH_SOCFPGA) += reset-socfpga.o
 obj-$(CONFIG_ARCH_BERLIN) += reset-berlin.o
 obj-$(CONFIG_ARCH_SUNXI) += reset-sunxi.o
 obj-$(CONFIG_ARCH_STI) += sti/
+obj-$(CONFIG_ARCH_ZYNQ) += reset-zynq.o
+obj-$(CONFIG_ATH79) += reset-ath79.o
diff --git a/drivers/reset/reset-ath79.c b/drivers/reset/reset-ath79.c
new file mode 100644 (file)
index 0000000..9aaf646
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2015 Alban Bedel <albeu@free.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/reset-controller.h>
+
+struct ath79_reset {
+       struct reset_controller_dev rcdev;
+       void __iomem *base;
+       spinlock_t lock;
+};
+
+static int ath79_reset_update(struct reset_controller_dev *rcdev,
+                       unsigned long id, bool assert)
+{
+       struct ath79_reset *ath79_reset =
+               container_of(rcdev, struct ath79_reset, rcdev);
+       unsigned long flags;
+       u32 val;
+
+       spin_lock_irqsave(&ath79_reset->lock, flags);
+       val = readl(ath79_reset->base);
+       if (assert)
+               val |= BIT(id);
+       else
+               val &= ~BIT(id);
+       writel(val, ath79_reset->base);
+       spin_unlock_irqrestore(&ath79_reset->lock, flags);
+
+       return 0;
+}
+
+static int ath79_reset_assert(struct reset_controller_dev *rcdev,
+                       unsigned long id)
+{
+       return ath79_reset_update(rcdev, id, true);
+}
+
+static int ath79_reset_deassert(struct reset_controller_dev *rcdev,
+                               unsigned long id)
+{
+       return ath79_reset_update(rcdev, id, false);
+}
+
+static int ath79_reset_status(struct reset_controller_dev *rcdev,
+                       unsigned long id)
+{
+       struct ath79_reset *ath79_reset =
+               container_of(rcdev, struct ath79_reset, rcdev);
+       u32 val;
+
+       val = readl(ath79_reset->base);
+
+       return !!(val & BIT(id));
+}
+
+static struct reset_control_ops ath79_reset_ops = {
+       .assert = ath79_reset_assert,
+       .deassert = ath79_reset_deassert,
+       .status = ath79_reset_status,
+};
+
+static int ath79_reset_probe(struct platform_device *pdev)
+{
+       struct ath79_reset *ath79_reset;
+       struct resource *res;
+
+       ath79_reset = devm_kzalloc(&pdev->dev,
+                               sizeof(*ath79_reset), GFP_KERNEL);
+       if (!ath79_reset)
+               return -ENOMEM;
+
+       platform_set_drvdata(pdev, ath79_reset);
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       ath79_reset->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ath79_reset->base))
+               return PTR_ERR(ath79_reset->base);
+
+       spin_lock_init(&ath79_reset->lock);
+       ath79_reset->rcdev.ops = &ath79_reset_ops;
+       ath79_reset->rcdev.owner = THIS_MODULE;
+       ath79_reset->rcdev.of_node = pdev->dev.of_node;
+       ath79_reset->rcdev.of_reset_n_cells = 1;
+       ath79_reset->rcdev.nr_resets = 32;
+
+       return reset_controller_register(&ath79_reset->rcdev);
+}
+
+static int ath79_reset_remove(struct platform_device *pdev)
+{
+       struct ath79_reset *ath79_reset = platform_get_drvdata(pdev);
+
+       reset_controller_unregister(&ath79_reset->rcdev);
+
+       return 0;
+}
+
+static const struct of_device_id ath79_reset_dt_ids[] = {
+       { .compatible = "qca,ar7100-reset", },
+       { },
+};
+MODULE_DEVICE_TABLE(of, ath79_reset_dt_ids);
+
+static struct platform_driver ath79_reset_driver = {
+       .probe  = ath79_reset_probe,
+       .remove = ath79_reset_remove,
+       .driver = {
+               .name           = "ath79-reset",
+               .of_match_table = ath79_reset_dt_ids,
+       },
+};
+module_platform_driver(ath79_reset_driver);
+
+MODULE_AUTHOR("Alban Bedel <albeu@free.fr>");
+MODULE_DESCRIPTION("AR71xx Reset Controller Driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/reset/reset-lpc18xx.c b/drivers/reset/reset-lpc18xx.c
new file mode 100644 (file)
index 0000000..70922e9
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * Reset driver for NXP LPC18xx/43xx Reset Generation Unit (RGU).
+ *
+ * Copyright (C) 2015 Joachim Eastwood <manabian@gmail.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.
+ *
+ */
+
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/reboot.h>
+#include <linux/reset-controller.h>
+#include <linux/spinlock.h>
+
+/* LPC18xx RGU registers */
+#define LPC18XX_RGU_CTRL0              0x100
+#define LPC18XX_RGU_CTRL1              0x104
+#define LPC18XX_RGU_ACTIVE_STATUS0     0x150
+#define LPC18XX_RGU_ACTIVE_STATUS1     0x154
+
+#define LPC18XX_RGU_RESETS_PER_REG     32
+
+/* Internal reset outputs */
+#define LPC18XX_RGU_CORE_RST   0
+#define LPC43XX_RGU_M0SUB_RST  12
+#define LPC43XX_RGU_M0APP_RST  56
+
+struct lpc18xx_rgu_data {
+       struct reset_controller_dev rcdev;
+       struct clk *clk_delay;
+       struct clk *clk_reg;
+       void __iomem *base;
+       spinlock_t lock;
+       u32 delay_us;
+};
+
+#define to_rgu_data(p) container_of(p, struct lpc18xx_rgu_data, rcdev)
+
+static void __iomem *rgu_base;
+
+static int lpc18xx_rgu_restart(struct notifier_block *this, unsigned long mode,
+                              void *cmd)
+{
+       writel(BIT(LPC18XX_RGU_CORE_RST), rgu_base + LPC18XX_RGU_CTRL0);
+       mdelay(2000);
+
+       pr_emerg("%s: unable to restart system\n", __func__);
+
+       return NOTIFY_DONE;
+}
+
+static struct notifier_block lpc18xx_rgu_restart_nb = {
+       .notifier_call = lpc18xx_rgu_restart,
+       .priority = 192,
+};
+
+/*
+ * The LPC18xx RGU has mostly self-deasserting resets except for the
+ * two reset lines going to the internal Cortex-M0 cores.
+ *
+ * To prevent the M0 core resets from accidentally getting deasserted
+ * status register must be check and bits in control register set to
+ * preserve the state.
+ */
+static int lpc18xx_rgu_setclear_reset(struct reset_controller_dev *rcdev,
+                                     unsigned long id, bool set)
+{
+       struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev);
+       u32 stat_offset = LPC18XX_RGU_ACTIVE_STATUS0;
+       u32 ctrl_offset = LPC18XX_RGU_CTRL0;
+       unsigned long flags;
+       u32 stat, rst_bit;
+
+       stat_offset += (id / LPC18XX_RGU_RESETS_PER_REG) * sizeof(u32);
+       ctrl_offset += (id / LPC18XX_RGU_RESETS_PER_REG) * sizeof(u32);
+       rst_bit = 1 << (id % LPC18XX_RGU_RESETS_PER_REG);
+
+       spin_lock_irqsave(&rc->lock, flags);
+       stat = ~readl(rc->base + stat_offset);
+       if (set)
+               writel(stat | rst_bit, rc->base + ctrl_offset);
+       else
+               writel(stat & ~rst_bit, rc->base + ctrl_offset);
+       spin_unlock_irqrestore(&rc->lock, flags);
+
+       return 0;
+}
+
+static int lpc18xx_rgu_assert(struct reset_controller_dev *rcdev,
+                             unsigned long id)
+{
+       return lpc18xx_rgu_setclear_reset(rcdev, id, true);
+}
+
+static int lpc18xx_rgu_deassert(struct reset_controller_dev *rcdev,
+                               unsigned long id)
+{
+       return lpc18xx_rgu_setclear_reset(rcdev, id, false);
+}
+
+/* Only M0 cores require explicit reset deassert */
+static int lpc18xx_rgu_reset(struct reset_controller_dev *rcdev,
+                            unsigned long id)
+{
+       struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev);
+
+       lpc18xx_rgu_assert(rcdev, id);
+       udelay(rc->delay_us);
+
+       switch (id) {
+       case LPC43XX_RGU_M0SUB_RST:
+       case LPC43XX_RGU_M0APP_RST:
+               lpc18xx_rgu_setclear_reset(rcdev, id, false);
+       }
+
+       return 0;
+}
+
+static int lpc18xx_rgu_status(struct reset_controller_dev *rcdev,
+                             unsigned long id)
+{
+       struct lpc18xx_rgu_data *rc = to_rgu_data(rcdev);
+       u32 bit, offset = LPC18XX_RGU_ACTIVE_STATUS0;
+
+       offset += (id / LPC18XX_RGU_RESETS_PER_REG) * sizeof(u32);
+       bit = 1 << (id % LPC18XX_RGU_RESETS_PER_REG);
+
+       return !(readl(rc->base + offset) & bit);
+}
+
+static struct reset_control_ops lpc18xx_rgu_ops = {
+       .reset          = lpc18xx_rgu_reset,
+       .assert         = lpc18xx_rgu_assert,
+       .deassert       = lpc18xx_rgu_deassert,
+       .status         = lpc18xx_rgu_status,
+};
+
+static int lpc18xx_rgu_probe(struct platform_device *pdev)
+{
+       struct lpc18xx_rgu_data *rc;
+       struct resource *res;
+       u32 fcclk, firc;
+       int ret;
+
+       rc = devm_kzalloc(&pdev->dev, sizeof(*rc), GFP_KERNEL);
+       if (!rc)
+               return -ENOMEM;
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       rc->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(rc->base))
+               return PTR_ERR(rc->base);
+
+       rc->clk_reg = devm_clk_get(&pdev->dev, "reg");
+       if (IS_ERR(rc->clk_reg)) {
+               dev_err(&pdev->dev, "reg clock not found\n");
+               return PTR_ERR(rc->clk_reg);
+       }
+
+       rc->clk_delay = devm_clk_get(&pdev->dev, "delay");
+       if (IS_ERR(rc->clk_delay)) {
+               dev_err(&pdev->dev, "delay clock not found\n");
+               return PTR_ERR(rc->clk_delay);
+       }
+
+       ret = clk_prepare_enable(rc->clk_reg);
+       if (ret) {
+               dev_err(&pdev->dev, "unable to enable reg clock\n");
+               return ret;
+       }
+
+       ret = clk_prepare_enable(rc->clk_delay);
+       if (ret) {
+               dev_err(&pdev->dev, "unable to enable delay clock\n");
+               goto dis_clk_reg;
+       }
+
+       fcclk = clk_get_rate(rc->clk_reg) / USEC_PER_SEC;
+       firc = clk_get_rate(rc->clk_delay) / USEC_PER_SEC;
+       if (fcclk == 0 || firc == 0)
+               rc->delay_us = 2;
+       else
+               rc->delay_us = DIV_ROUND_UP(fcclk, firc * firc);
+
+       spin_lock_init(&rc->lock);
+
+       rc->rcdev.owner = THIS_MODULE;
+       rc->rcdev.nr_resets = 64;
+       rc->rcdev.ops = &lpc18xx_rgu_ops;
+       rc->rcdev.of_node = pdev->dev.of_node;
+
+       platform_set_drvdata(pdev, rc);
+
+       ret = reset_controller_register(&rc->rcdev);
+       if (ret) {
+               dev_err(&pdev->dev, "unable to register device\n");
+               goto dis_clks;
+       }
+
+       rgu_base = rc->base;
+       ret = register_restart_handler(&lpc18xx_rgu_restart_nb);
+       if (ret)
+               dev_warn(&pdev->dev, "failed to register restart handler\n");
+
+       return 0;
+
+dis_clks:
+       clk_disable_unprepare(rc->clk_delay);
+dis_clk_reg:
+       clk_disable_unprepare(rc->clk_reg);
+
+       return ret;
+}
+
+static int lpc18xx_rgu_remove(struct platform_device *pdev)
+{
+       struct lpc18xx_rgu_data *rc = platform_get_drvdata(pdev);
+       int ret;
+
+       ret = unregister_restart_handler(&lpc18xx_rgu_restart_nb);
+       if (ret)
+               dev_warn(&pdev->dev, "failed to unregister restart handler\n");
+
+       reset_controller_unregister(&rc->rcdev);
+
+       clk_disable_unprepare(rc->clk_delay);
+       clk_disable_unprepare(rc->clk_reg);
+
+       return 0;
+}
+
+static const struct of_device_id lpc18xx_rgu_match[] = {
+       { .compatible = "nxp,lpc1850-rgu" },
+       { }
+};
+MODULE_DEVICE_TABLE(of, lpc18xx_rgu_match);
+
+static struct platform_driver lpc18xx_rgu_driver = {
+       .probe  = lpc18xx_rgu_probe,
+       .remove = lpc18xx_rgu_remove,
+       .driver = {
+               .name           = "lpc18xx-reset",
+               .of_match_table = lpc18xx_rgu_match,
+       },
+};
+module_platform_driver(lpc18xx_rgu_driver);
+
+MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>");
+MODULE_DESCRIPTION("Reset driver for LPC18xx/43xx RGU");
+MODULE_LICENSE("GPL v2");
index 0a8def35ea2e8c80143164f007da7b9a261492ae..1a6c5d66c83bb10f352f3b16681fce54d2b5dd47 100644 (file)
 #include <linux/types.h>
 
 #define NR_BANKS               4
-#define OFFSET_MODRST          0x10
 
 struct socfpga_reset_data {
        spinlock_t                      lock;
        void __iomem                    *membase;
+       u32                             modrst_offset;
        struct reset_controller_dev     rcdev;
 };
 
@@ -45,8 +45,8 @@ static int socfpga_reset_assert(struct reset_controller_dev *rcdev,
 
        spin_lock_irqsave(&data->lock, flags);
 
-       reg = readl(data->membase + OFFSET_MODRST + (bank * NR_BANKS));
-       writel(reg | BIT(offset), data->membase + OFFSET_MODRST +
+       reg = readl(data->membase + data->modrst_offset + (bank * NR_BANKS));
+       writel(reg | BIT(offset), data->membase + data->modrst_offset +
                                 (bank * NR_BANKS));
        spin_unlock_irqrestore(&data->lock, flags);
 
@@ -67,8 +67,8 @@ static int socfpga_reset_deassert(struct reset_controller_dev *rcdev,
 
        spin_lock_irqsave(&data->lock, flags);
 
-       reg = readl(data->membase + OFFSET_MODRST + (bank * NR_BANKS));
-       writel(reg & ~BIT(offset), data->membase + OFFSET_MODRST +
+       reg = readl(data->membase + data->modrst_offset + (bank * NR_BANKS));
+       writel(reg & ~BIT(offset), data->membase + data->modrst_offset +
                                  (bank * NR_BANKS));
 
        spin_unlock_irqrestore(&data->lock, flags);
@@ -85,7 +85,7 @@ static int socfpga_reset_status(struct reset_controller_dev *rcdev,
        int offset = id % BITS_PER_LONG;
        u32 reg;
 
-       reg = readl(data->membase + OFFSET_MODRST + (bank * NR_BANKS));
+       reg = readl(data->membase + data->modrst_offset + (bank * NR_BANKS));
 
        return !(reg & BIT(offset));
 }
@@ -100,6 +100,8 @@ static int socfpga_reset_probe(struct platform_device *pdev)
 {
        struct socfpga_reset_data *data;
        struct resource *res;
+       struct device *dev = &pdev->dev;
+       struct device_node *np = dev->of_node;
 
        /*
         * The binding was mainlined without the required property.
@@ -120,6 +122,11 @@ static int socfpga_reset_probe(struct platform_device *pdev)
        if (IS_ERR(data->membase))
                return PTR_ERR(data->membase);
 
+       if (of_property_read_u32(np, "altr,modrst-offset", &data->modrst_offset)) {
+               dev_warn(dev, "missing altr,modrst-offset property, assuming 0x10!\n");
+               data->modrst_offset = 0x10;
+       }
+
        spin_lock_init(&data->lock);
 
        data->rcdev.owner = THIS_MODULE;
diff --git a/drivers/reset/reset-zynq.c b/drivers/reset/reset-zynq.c
new file mode 100644 (file)
index 0000000..89318a5
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2015, National Instruments Corp.
+ *
+ * Xilinx Zynq Reset controller driver
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/reset-controller.h>
+#include <linux/regmap.h>
+#include <linux/types.h>
+
+struct zynq_reset_data {
+       struct regmap *slcr;
+       struct reset_controller_dev rcdev;
+       u32 offset;
+};
+
+#define to_zynq_reset_data(p)          \
+       container_of((p), struct zynq_reset_data, rcdev)
+
+static int zynq_reset_assert(struct reset_controller_dev *rcdev,
+                            unsigned long id)
+{
+       struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
+
+       int bank = id / BITS_PER_LONG;
+       int offset = id % BITS_PER_LONG;
+
+       pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__,
+                bank, offset);
+
+       return regmap_update_bits(priv->slcr,
+                                 priv->offset + (bank * 4),
+                                 BIT(offset),
+                                 BIT(offset));
+}
+
+static int zynq_reset_deassert(struct reset_controller_dev *rcdev,
+                              unsigned long id)
+{
+       struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
+
+       int bank = id / BITS_PER_LONG;
+       int offset = id % BITS_PER_LONG;
+
+       pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__,
+                bank, offset);
+
+       return regmap_update_bits(priv->slcr,
+                                 priv->offset + (bank * 4),
+                                 BIT(offset),
+                                 ~BIT(offset));
+}
+
+static int zynq_reset_status(struct reset_controller_dev *rcdev,
+                            unsigned long id)
+{
+       struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
+
+       int bank = id / BITS_PER_LONG;
+       int offset = id % BITS_PER_LONG;
+       int ret;
+       u32 reg;
+
+       pr_debug("%s: %s reset bank %u offset %u\n", KBUILD_MODNAME, __func__,
+                bank, offset);
+
+       ret = regmap_read(priv->slcr, priv->offset + (bank * 4), &reg);
+       if (ret)
+               return ret;
+
+       return !!(reg & BIT(offset));
+}
+
+static struct reset_control_ops zynq_reset_ops = {
+       .assert         = zynq_reset_assert,
+       .deassert       = zynq_reset_deassert,
+       .status         = zynq_reset_status,
+};
+
+static int zynq_reset_probe(struct platform_device *pdev)
+{
+       struct resource *res;
+       struct zynq_reset_data *priv;
+
+       priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+       if (!priv)
+               return -ENOMEM;
+       platform_set_drvdata(pdev, priv);
+
+       priv->slcr = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
+                                                    "syscon");
+       if (IS_ERR(priv->slcr)) {
+               dev_err(&pdev->dev, "unable to get zynq-slcr regmap");
+               return PTR_ERR(priv->slcr);
+       }
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       if (!res) {
+               dev_err(&pdev->dev, "missing IO resource\n");
+               return -ENODEV;
+       }
+
+       priv->offset = res->start;
+
+       priv->rcdev.owner = THIS_MODULE;
+       priv->rcdev.nr_resets = resource_size(res) / 4 * BITS_PER_LONG;
+       priv->rcdev.ops = &zynq_reset_ops;
+       priv->rcdev.of_node = pdev->dev.of_node;
+       reset_controller_register(&priv->rcdev);
+
+       return 0;
+}
+
+static int zynq_reset_remove(struct platform_device *pdev)
+{
+       struct zynq_reset_data *priv = platform_get_drvdata(pdev);
+
+       reset_controller_unregister(&priv->rcdev);
+
+       return 0;
+}
+
+static const struct of_device_id zynq_reset_dt_ids[] = {
+       { .compatible = "xlnx,zynq-reset", },
+       { /* sentinel */ },
+};
+
+static struct platform_driver zynq_reset_driver = {
+       .probe  = zynq_reset_probe,
+       .remove = zynq_reset_remove,
+       .driver = {
+               .name           = KBUILD_MODNAME,
+               .of_match_table = zynq_reset_dt_ids,
+       },
+};
+module_platform_driver(zynq_reset_driver);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Moritz Fischer <moritz.fischer@ettus.com>");
+MODULE_DESCRIPTION("Zynq Reset Controller Driver");
index d83db5d72d08c119736314cca53f9024826aa235..827eb3dae47de95e4ab0960a0c2fce4dd0be6dda 100644 (file)
@@ -11,7 +11,7 @@
 #include <linux/of.h>
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
-#include <dt-bindings/reset-controller/stih407-resets.h>
+#include <dt-bindings/reset/stih407-resets.h>
 #include "reset-syscfg.h"
 
 /* STiH407 Peripheral powerdown definitions. */
@@ -126,7 +126,7 @@ static const struct syscfg_reset_controller_data stih407_picophyreset_controller
        .channels = stih407_picophyresets,
 };
 
-static struct of_device_id stih407_reset_match[] = {
+static const struct of_device_id stih407_reset_match[] = {
        {
                .compatible = "st,stih407-powerdown",
                .data = &stih407_powerdown_controller,
index 8dad603d863c9b779d6e34c006d886c19531f1ec..6f220cdbef46ce5246164a9c434a4c976dfc5823 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
 
-#include <dt-bindings/reset-controller/stih415-resets.h>
+#include <dt-bindings/reset/stih415-resets.h>
 
 #include "reset-syscfg.h"
 
@@ -89,7 +89,7 @@ static struct syscfg_reset_controller_data stih415_softreset_controller = {
        .channels = stih415_softresets,
 };
 
-static struct of_device_id stih415_reset_match[] = {
+static const struct of_device_id stih415_reset_match[] = {
        { .compatible = "st,stih415-powerdown",
          .data = &stih415_powerdown_controller, },
        { .compatible = "st,stih415-softreset",
index 79aed70a26c013b800a521e9e626e5f48df41e61..c581d606ef0f76f482610fd1933fd3563a853f2b 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
 
-#include <dt-bindings/reset-controller/stih416-resets.h>
+#include <dt-bindings/reset/stih416-resets.h>
 
 #include "reset-syscfg.h"
 
@@ -120,7 +120,7 @@ static struct syscfg_reset_controller_data stih416_softreset_controller = {
        .channels = stih416_softresets,
 };
 
-static struct of_device_id stih416_reset_match[] = {
+static const struct of_device_id stih416_reset_match[] = {
        { .compatible = "st,stih416-powerdown",
          .data = &stih416_powerdown_controller, },
        { .compatible = "st,stih416-softreset",
index aab088d301999278fa283a7f6d4a6e38ce6546d6..63d01c15d2b368f63114622c2fac1eb51977eee7 100644 (file)
@@ -31,6 +31,7 @@
 #define CLK_FOUT_VPLL                  4
 #define CLK_FOUT_UPLL                  5
 #define CLK_FOUT_MPLL                  6
+#define CLK_ARM_CLK                    7
 
 /* Muxes */
 #define CLK_MOUT_MPLL_USER_L           16
index 4273891dc78e41b998fcf17a203868a7237f3095..8183d1c237d9562fc899ea44571a756a7f1491c7 100644 (file)
@@ -21,6 +21,7 @@
 #define CLK_FOUT_CPLL          6
 #define CLK_FOUT_EPLL          7
 #define CLK_FOUT_VPLL          8
+#define CLK_ARM_CLK            9
 
 /* gate for special clocks (sclk) */
 #define CLK_SCLK_CAM_BAYER     128
diff --git a/include/dt-bindings/reset-controller/stih407-resets.h b/include/dt-bindings/reset-controller/stih407-resets.h
deleted file mode 100644 (file)
index 02d4328..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This header provides constants for the reset controller
- * based peripheral powerdown requests on the STMicroelectronics
- * STiH407 SoC.
- */
-#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH407
-#define _DT_BINDINGS_RESET_CONTROLLER_STIH407
-
-/* Powerdown requests control 0 */
-#define STIH407_EMISS_POWERDOWN                0
-#define STIH407_NAND_POWERDOWN         1
-
-/* Synp GMAC PowerDown */
-#define STIH407_ETH1_POWERDOWN         2
-
-/* Powerdown requests control 1 */
-#define STIH407_USB3_POWERDOWN         3
-#define STIH407_USB2_PORT1_POWERDOWN   4
-#define STIH407_USB2_PORT0_POWERDOWN   5
-#define STIH407_PCIE1_POWERDOWN                6
-#define STIH407_PCIE0_POWERDOWN                7
-#define STIH407_SATA1_POWERDOWN                8
-#define STIH407_SATA0_POWERDOWN                9
-
-/* Reset defines */
-#define STIH407_ETH1_SOFTRESET         0
-#define STIH407_MMC1_SOFTRESET         1
-#define STIH407_PICOPHY_SOFTRESET      2
-#define STIH407_IRB_SOFTRESET          3
-#define STIH407_PCIE0_SOFTRESET                4
-#define STIH407_PCIE1_SOFTRESET                5
-#define STIH407_SATA0_SOFTRESET                6
-#define STIH407_SATA1_SOFTRESET                7
-#define STIH407_MIPHY0_SOFTRESET       8
-#define STIH407_MIPHY1_SOFTRESET       9
-#define STIH407_MIPHY2_SOFTRESET       10
-#define STIH407_SATA0_PWR_SOFTRESET    11
-#define STIH407_SATA1_PWR_SOFTRESET    12
-#define STIH407_DELTA_SOFTRESET                13
-#define STIH407_BLITTER_SOFTRESET      14
-#define STIH407_HDTVOUT_SOFTRESET      15
-#define STIH407_HDQVDP_SOFTRESET       16
-#define STIH407_VDP_AUX_SOFTRESET      17
-#define STIH407_COMPO_SOFTRESET                18
-#define STIH407_HDMI_TX_PHY_SOFTRESET  19
-#define STIH407_JPEG_DEC_SOFTRESET     20
-#define STIH407_VP8_DEC_SOFTRESET      21
-#define STIH407_GPU_SOFTRESET          22
-#define STIH407_HVA_SOFTRESET          23
-#define STIH407_ERAM_HVA_SOFTRESET     24
-#define STIH407_LPM_SOFTRESET          25
-#define STIH407_KEYSCAN_SOFTRESET      26
-#define STIH407_USB2_PORT0_SOFTRESET   27
-#define STIH407_USB2_PORT1_SOFTRESET   28
-
-/* Picophy reset defines */
-#define STIH407_PICOPHY0_RESET         0
-#define STIH407_PICOPHY1_RESET         1
-#define STIH407_PICOPHY2_RESET         2
-
-#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH407 */
diff --git a/include/dt-bindings/reset-controller/stih415-resets.h b/include/dt-bindings/reset-controller/stih415-resets.h
deleted file mode 100644 (file)
index c2329fe..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * This header provides constants for the reset controller
- * based peripheral powerdown requests on the STMicroelectronics
- * STiH415 SoC.
- */
-#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH415
-#define _DT_BINDINGS_RESET_CONTROLLER_STIH415
-
-#define STIH415_EMISS_POWERDOWN                0
-#define STIH415_NAND_POWERDOWN         1
-#define STIH415_KEYSCAN_POWERDOWN      2
-#define STIH415_USB0_POWERDOWN         3
-#define STIH415_USB1_POWERDOWN         4
-#define STIH415_USB2_POWERDOWN         5
-#define STIH415_SATA0_POWERDOWN                6
-#define STIH415_SATA1_POWERDOWN                7
-#define STIH415_PCIE_POWERDOWN         8
-
-#define STIH415_ETH0_SOFTRESET         0
-#define STIH415_ETH1_SOFTRESET         1
-#define STIH415_IRB_SOFTRESET          2
-#define STIH415_USB0_SOFTRESET         3
-#define STIH415_USB1_SOFTRESET         4
-#define STIH415_USB2_SOFTRESET         5
-#define STIH415_KEYSCAN_SOFTRESET      6
-
-#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH415 */
diff --git a/include/dt-bindings/reset-controller/stih416-resets.h b/include/dt-bindings/reset-controller/stih416-resets.h
deleted file mode 100644 (file)
index fcf9af1..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This header provides constants for the reset controller
- * based peripheral powerdown requests on the STMicroelectronics
- * STiH416 SoC.
- */
-#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH416
-#define _DT_BINDINGS_RESET_CONTROLLER_STIH416
-
-#define STIH416_EMISS_POWERDOWN                0
-#define STIH416_NAND_POWERDOWN         1
-#define STIH416_KEYSCAN_POWERDOWN      2
-#define STIH416_USB0_POWERDOWN         3
-#define STIH416_USB1_POWERDOWN         4
-#define STIH416_USB2_POWERDOWN         5
-#define STIH416_USB3_POWERDOWN         6
-#define STIH416_SATA0_POWERDOWN                7
-#define STIH416_SATA1_POWERDOWN                8
-#define STIH416_PCIE0_POWERDOWN                9
-#define STIH416_PCIE1_POWERDOWN                10
-
-#define STIH416_ETH0_SOFTRESET         0
-#define STIH416_ETH1_SOFTRESET         1
-#define STIH416_IRB_SOFTRESET          2
-#define STIH416_USB0_SOFTRESET         3
-#define STIH416_USB1_SOFTRESET         4
-#define STIH416_USB2_SOFTRESET         5
-#define STIH416_USB3_SOFTRESET         6
-#define STIH416_SATA0_SOFTRESET                7
-#define STIH416_SATA1_SOFTRESET                8
-#define STIH416_PCIE0_SOFTRESET                9
-#define STIH416_PCIE1_SOFTRESET                10
-#define STIH416_AUD_DAC_SOFTRESET      11
-#define STIH416_HDTVOUT_SOFTRESET      12
-#define STIH416_VTAC_M_RX_SOFTRESET    13
-#define STIH416_VTAC_A_RX_SOFTRESET    14
-#define STIH416_SYNC_HD_SOFTRESET      15
-#define STIH416_SYNC_SD_SOFTRESET      16
-#define STIH416_BLITTER_SOFTRESET      17
-#define STIH416_GPU_SOFTRESET          18
-#define STIH416_VTAC_M_TX_SOFTRESET    19
-#define STIH416_VTAC_A_TX_SOFTRESET    20
-#define STIH416_VTG_AUX_SOFTRESET      21
-#define STIH416_JPEG_DEC_SOFTRESET     22
-#define STIH416_HVA_SOFTRESET          23
-#define STIH416_COMPO_M_SOFTRESET      24
-#define STIH416_COMPO_A_SOFTRESET      25
-#define STIH416_VP8_DEC_SOFTRESET      26
-#define STIH416_VTG_MAIN_SOFTRESET     27
-#define STIH416_KEYSCAN_SOFTRESET      28
-
-#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH416 */
diff --git a/include/dt-bindings/reset/stih407-resets.h b/include/dt-bindings/reset/stih407-resets.h
new file mode 100644 (file)
index 0000000..02d4328
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * This header provides constants for the reset controller
+ * based peripheral powerdown requests on the STMicroelectronics
+ * STiH407 SoC.
+ */
+#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH407
+#define _DT_BINDINGS_RESET_CONTROLLER_STIH407
+
+/* Powerdown requests control 0 */
+#define STIH407_EMISS_POWERDOWN                0
+#define STIH407_NAND_POWERDOWN         1
+
+/* Synp GMAC PowerDown */
+#define STIH407_ETH1_POWERDOWN         2
+
+/* Powerdown requests control 1 */
+#define STIH407_USB3_POWERDOWN         3
+#define STIH407_USB2_PORT1_POWERDOWN   4
+#define STIH407_USB2_PORT0_POWERDOWN   5
+#define STIH407_PCIE1_POWERDOWN                6
+#define STIH407_PCIE0_POWERDOWN                7
+#define STIH407_SATA1_POWERDOWN                8
+#define STIH407_SATA0_POWERDOWN                9
+
+/* Reset defines */
+#define STIH407_ETH1_SOFTRESET         0
+#define STIH407_MMC1_SOFTRESET         1
+#define STIH407_PICOPHY_SOFTRESET      2
+#define STIH407_IRB_SOFTRESET          3
+#define STIH407_PCIE0_SOFTRESET                4
+#define STIH407_PCIE1_SOFTRESET                5
+#define STIH407_SATA0_SOFTRESET                6
+#define STIH407_SATA1_SOFTRESET                7
+#define STIH407_MIPHY0_SOFTRESET       8
+#define STIH407_MIPHY1_SOFTRESET       9
+#define STIH407_MIPHY2_SOFTRESET       10
+#define STIH407_SATA0_PWR_SOFTRESET    11
+#define STIH407_SATA1_PWR_SOFTRESET    12
+#define STIH407_DELTA_SOFTRESET                13
+#define STIH407_BLITTER_SOFTRESET      14
+#define STIH407_HDTVOUT_SOFTRESET      15
+#define STIH407_HDQVDP_SOFTRESET       16
+#define STIH407_VDP_AUX_SOFTRESET      17
+#define STIH407_COMPO_SOFTRESET                18
+#define STIH407_HDMI_TX_PHY_SOFTRESET  19
+#define STIH407_JPEG_DEC_SOFTRESET     20
+#define STIH407_VP8_DEC_SOFTRESET      21
+#define STIH407_GPU_SOFTRESET          22
+#define STIH407_HVA_SOFTRESET          23
+#define STIH407_ERAM_HVA_SOFTRESET     24
+#define STIH407_LPM_SOFTRESET          25
+#define STIH407_KEYSCAN_SOFTRESET      26
+#define STIH407_USB2_PORT0_SOFTRESET   27
+#define STIH407_USB2_PORT1_SOFTRESET   28
+
+/* Picophy reset defines */
+#define STIH407_PICOPHY0_RESET         0
+#define STIH407_PICOPHY1_RESET         1
+#define STIH407_PICOPHY2_RESET         2
+
+#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH407 */
diff --git a/include/dt-bindings/reset/stih415-resets.h b/include/dt-bindings/reset/stih415-resets.h
new file mode 100644 (file)
index 0000000..c2329fe
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * This header provides constants for the reset controller
+ * based peripheral powerdown requests on the STMicroelectronics
+ * STiH415 SoC.
+ */
+#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH415
+#define _DT_BINDINGS_RESET_CONTROLLER_STIH415
+
+#define STIH415_EMISS_POWERDOWN                0
+#define STIH415_NAND_POWERDOWN         1
+#define STIH415_KEYSCAN_POWERDOWN      2
+#define STIH415_USB0_POWERDOWN         3
+#define STIH415_USB1_POWERDOWN         4
+#define STIH415_USB2_POWERDOWN         5
+#define STIH415_SATA0_POWERDOWN                6
+#define STIH415_SATA1_POWERDOWN                7
+#define STIH415_PCIE_POWERDOWN         8
+
+#define STIH415_ETH0_SOFTRESET         0
+#define STIH415_ETH1_SOFTRESET         1
+#define STIH415_IRB_SOFTRESET          2
+#define STIH415_USB0_SOFTRESET         3
+#define STIH415_USB1_SOFTRESET         4
+#define STIH415_USB2_SOFTRESET         5
+#define STIH415_KEYSCAN_SOFTRESET      6
+
+#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH415 */
diff --git a/include/dt-bindings/reset/stih416-resets.h b/include/dt-bindings/reset/stih416-resets.h
new file mode 100644 (file)
index 0000000..fcf9af1
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * This header provides constants for the reset controller
+ * based peripheral powerdown requests on the STMicroelectronics
+ * STiH416 SoC.
+ */
+#ifndef _DT_BINDINGS_RESET_CONTROLLER_STIH416
+#define _DT_BINDINGS_RESET_CONTROLLER_STIH416
+
+#define STIH416_EMISS_POWERDOWN                0
+#define STIH416_NAND_POWERDOWN         1
+#define STIH416_KEYSCAN_POWERDOWN      2
+#define STIH416_USB0_POWERDOWN         3
+#define STIH416_USB1_POWERDOWN         4
+#define STIH416_USB2_POWERDOWN         5
+#define STIH416_USB3_POWERDOWN         6
+#define STIH416_SATA0_POWERDOWN                7
+#define STIH416_SATA1_POWERDOWN                8
+#define STIH416_PCIE0_POWERDOWN                9
+#define STIH416_PCIE1_POWERDOWN                10
+
+#define STIH416_ETH0_SOFTRESET         0
+#define STIH416_ETH1_SOFTRESET         1
+#define STIH416_IRB_SOFTRESET          2
+#define STIH416_USB0_SOFTRESET         3
+#define STIH416_USB1_SOFTRESET         4
+#define STIH416_USB2_SOFTRESET         5
+#define STIH416_USB3_SOFTRESET         6
+#define STIH416_SATA0_SOFTRESET                7
+#define STIH416_SATA1_SOFTRESET                8
+#define STIH416_PCIE0_SOFTRESET                9
+#define STIH416_PCIE1_SOFTRESET                10
+#define STIH416_AUD_DAC_SOFTRESET      11
+#define STIH416_HDTVOUT_SOFTRESET      12
+#define STIH416_VTAC_M_RX_SOFTRESET    13
+#define STIH416_VTAC_A_RX_SOFTRESET    14
+#define STIH416_SYNC_HD_SOFTRESET      15
+#define STIH416_SYNC_SD_SOFTRESET      16
+#define STIH416_BLITTER_SOFTRESET      17
+#define STIH416_GPU_SOFTRESET          18
+#define STIH416_VTAC_M_TX_SOFTRESET    19
+#define STIH416_VTAC_A_TX_SOFTRESET    20
+#define STIH416_VTG_AUX_SOFTRESET      21
+#define STIH416_JPEG_DEC_SOFTRESET     22
+#define STIH416_HVA_SOFTRESET          23
+#define STIH416_COMPO_M_SOFTRESET      24
+#define STIH416_COMPO_A_SOFTRESET      25
+#define STIH416_VP8_DEC_SOFTRESET      26
+#define STIH416_VTG_MAIN_SOFTRESET     27
+#define STIH416_KEYSCAN_SOFTRESET      28
+
+#endif /* _DT_BINDINGS_RESET_CONTROLLER_STIH416 */
index da5602bd77d75996f78114b7369b409ea52f007d..7f65f9cff951033607b0beba1c1ab0df70ee60e9 100644 (file)
@@ -74,6 +74,20 @@ static inline int device_reset_optional(struct device *dev)
        return -ENOSYS;
 }
 
+static inline struct reset_control *__must_check reset_control_get(
+                                       struct device *dev, const char *id)
+{
+       WARN_ON(1);
+       return ERR_PTR(-EINVAL);
+}
+
+static inline struct reset_control *__must_check devm_reset_control_get(
+                                       struct device *dev, const char *id)
+{
+       WARN_ON(1);
+       return ERR_PTR(-EINVAL);
+}
+
 static inline struct reset_control *reset_control_get_optional(
                                        struct device *dev, const char *id)
 {