Topic branch for Device Tree changes for Exynos 3250 for v4.7:

Merge necessary new clocks from Sylwester (used by new board) and add support
 for Exynos3250-based Artik5 board.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJXDgugAAoJEME3ZuaGi4PX8JIP/0UmBC5FLJLgzFRgzVcGvwjS
 nzLRcIqwQ7i/ztT3r3kUndjrHLQAqWRynrNdq0w+W+DYGVEYEToBfVbqdVezJ9i+
 XgfeXvUU/k+4aZHpsrcl6ZST7MD6UQn9qSLB1R3Y4zHVw68gldNPMtDNpyrQJutu
 440+vd5fKZxmcEx8exAIon4AEnPXsDkom2YQTd4NfeKmVHxsfJsv3Irj3DcRrcYV
 StCp7n1UhZmEP3pAhOhyGx6XmU/Qrl4iYZtSwpmDC5PwAt8dHQ8b4Z/N+uP8Ghas
 jCaNTA+z9mKdTyNNdLAefWeIddhCTp1eAdzoV5znBAIDjpGBqZjWKbq77v1m2NqU
 jSmY+m/UpexNnC5b5eYJbjU+l85VhXECog3qjCUjuJtj+nib95icYM536WhTzhRf
 ZEZ/NZyU5ReO10bTYr+YTb4O/iz+SMzfghGvs2HXpVk4X89utG7HUqcYg6zCQIWz
 4sL8JGAhq1bmzzgnS+8km2ZpRD6gmssB+2tG16nJk0tJFplHzU9Wr46Q/ttMeg9I
 d2GK/sE9EFooQH+fqoQmi1aNKb3fEJlUIvqpxfTeFbhnRpOCCfaIq+U9bmg9JxdG
 HuZuEO0ClNFyQN8TBUNmzZL5XzYGPUksbVWyVc4VuZ0PNEXLeMsyzCUmgrLEPQEU
 EzgObFNrzaouu8QN3rii
 =mQfO
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt-exynos3250-artik5-4.7' into next/dt

Topic branch for Device Tree changes for Exynos 3250 for v4.7:

Merge necessary new clocks from Sylwester (used by new board) and add support
for Exynos3250-based Artik5 board.
This commit is contained in:
Krzysztof Kozlowski 2016-04-13 11:05:00 +02:00
commit e94cfa067b
10 changed files with 590 additions and 4 deletions

View File

@ -2,6 +2,8 @@
Required root node properties:
- compatible = should be one or more of the following.
- "samsung,artik5" - for Exynos3250-based Samsung ARTIK5 module.
- "samsung,artik5-eval" - for Exynos3250-based Samsung ARTIK5 eval board.
- "samsung,monk" - for Exynos3250-based Samsung Simband board.
- "samsung,rinato" - for Exynos3250-based Samsung Gear2 board.
- "samsung,smdkv310" - for Exynos4210-based Samsung SMDKV310 eval board.

View File

@ -112,6 +112,7 @@ dtb-$(CONFIG_ARCH_DIGICOLOR) += \
dtb-$(CONFIG_ARCH_EFM32) += \
efm32gg-dk3750.dtb
dtb-$(CONFIG_ARCH_EXYNOS3) += \
exynos3250-artik5-eval.dtb \
exynos3250-monk.dtb \
exynos3250-rinato.dtb
dtb-$(CONFIG_ARCH_EXYNOS4) += \

View File

@ -0,0 +1,43 @@
/*
* Samsung's Exynos3250 based ARTIK5 evaluation board device tree source
*
* Copyright (c) 2016 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Device tree source file for Samsung's ARTIK5 evaluation board
* which is based on Samsung Exynos3250 SoC.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
#include "exynos3250-artik5.dtsi"
/ {
model = "Samsung ARTIK5 evaluation board";
compatible = "samsung,artik5-eval", "samsung,artik5",
"samsung,exynos3250", "samsung,exynos3";
};
&mshc_2 {
num-slots = <1>;
cap-sd-highspeed;
disable-wp;
vqmmc-supply = <&ldo3_reg>;
card-detect-delay = <200>;
clock-frequency = <100000000>;
clock-freq-min-max = <400000 100000000>;
samsung,dw-mshc-ciu-div = <1>;
samsung,dw-mshc-sdr-timing = <0 1>;
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_cmd &sd2_clk &sd2_cd &sd2_bus1 &sd2_bus4>;
bus-width = <4>;
status = "okay";
};
&serial_2 {
status = "okay";
};

View File

@ -0,0 +1,334 @@
/*
* Samsung's Exynos3250 based ARTIK5 module device tree source
*
* Copyright (c) 2016 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Device tree source file for Samsung's ARTIK5 module which is based on
* Samsung Exynos3250 SoC.
*
* 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 "exynos3250.dtsi"
#include <dt-bindings/clock/samsung,s2mps11.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ {
compatible = "samsung,artik5", "samsung,exynos3250", "samsung,exynos3";
chosen {
stdout-path = &serial_2;
};
memory {
reg = <0x40000000 0x1ff00000>;
};
firmware@0205f000 {
compatible = "samsung,secure-firmware";
reg = <0x0205f000 0x1000>;
};
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 {
vdd-supply = <&ldo7_reg>;
assigned-clocks = <&cmu CLK_SCLK_TSADC>;
assigned-clock-rates = <6000000>;
};
&cpu0 {
cpu0-supply = <&buck2_reg>;
};
&i2c_0 {
#address-cells = <1>;
#size-cells = <0>;
samsung,i2c-sda-delay = <100>;
samsung,i2c-slave-addr = <0x10>;
samsung,i2c-max-bus-freq = <100000>;
status = "okay";
s2mps14_pmic@66 {
compatible = "samsung,s2mps14-pmic";
interrupt-parent = <&gpx3>;
interrupts = <5 IRQ_TYPE_NONE>;
reg = <0x66>;
s2mps14_osc: clocks {
compatible = "samsung,s2mps14-clk";
#clock-cells = <1>;
clock-output-names = "s2mps14_ap", "unused",
"s2mps14_bt";
};
regulators {
ldo1_reg: LDO1 {
/* VDD_ALIVE15x */
regulator-name = "VLDO1_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
ldo2_reg: LDO2 {
/* VDDQM176 ~ VDDQM185 */
regulator-name = "VLDO2_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
};
ldo3_reg: LDO3 {
/*
* VDD1_E106 ~ VDD1_E111
* DVDD_RTC_AP, DVDD_MMC2_AP
*/
regulator-name = "VLDO3_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
ldo4_reg: LDO4 {
/* AVDD_PLL1120 ~ AVDD_PLL11201 */
regulator-name = "VLDO4_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
ldo5_reg: LDO5 {
/* VDDI_PLL_ISO141 ~ VDDI_PLL_ISO142 */
regulator-name = "VLDO5_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
ldo6_reg: LDO6 {
/* VDD_USB, VDD10_HSIC */
regulator-name = "VLDO6_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
ldo7_reg: LDO7 {
/*
* VDD18P, AVDD18_TS, AVDD18_HSIC, AVDD_PLL2,
* AVDD_ADC, AVDD_ABB_0, M4S_VDD18
*/
regulator-name = "VLDO7_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
ldo8_reg: LDO8 {
/* AVDD33_UOTG */
regulator-name = "VLDO8_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-always-on;
};
ldo9_reg: LDO9 {
/* VDDQ_E86 ~ VDDQ_E105*/
regulator-name = "VLDO9_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
};
ldo10_reg: LDO10 {
regulator-name = "VLDO10_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
};
ldo11_reg: LDO11 {
/* VDD74 ~ VDD75 */
regulator-name = "VLDO11_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
samsung,ext-control-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
};
ldo12_reg: LDO12 {
/* VDD72 ~ VDD73 */
regulator-name = "VLDO12_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
samsung,ext-control-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
};
ldo13_reg: LDO13 {
regulator-name = "VLDO13_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
};
ldo14_reg: LDO14 {
regulator-name = "VLDO14_2.7V";
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
ldo15_reg: LDO15 {
regulator-name = "VLDO_3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
ldo16_reg: LDO16 {
regulator-name = "VLDO16_3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
ldo17_reg: LDO17 {
regulator-name = "VLDO17_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
ldo18_reg: LDO18 {
/* DVDD_MMC2_AP */
regulator-name = "VLDO18_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
};
ldo19_reg: LDO19 {
regulator-name = "VLDO19_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
ldo20_reg: LDO20 {
regulator-name = "VLDO20_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
ldo21_reg: LDO21 {
regulator-name = "VLDO21_1.25V";
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1250000>;
};
ldo22_reg: LDO22 {
regulator-name = "VLDO22_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
ldo23_reg: LDO23 {
/* Xi2c3_SDA/SCL, Xi2c7_SDA/SCL, WLAN_SDIO */
regulator-name = "VLDO23_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
ldo24_reg: LDO24 {
regulator-name = "VLDO24_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
ldo25_reg: LDO25 {
regulator-name = "VLDO25_3.0V";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
buck1_reg: BUCK1 {
/* VDD_MIF */
regulator-name = "VBUCK1_1.0V";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
buck2_reg: BUCK2 {
/* VDD_CPU */
regulator-name = "VBUCK2_1.2V";
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
};
buck3_reg: BUCK3 {
/* VDD_G3D */
regulator-name = "VBUCK3_1.0V";
regulator-min-microvolt = <850000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
buck4_reg: BUCK4 {
regulator-name = "VBUCK4_1.95V";
regulator-min-microvolt = <1950000>;
regulator-max-microvolt = <1950000>;
regulator-always-on;
};
buck5_reg: BUCK5 {
regulator-name = "VBUCK5_1.35V";
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
};
};
};
};
&mshc_0 {
num-slots = <1>;
non-removable;
cap-mmc-highspeed;
card-detect-delay = <200>;
vmmc-supply = <&ldo12_reg>;
clock-frequency = <100000000>;
clock-freq-min-max = <400000 100000000>;
samsung,dw-mshc-ciu-div = <1>;
samsung,dw-mshc-sdr-timing = <0 1>;
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
bus-width = <8>;
status = "okay";
};
&rtc {
clocks = <&cmu CLK_RTC>, <&s2mps14_osc S2MPS11_CLK_AP>;
clock-names = "rtc", "rtc_src";
status = "okay";
};
&tmu {
status = "okay";
};
&xusbxti {
clock-frequency = <24000000>;
};

View File

@ -558,7 +558,17 @@ sleep0: sleep-state {
&pinctrl_1 {
pinctrl-names = "default";
pinctrl-0 = <&sleep1>;
pinctrl-0 = <&initial1 &sleep1>;
initial1: initial-state {
PIN_IN(gpk2-0, DOWN, LV1);
PIN_IN(gpk2-1, DOWN, LV1);
PIN_IN(gpk2-2, DOWN, LV1);
PIN_IN(gpk2-3, DOWN, LV1);
PIN_IN(gpk2-4, DOWN, LV1);
PIN_IN(gpk2-5, DOWN, LV1);
PIN_IN(gpk2-6, DOWN, LV1);
};
sleep1: sleep-state {
PIN_SLP(gpe0-0, PREV, NONE);

View File

@ -16,11 +16,49 @@
#define PIN_PULL_DOWN 1
#define PIN_PULL_UP 3
#define PIN_DRV_LV1 0
#define PIN_DRV_LV2 2
#define PIN_DRV_LV3 1
#define PIN_DRV_LV4 3
#define PIN_PDN_OUT0 0
#define PIN_PDN_OUT1 1
#define PIN_PDN_INPUT 2
#define PIN_PDN_PREV 3
#define PIN_IN(_pin, _pull, _drv) \
_pin { \
samsung,pins = #_pin; \
samsung,pin-function = <0>; \
samsung,pin-pud = <PIN_PULL_ ##_pull>; \
samsung,pin-drv = <PIN_DRV_ ##_drv>; \
}
#define PIN_OUT(_pin, _drv) \
_pin { \
samsung,pins = #_pin; \
samsung,pin-function = <1>; \
samsung,pin-pud = <0>; \
samsung,pin-drv = <PIN_DRV_ ##_drv>; \
}
#define PIN_OUT_SET(_pin, _val, _drv) \
_pin { \
samsung,pins = #_pin; \
samsung,pin-function = <1>; \
samsung,pin-pud = <0>; \
samsung,pin-drv = <PIN_DRV_ ##_drv>; \
samsung,pin-val = <_val>; \
}
#define PIN_CFG(_pin, _sel, _pull, _drv) \
_pin { \
samsung,pins = #_pin; \
samsung,pin-function = <_sel>; \
samsung,pin-pud = <PIN_PULL_ ##_pull>; \
samsung,pin-drv = <PIN_DRV_ ##_drv>; \
}
#define PIN_SLP(_pin, _mode, _pull) \
_pin { \
samsung,pins = #_pin; \
@ -120,6 +158,13 @@ i2c2_bus: i2c2-bus {
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>;
};
i2c3_bus: i2c3-bus {
samsung,pins = "gpa1-2", "gpa1-3";
samsung,pin-function = <3>;
@ -445,6 +490,41 @@ sd1_bus4: sd1-bus-width4 {
samsung,pin-drv = <3>;
};
sd2_clk: sd2-clk {
samsung,pins = "gpk2-0";
samsung,pin-function = <2>;
samsung,pin-pud = <0>;
samsung,pin-drv = <3>;
};
sd2_cmd: sd2-cmd {
samsung,pins = "gpk2-1";
samsung,pin-function = <2>;
samsung,pin-pud = <0>;
samsung,pin-drv = <3>;
};
sd2_cd: sd2-cd {
samsung,pins = "gpk2-2";
samsung,pin-function = <2>;
samsung,pin-pud = <3>;
samsung,pin-drv = <3>;
};
sd2_bus1: sd2-bus-width1 {
samsung,pins = "gpk2-3";
samsung,pin-function = <2>;
samsung,pin-pud = <3>;
samsung,pin-drv = <3>;
};
sd2_bus4: sd2-bus-width4 {
samsung,pins = "gpk2-4", "gpk2-5", "gpk2-6";
samsung,pin-function = <2>;
samsung,pin-pud = <3>;
samsung,pin-drv = <3>;
};
cam_port_b_io: cam-port-b-io {
samsung,pins = "gpm0-0", "gpm0-1", "gpm0-2", "gpm0-3",
"gpm0-4", "gpm0-5", "gpm0-6", "gpm0-7",

View File

@ -681,7 +681,21 @@ &xusbxti {
&pinctrl_0 {
pinctrl-names = "default";
pinctrl-0 = <&sleep0>;
pinctrl-0 = <&initial0 &sleep0>;
initial0: initial-state {
PIN_IN(gpa1-4, DOWN, LV1);
PIN_IN(gpa1-5, DOWN, LV1);
PIN_IN(gpc0-0, DOWN, LV1);
PIN_IN(gpc0-1, DOWN, LV1);
PIN_IN(gpc0-2, DOWN, LV1);
PIN_IN(gpc0-3, DOWN, LV1);
PIN_IN(gpc0-4, DOWN, LV1);
PIN_IN(gpd0-0, DOWN, LV1);
PIN_IN(gpd0-1, DOWN, LV1);
};
sleep0: sleep-state {
PIN_SLP(gpa0-0, INPUT, DOWN);
@ -735,7 +749,60 @@ sleep0: sleep-state {
&pinctrl_1 {
pinctrl-names = "default";
pinctrl-0 = <&sleep1>;
pinctrl-0 = <&initial1 &sleep1>;
initial1: initial-state {
PIN_IN(gpe0-6, DOWN, LV1);
PIN_IN(gpe0-7, DOWN, LV1);
PIN_IN(gpe1-0, DOWN, LV1);
PIN_IN(gpe1-3, DOWN, LV1);
PIN_IN(gpe1-4, DOWN, LV1);
PIN_IN(gpe1-5, DOWN, LV1);
PIN_IN(gpe1-6, DOWN, LV1);
PIN_IN(gpk2-0, DOWN, LV1);
PIN_IN(gpk2-1, DOWN, LV1);
PIN_IN(gpk2-2, DOWN, LV1);
PIN_IN(gpk2-3, DOWN, LV1);
PIN_IN(gpk2-4, DOWN, LV1);
PIN_IN(gpk2-5, DOWN, LV1);
PIN_IN(gpk2-6, DOWN, LV1);
PIN_IN(gpm0-0, DOWN, LV1);
PIN_IN(gpm0-1, DOWN, LV1);
PIN_IN(gpm0-2, DOWN, LV1);
PIN_IN(gpm0-3, DOWN, LV1);
PIN_IN(gpm0-4, DOWN, LV1);
PIN_IN(gpm0-5, DOWN, LV1);
PIN_IN(gpm0-6, DOWN, LV1);
PIN_IN(gpm0-7, DOWN, LV1);
PIN_IN(gpm1-0, DOWN, LV1);
PIN_IN(gpm1-1, DOWN, LV1);
PIN_IN(gpm1-2, DOWN, LV1);
PIN_IN(gpm1-3, DOWN, LV1);
PIN_IN(gpm1-4, DOWN, LV1);
PIN_IN(gpm1-5, DOWN, LV1);
PIN_IN(gpm1-6, DOWN, LV1);
PIN_IN(gpm2-0, DOWN, LV1);
PIN_IN(gpm2-1, DOWN, LV1);
PIN_IN(gpm3-0, DOWN, LV1);
PIN_IN(gpm3-1, DOWN, LV1);
PIN_IN(gpm3-2, DOWN, LV1);
PIN_IN(gpm3-3, DOWN, LV1);
PIN_IN(gpm3-4, DOWN, LV1);
PIN_IN(gpm4-1, DOWN, LV1);
PIN_IN(gpm4-2, DOWN, LV1);
PIN_IN(gpm4-3, DOWN, LV1);
PIN_IN(gpm4-4, DOWN, LV1);
PIN_IN(gpm4-5, DOWN, LV1);
PIN_IN(gpm4-6, DOWN, LV1);
PIN_IN(gpm4-7, DOWN, LV1);
};
sleep1: sleep-state {
PIN_SLP(gpe0-0, PREV, NONE);

View File

@ -31,6 +31,7 @@ aliases {
pinctrl1 = &pinctrl_1;
mshc0 = &mshc_0;
mshc1 = &mshc_1;
mshc2 = &mshc_2;
spi0 = &spi_0;
spi1 = &spi_1;
i2c0 = &i2c_0;
@ -43,6 +44,7 @@ aliases {
i2c7 = &i2c_7;
serial0 = &serial_0;
serial1 = &serial_1;
serial2 = &serial_2;
};
cpus {
@ -357,6 +359,18 @@ mshc_1: mshc@12520000 {
status = "disabled";
};
mshc_2: mshc@12530000 {
compatible = "samsung,exynos5250-dw-mshc";
reg = <0x12530000 0x1000>;
interrupts = <0 144 0>;
clocks = <&cmu CLK_SDMMC2>, <&cmu CLK_SCLK_MMC2>;
clock-names = "biu", "ciu";
fifo-depth = <0x80>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
exynos_usbphy: exynos-usbphy@125B0000 {
compatible = "samsung,exynos3250-usb2-phy";
reg = <0x125B0000 0x100>;
@ -452,6 +466,17 @@ serial_1: serial@13810000 {
status = "disabled";
};
serial_2: serial@13820000 {
compatible = "samsung,exynos4210-uart";
reg = <0x13820000 0x100>;
interrupts = <0 111 0>;
clocks = <&cmu CLK_UART2>, <&cmu CLK_SCLK_UART2>;
clock-names = "uart", "clk_uart_baud0";
pinctrl-names = "default";
pinctrl-0 = <&uart2_data>;
status = "disabled";
};
i2c_0: i2c@13860000 {
#address-cells = <1>;
#size-cells = <0>;

View File

@ -302,10 +302,12 @@ static struct samsung_mux_clock mux_clks[] __initdata = {
/* SRC_FSYS */
MUX(CLK_MOUT_TSADC, "mout_tsadc", group_sclk_p, SRC_FSYS, 28, 4),
MUX(CLK_MOUT_MMC2, "mout_mmc2", group_sclk_p, SRC_FSYS, 8, 4),
MUX(CLK_MOUT_MMC1, "mout_mmc1", group_sclk_p, SRC_FSYS, 4, 4),
MUX(CLK_MOUT_MMC0, "mout_mmc0", group_sclk_p, SRC_FSYS, 0, 4),
/* SRC_PERIL0 */
MUX(CLK_MOUT_UART2, "mout_uart2", group_sclk_p, SRC_PERIL0, 8, 4),
MUX(CLK_MOUT_UART1, "mout_uart1", group_sclk_p, SRC_PERIL0, 4, 4),
MUX(CLK_MOUT_UART0, "mout_uart0", group_sclk_p, SRC_PERIL0, 0, 4),
@ -389,7 +391,13 @@ static struct samsung_div_clock div_clks[] __initdata = {
CLK_SET_RATE_PARENT, 0),
DIV(CLK_DIV_MMC0, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4),
/* DIV_FSYS2 */
DIV_F(CLK_DIV_MMC2_PRE, "div_mmc2_pre", "div_mmc2", DIV_FSYS2, 8, 8,
CLK_SET_RATE_PARENT, 0),
DIV(CLK_DIV_MMC2, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4),
/* DIV_PERIL0 */
DIV(CLK_DIV_UART2, "div_uart2", "mout_uart2", DIV_PERIL0, 8, 4),
DIV(CLK_DIV_UART1, "div_uart1", "mout_uart1", DIV_PERIL0, 4, 4),
DIV(CLK_DIV_UART0, "div_uart0", "mout_uart0", DIV_PERIL0, 0, 4),
@ -538,6 +546,8 @@ static struct samsung_gate_clock gate_clks[] __initdata = {
GATE_SCLK_FSYS, 9, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_EBI, "sclk_ebi", "div_ebi",
GATE_SCLK_FSYS, 6, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_MMC2, "sclk_mmc2", "div_mmc2_pre",
GATE_SCLK_FSYS, 2, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_MMC1, "sclk_mmc1", "div_mmc1_pre",
GATE_SCLK_FSYS, 1, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_MMC0, "sclk_mmc0", "div_mmc0_pre",
@ -552,6 +562,9 @@ static struct samsung_gate_clock gate_clks[] __initdata = {
GATE_SCLK_PERIL, 7, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_SPI0, "sclk_spi0", "div_spi0_pre",
GATE_SCLK_PERIL, 6, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_UART2, "sclk_uart2", "div_uart2",
GATE_SCLK_PERIL, 2, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_UART1, "sclk_uart1", "div_uart1",
GATE_SCLK_PERIL, 1, CLK_SET_RATE_PARENT, 0),
GATE(CLK_SCLK_UART0, "sclk_uart0", "div_uart0",
@ -630,6 +643,7 @@ static struct samsung_gate_clock gate_clks[] __initdata = {
GATE(CLK_USBOTG, "usbotg", "div_aclk_200", GATE_IP_FSYS, 13, 0, 0),
GATE(CLK_USBHOST, "usbhost", "div_aclk_200", GATE_IP_FSYS, 12, 0, 0),
GATE(CLK_SROMC, "sromc", "div_aclk_200", GATE_IP_FSYS, 11, 0, 0),
GATE(CLK_SDMMC2, "sdmmc2", "div_aclk_200", GATE_IP_FSYS, 7, 0, 0),
GATE(CLK_SDMMC1, "sdmmc1", "div_aclk_200", GATE_IP_FSYS, 6, 0, 0),
GATE(CLK_SDMMC0, "sdmmc0", "div_aclk_200", GATE_IP_FSYS, 5, 0, 0),
GATE(CLK_PDMA1, "pdma1", "div_aclk_200", GATE_IP_FSYS, 1, 0, 0),
@ -649,6 +663,7 @@ static struct samsung_gate_clock gate_clks[] __initdata = {
GATE(CLK_I2C2, "i2c2", "div_aclk_100", GATE_IP_PERIL, 8, 0, 0),
GATE(CLK_I2C1, "i2c1", "div_aclk_100", GATE_IP_PERIL, 7, 0, 0),
GATE(CLK_I2C0, "i2c0", "div_aclk_100", GATE_IP_PERIL, 6, 0, 0),
GATE(CLK_UART2, "uart2", "div_aclk_100", GATE_IP_PERIL, 2, 0, 0),
GATE(CLK_UART1, "uart1", "div_aclk_100", GATE_IP_PERIL, 1, 0, 0),
GATE(CLK_UART0, "uart0", "div_aclk_100", GATE_IP_PERIL, 0, 0, 0),
};

View File

@ -79,6 +79,8 @@
#define CLK_MOUT_CORE 58
#define CLK_MOUT_APLL 59
#define CLK_MOUT_ACLK_266_SUB 60
#define CLK_MOUT_UART2 61
#define CLK_MOUT_MMC2 62
/* Dividers */
#define CLK_DIV_GPL 64
@ -127,6 +129,9 @@
#define CLK_DIV_CORE 107
#define CLK_DIV_HPM 108
#define CLK_DIV_COPY 109
#define CLK_DIV_UART2 110
#define CLK_DIV_MMC2_PRE 111
#define CLK_DIV_MMC2 112
/* Gates */
#define CLK_ASYNC_G3D 128
@ -223,6 +228,8 @@
#define CLK_BLOCK_MFC 219
#define CLK_BLOCK_CAM 220
#define CLK_SMIES 221
#define CLK_UART2 222
#define CLK_SDMMC2 223
/* Special clocks */
#define CLK_SCLK_JPEG 224
@ -249,12 +256,14 @@
#define CLK_SCLK_SPI0 245
#define CLK_SCLK_UART1 246
#define CLK_SCLK_UART0 247
#define CLK_SCLK_UART2 248
#define CLK_SCLK_MMC2 249
/*
* Total number of clocks of main CMU.
* NOTE: Must be equal to last clock ID increased by one.
*/
#define CLK_NR_CLKS 248
#define CLK_NR_CLKS 250
/*
* CMU DMC