mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
ARM: SoC cleanups for 3.19
The remaining cleanups for 3.19 are to a large part result of devicetree conversion nearing completion on two other platforms besides AT91: * Like AT91, Renesas shmobile is in the process to migrate to DT and multiplatform, but using a different approach of doing it one SoC at a time. For 3.19, the r8a7791 platform and associated\ "Koelsch" board are considered complete and we remove the non-DT non-multiplatform support for this. * The ARM Versatile Express has supported DT and multiplatform for a long time, but we have still kept the legacy board files around, because not all drivers were fully working before. We have finally taken the last step to remove the board files. Other changes in this branch are preparation for the later branches or just unrelated to the more interesting changes: * The dts files for arm64 get moved into per-vendor directories for a clearer structure. * Some dead code removal (zynq, exynos, davinci, imx) * Using pr_*() macros more consistently instead of printk(KERN_*) in some platform code. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAVIdpgGCrR//JCVInAQIr/BAA3UZvPPf5dwy5OkULPTghvWueeL9NWZHr 8KwNWIIkIzCgr8zUf2HrMRRLtG429WQWHWxNA+TH9HpcHFGo/zJDBPaJ63cb3Rv1 YLDGJ0zYPXjOsiWUWHm2M5B4hWj0Is5CwYnuozcpLykzQ9QsLMTIv2CAXoJXpH9S sAdx/B5e9G7IqzlJRgbvCPNAZleLYUneYoIW5L68MaFIjfKXVrHzY6w0CJFt/UDa CVbP0iwVQNnL1Opr3ABAkBkJ7rrFU17jpBWMtrNsyyMCZQADiV5Z4+IBnW0uWSZj zn92dycwOSYRmrgOrI2J6r5vFtxWRyWfR5Au5rD02oQTIucGiLmaKMV5gNhoQrEq v53IknDZzqv+xbiARGnJKGdJs70AYjrurpNgXXzJt3W4dZ6vssotxhiYEXbpPPDN v5QxrOStePY+qBHeMLuQi8VoV9SI+j/YAiaXak4QWmiGHVDzvBfZ2P3wMCbj04Jp oxCZ6IGMczYwvqQ8vWXJOueLm+IfM0GcEFwslUwO95rMRMv7JRCXdvfNhL7wLlu8 f2Hd/Pk/u0bOUQXhZlFKNRFg78t4hgD1hMKHgmpEDTZ8P1XMuIrWoQu0xkSQZsYG MiGIqwRd5Ow9OWzWq3DNJ4EjhmvPYv2X/Dcvu7Jv4yq1zZQ8G6OnWkmWWn5ghq6M grvB27RnbuE= =Apdh -----END PGP SIGNATURE----- Merge tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC cleanups from Arnd Bergmann: "The remaining cleanups for 3.19 are to a large part result of devicetree conversion nearing completion on two other platforms besides AT91: - Like AT91, Renesas shmobile is in the process to migrate to DT and multiplatform, but using a different approach of doing it one SoC at a time. For 3.19, the r8a7791 platform and associated "Koelsch" board are considered complete and we remove the non-DT non-multiplatform support for this. - The ARM Versatile Express has supported DT and multiplatform for a long time, but we have still kept the legacy board files around, because not all drivers were fully working before. We have finally taken the last step to remove the board files. Other changes in this branch are preparation for the later branches or just unrelated to the more interesting changes: - The dts files for arm64 get moved into per-vendor directories for a clearer structure. - Some dead code removal (zynq, exynos, davinci, imx) - Using pr_*() macros more consistently instead of printk(KERN_*) in some platform code" * tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (71 commits) ARM: zynq: Remove secondary_startup() declaration from header ARM: vexpress: Enable regulator framework when MMCI is in use ARM: vexpress: Remove non-DT code ARM: imx: Remove unneeded .map_io initialization ARM: dts: imx6qdl-sabresd: Fix the microphone route ARM: imx: refactor mxc_iomux_mode() ARM: imx: simplify clk_pllv3_prepare() ARM: imx6q: drop unnecessary semicolon ARM: imx: clean up machine mxc_arch_reset_init_dt reset init ARM: dts: imx6qdl-rex: Remove unneeded 'fsl,mode' property ARM: dts: imx6qdl-gw5x: Remove unneeded 'fsl,mode' property ARM: dts: imx6qdl-sabresd: Use IMX6QDL_CLK_CKO define ARM: at91: remove useless init_time for DT-only SoCs ARM: davinci: Remove redundant casts ARM: davinci: Use standard logging styles ARM: shmobile: r8a7779: Spelling/grammar s/entity/identity/, s/map/mapping/ ARM: shmobile: sh7372: Spelling/grammar s/entity map/identity mapping/ ARM: shmobile: sh73a0: Spelling/grammar s/entity map/identity mapping/ ARM: EXYNOS: Remove unused static iomapping ARM: at91: fix build breakage due to legacy board removals ...
This commit is contained in:
commit
6c9e92476b
@ -1374,7 +1374,6 @@ F: arch/arm/boot/dts/sh*
|
||||
F: arch/arm/configs/ape6evm_defconfig
|
||||
F: arch/arm/configs/armadillo800eva_defconfig
|
||||
F: arch/arm/configs/bockw_defconfig
|
||||
F: arch/arm/configs/koelsch_defconfig
|
||||
F: arch/arm/configs/kzm9g_defconfig
|
||||
F: arch/arm/configs/lager_defconfig
|
||||
F: arch/arm/configs/mackerel_defconfig
|
||||
|
@ -350,6 +350,7 @@ config ARCH_REALVIEW
|
||||
select ICST
|
||||
select NEED_MACH_MEMORY_H
|
||||
select PLAT_VERSATILE
|
||||
select PLAT_VERSATILE_SCHED_CLOCK
|
||||
help
|
||||
This enables support for ARM Ltd RealView boards.
|
||||
|
||||
@ -365,6 +366,7 @@ config ARCH_VERSATILE
|
||||
select ICST
|
||||
select PLAT_VERSATILE
|
||||
select PLAT_VERSATILE_CLOCK
|
||||
select PLAT_VERSATILE_SCHED_CLOCK
|
||||
select VERSATILE_FPGA_IRQ
|
||||
help
|
||||
This enables support for ARM Ltd Versatile board.
|
||||
|
@ -312,8 +312,12 @@ $(INSTALL_TARGETS):
|
||||
$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
|
||||
|
||||
PHONY += dtbs dtbs_install
|
||||
dtbs dtbs_install: prepare scripts
|
||||
$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $@
|
||||
|
||||
dtbs: prepare scripts
|
||||
$(Q)$(MAKE) $(build)=$(boot)/dts
|
||||
|
||||
dtbs_install:
|
||||
$(Q)$(MAKE) $(dtbinst)=$(boot)/dts
|
||||
|
||||
# We use MRPROPER_FILES and CLEAN_FILES now
|
||||
archclean:
|
||||
|
@ -376,25 +376,24 @@ dtb-$(CONFIG_ARCH_S5PV210) += s5pv210-aquila.dtb \
|
||||
s5pv210-smdkc110.dtb \
|
||||
s5pv210-smdkv210.dtb \
|
||||
s5pv210-torbreck.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += r7s72100-genmai.dtb \
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += \
|
||||
r8a73a4-ape6evm.dtb \
|
||||
r8a73a4-ape6evm-reference.dtb \
|
||||
r8a7740-armadillo800eva.dtb \
|
||||
r8a7778-bockw.dtb \
|
||||
r8a7778-bockw-reference.dtb \
|
||||
r8a7779-marzen.dtb \
|
||||
r8a7791-koelsch.dtb \
|
||||
r8a7790-lager.dtb \
|
||||
sh7372-mackerel.dtb \
|
||||
sh73a0-kzm9g.dtb \
|
||||
sh73a0-kzm9g-reference.dtb \
|
||||
r8a73a4-ape6evm.dtb \
|
||||
r8a73a4-ape6evm-reference.dtb \
|
||||
sh7372-mackerel.dtb
|
||||
sh73a0-kzm9g-reference.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb \
|
||||
r7s72100-genmai.dtb \
|
||||
r8a7740-armadillo800eva.dtb \
|
||||
r8a7779-marzen.dtb \
|
||||
r8a7790-lager.dtb \
|
||||
r8a7791-henninger.dtb \
|
||||
r8a7791-koelsch.dtb \
|
||||
r8a7790-lager.dtb \
|
||||
r8a7779-marzen.dtb \
|
||||
r8a7794-alt.dtb
|
||||
dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \
|
||||
socfpga_cyclone5_socdk.dtb \
|
||||
@ -517,15 +516,7 @@ dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \
|
||||
dove-dove-db.dtb
|
||||
dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb
|
||||
|
||||
targets += dtbs dtbs_install
|
||||
targets += $(dtb-y)
|
||||
endif
|
||||
|
||||
# *.dtb used to be generated in the directory above. Clean out the
|
||||
# old build results so people don't accidentally use them.
|
||||
dtbs: $(addprefix $(obj)/, $(dtb-y))
|
||||
$(Q)rm -f $(obj)/../*.dtb
|
||||
|
||||
clean-files := *.dtb
|
||||
|
||||
dtbs_install: $(addsuffix _dtbinst_, $(dtb-y))
|
||||
always := $(dtb-y)
|
||||
clean-files := *.dtb
|
||||
|
@ -25,37 +25,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS1,115200n81 ignore_loglevel root=/dev/nfs ip=dhcp";
|
||||
};
|
||||
|
||||
reg_1p8v: regulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
reg_3p3v: regulator@1 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-3.3V";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
lan9220@20000000 {
|
||||
compatible = "smsc,lan9220", "smsc,lan9115";
|
||||
reg = <0x20000000 0x10000>;
|
||||
phy-mode = "mii";
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_RISING>;
|
||||
reg-io-width = <4>;
|
||||
smsc,irq-active-high;
|
||||
smsc,irq-push-pull;
|
||||
vddvario-supply = <®_1p8v>;
|
||||
vdd33a-supply = <®_3p3v>;
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
@ -92,4 +62,35 @@
|
||||
gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
reg_1p8v: regulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
reg_3p3v: regulator@1 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-3.3V";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
lan9220@20000000 {
|
||||
compatible = "smsc,lan9220", "smsc,lan9115";
|
||||
reg = <0x20000000 0x10000>;
|
||||
phy-mode = "mii";
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_RISING>;
|
||||
reg-io-width = <4>;
|
||||
smsc,irq-active-high;
|
||||
smsc,irq-push-pull;
|
||||
vddvario-supply = <®_1p8v>;
|
||||
vdd33a-supply = <®_3p3v>;
|
||||
};
|
||||
};
|
||||
|
@ -55,7 +55,7 @@
|
||||
<0 121 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
smu@e0110000 {
|
||||
clocks@e0110000 {
|
||||
compatible = "renesas,emev2-smu";
|
||||
reg = <0xe0110000 0x10000>;
|
||||
#address-cells = <2>;
|
||||
@ -129,7 +129,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
sti@e0180000 {
|
||||
timer@e0180000 {
|
||||
compatible = "renesas,em-sti";
|
||||
reg = <0xe0180000 0x54>;
|
||||
interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -137,7 +137,7 @@
|
||||
clock-names = "sclk";
|
||||
};
|
||||
|
||||
uart@e1020000 {
|
||||
uart0: serial@e1020000 {
|
||||
compatible = "renesas,em-uart";
|
||||
reg = <0xe1020000 0x38>;
|
||||
interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -145,7 +145,7 @@
|
||||
clock-names = "sclk";
|
||||
};
|
||||
|
||||
uart@e1030000 {
|
||||
uart1: serial@e1030000 {
|
||||
compatible = "renesas,em-uart";
|
||||
reg = <0xe1030000 0x38>;
|
||||
interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -153,7 +153,7 @@
|
||||
clock-names = "sclk";
|
||||
};
|
||||
|
||||
uart@e1040000 {
|
||||
uart2: serial@e1040000 {
|
||||
compatible = "renesas,em-uart";
|
||||
reg = <0xe1040000 0x38>;
|
||||
interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -161,7 +161,7 @@
|
||||
clock-names = "sclk";
|
||||
};
|
||||
|
||||
uart@e1050000 {
|
||||
uart3: serial@e1050000 {
|
||||
compatible = "renesas,em-uart";
|
||||
reg = <0xe1050000 0x38>;
|
||||
interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -282,7 +282,6 @@
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -287,7 +287,6 @@
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -376,12 +376,10 @@
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ssi2 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -308,7 +308,6 @@
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -107,10 +107,8 @@
|
||||
"Headphone Jack", "HPOUTR",
|
||||
"Ext Spk", "SPKOUTL",
|
||||
"Ext Spk", "SPKOUTR",
|
||||
"MICBIAS", "AMIC",
|
||||
"IN3R", "MICBIAS",
|
||||
"DMIC", "MICBIAS",
|
||||
"DMICDAT", "DMIC";
|
||||
"AMIC", "MICBIAS",
|
||||
"IN3R", "AMIC";
|
||||
mux-int-port = <2>;
|
||||
mux-ext-port = <3>;
|
||||
};
|
||||
@ -179,7 +177,7 @@
|
||||
codec: wm8962@1a {
|
||||
compatible = "wlf,wm8962";
|
||||
reg = <0x1a>;
|
||||
clocks = <&clks 201>;
|
||||
clocks = <&clks IMX6QDL_CLK_CKO>;
|
||||
DCVDD-supply = <®_audio>;
|
||||
DBVDD-supply = <®_audio>;
|
||||
AVDD-supply = <®_audio>;
|
||||
|
@ -21,7 +21,8 @@
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC2,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
stdout-path = &scif2;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -52,16 +52,6 @@
|
||||
clock-output-names = "usb_x1";
|
||||
};
|
||||
|
||||
/* Special CPG clocks */
|
||||
cpg_clocks: cpg_clocks@fcfe0000 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "renesas,r7s72100-cpg-clocks",
|
||||
"renesas,rz-cpg-clocks";
|
||||
reg = <0xfcfe0000 0x18>;
|
||||
clocks = <&extal_clk>, <&usb_x1_clk>;
|
||||
clock-output-names = "pll", "i", "g";
|
||||
};
|
||||
|
||||
/* Fixed factor clocks */
|
||||
b_clk: b_clk {
|
||||
#clock-cells = <0>;
|
||||
@ -88,6 +78,16 @@
|
||||
clock-output-names = "p0";
|
||||
};
|
||||
|
||||
/* Special CPG clocks */
|
||||
cpg_clocks: cpg_clocks@fcfe0000 {
|
||||
#clock-cells = <1>;
|
||||
compatible = "renesas,r7s72100-cpg-clocks",
|
||||
"renesas,rz-cpg-clocks";
|
||||
reg = <0xfcfe0000 0x18>;
|
||||
clocks = <&extal_clk>, <&usb_x1_clk>;
|
||||
clock-output-names = "pll", "i", "g";
|
||||
};
|
||||
|
||||
/* MSTP clocks */
|
||||
mstp3_clks: mstp3_clks@fcfe0420 {
|
||||
#clock-cells = <1>;
|
||||
@ -148,97 +148,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@e8201000 {
|
||||
compatible = "arm,cortex-a9-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
reg = <0xe8201000 0x1000>,
|
||||
<0xe8202000 0x1000>;
|
||||
};
|
||||
|
||||
i2c0: i2c@fcfee000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee000 0x44>;
|
||||
interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 158 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 159 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 161 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 162 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 163 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 164 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@fcfee400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee400 0x44>;
|
||||
interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 166 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 167 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 168 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 169 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 170 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 171 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 172 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C1>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@fcfee800 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee800 0x44>;
|
||||
interrupts = <0 173 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 174 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 175 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 176 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 177 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 178 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 179 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 180 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C2>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@fcfeec00 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfeec00 0x44>;
|
||||
interrupts = <0 181 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 182 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 183 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 184 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 185 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 186 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 187 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 188 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C3>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mtu2: timer@fcff0000 {
|
||||
compatible = "renesas,mtu2-r7s72100", "renesas,mtu2";
|
||||
reg = <0xfcff0000 0x400>;
|
||||
interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "tgi0a";
|
||||
clocks = <&mstp3_clks R7S72100_CLK_MTU2>;
|
||||
clock-names = "fck";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scif0: serial@e8007000 {
|
||||
compatible = "renesas,scif-r7s72100", "renesas,scif";
|
||||
reg = <0xe8007000 64>;
|
||||
@ -404,4 +313,95 @@
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gic: interrupt-controller@e8201000 {
|
||||
compatible = "arm,cortex-a9-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
reg = <0xe8201000 0x1000>,
|
||||
<0xe8202000 0x1000>;
|
||||
};
|
||||
|
||||
i2c0: i2c@fcfee000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee000 0x44>;
|
||||
interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 158 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 159 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 161 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 162 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 163 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 164 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@fcfee400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee400 0x44>;
|
||||
interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 166 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 167 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 168 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 169 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 170 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 171 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 172 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C1>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@fcfee800 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee800 0x44>;
|
||||
interrupts = <0 173 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 174 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 175 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 176 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 177 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 178 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 179 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 180 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C2>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@fcfeec00 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfeec00 0x44>;
|
||||
interrupts = <0 181 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 182 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 183 IRQ_TYPE_EDGE_RISING>,
|
||||
<0 184 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 185 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 186 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 187 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 188 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C3>;
|
||||
clock-frequency = <100000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mtu2: timer@fcff0000 {
|
||||
compatible = "renesas,mtu2-r7s72100", "renesas,mtu2";
|
||||
reg = <0xfcff0000 0x400>;
|
||||
interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "tgi0a";
|
||||
clocks = <&mstp3_clks R7S72100_CLK_MTU2>;
|
||||
clock-names = "fck";
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
@ -21,7 +21,8 @@
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC0,115200 ignore_loglevel rw";
|
||||
bootargs = "ignore_loglevel rw";
|
||||
stdout-path = &scifa0;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
|
@ -30,18 +30,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@f1001000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
reg = <0 0xf1001000 0 0x1000>,
|
||||
<0 0xf1002000 0 0x1000>,
|
||||
<0 0xf1004000 0 0x2000>,
|
||||
<0 0xf1006000 0 0x2000>;
|
||||
interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
@ -50,6 +38,80 @@
|
||||
<1 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
|
||||
dmac: dma-multiplexer {
|
||||
compatible = "renesas,shdma-mux";
|
||||
#dma-cells = <1>;
|
||||
dma-channels = <20>;
|
||||
dma-requests = <256>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
dma0: dma-controller@e6700020 {
|
||||
compatible = "renesas,shdma-r8a73a4";
|
||||
reg = <0 0xe6700020 0 0x89e0>;
|
||||
interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH
|
||||
0 200 IRQ_TYPE_LEVEL_HIGH
|
||||
0 201 IRQ_TYPE_LEVEL_HIGH
|
||||
0 202 IRQ_TYPE_LEVEL_HIGH
|
||||
0 203 IRQ_TYPE_LEVEL_HIGH
|
||||
0 204 IRQ_TYPE_LEVEL_HIGH
|
||||
0 205 IRQ_TYPE_LEVEL_HIGH
|
||||
0 206 IRQ_TYPE_LEVEL_HIGH
|
||||
0 207 IRQ_TYPE_LEVEL_HIGH
|
||||
0 208 IRQ_TYPE_LEVEL_HIGH
|
||||
0 209 IRQ_TYPE_LEVEL_HIGH
|
||||
0 210 IRQ_TYPE_LEVEL_HIGH
|
||||
0 211 IRQ_TYPE_LEVEL_HIGH
|
||||
0 212 IRQ_TYPE_LEVEL_HIGH
|
||||
0 213 IRQ_TYPE_LEVEL_HIGH
|
||||
0 214 IRQ_TYPE_LEVEL_HIGH
|
||||
0 215 IRQ_TYPE_LEVEL_HIGH
|
||||
0 216 IRQ_TYPE_LEVEL_HIGH
|
||||
0 217 IRQ_TYPE_LEVEL_HIGH
|
||||
0 218 IRQ_TYPE_LEVEL_HIGH
|
||||
0 219 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "error",
|
||||
"ch0", "ch1", "ch2", "ch3",
|
||||
"ch4", "ch5", "ch6", "ch7",
|
||||
"ch8", "ch9", "ch10", "ch11",
|
||||
"ch12", "ch13", "ch14", "ch15",
|
||||
"ch16", "ch17", "ch18", "ch19";
|
||||
};
|
||||
};
|
||||
|
||||
pfc: pfc@e6050000 {
|
||||
compatible = "renesas,pfc-r8a73a4";
|
||||
reg = <0 0xe6050000 0 0x9000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupts-extended =
|
||||
<&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>,
|
||||
<&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>,
|
||||
<&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>,
|
||||
<&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>,
|
||||
<&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>,
|
||||
<&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>,
|
||||
<&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>,
|
||||
<&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>,
|
||||
<&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>,
|
||||
<&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>,
|
||||
<&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>,
|
||||
<&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>,
|
||||
<&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>,
|
||||
<&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>,
|
||||
<&irqc1 24 0>, <&irqc1 25 0>;
|
||||
};
|
||||
|
||||
i2c5: i2c@e60b0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,rmobile-iic";
|
||||
reg = <0 0xe60b0000 0 0x428>;
|
||||
interrupts = <0 179 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
irqc0: interrupt-controller@e61c0000 {
|
||||
compatible = "renesas,irqc-r8a73a4", "renesas,irqc";
|
||||
#interrupt-cells = <2>;
|
||||
@ -122,48 +184,6 @@
|
||||
<0 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
dmac: dma-multiplexer@0 {
|
||||
compatible = "renesas,shdma-mux";
|
||||
#dma-cells = <1>;
|
||||
dma-channels = <20>;
|
||||
dma-requests = <256>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
dma0: dma-controller@e6700020 {
|
||||
compatible = "renesas,shdma-r8a73a4";
|
||||
reg = <0 0xe6700020 0 0x89e0>;
|
||||
interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH
|
||||
0 200 IRQ_TYPE_LEVEL_HIGH
|
||||
0 201 IRQ_TYPE_LEVEL_HIGH
|
||||
0 202 IRQ_TYPE_LEVEL_HIGH
|
||||
0 203 IRQ_TYPE_LEVEL_HIGH
|
||||
0 204 IRQ_TYPE_LEVEL_HIGH
|
||||
0 205 IRQ_TYPE_LEVEL_HIGH
|
||||
0 206 IRQ_TYPE_LEVEL_HIGH
|
||||
0 207 IRQ_TYPE_LEVEL_HIGH
|
||||
0 208 IRQ_TYPE_LEVEL_HIGH
|
||||
0 209 IRQ_TYPE_LEVEL_HIGH
|
||||
0 210 IRQ_TYPE_LEVEL_HIGH
|
||||
0 211 IRQ_TYPE_LEVEL_HIGH
|
||||
0 212 IRQ_TYPE_LEVEL_HIGH
|
||||
0 213 IRQ_TYPE_LEVEL_HIGH
|
||||
0 214 IRQ_TYPE_LEVEL_HIGH
|
||||
0 215 IRQ_TYPE_LEVEL_HIGH
|
||||
0 216 IRQ_TYPE_LEVEL_HIGH
|
||||
0 217 IRQ_TYPE_LEVEL_HIGH
|
||||
0 218 IRQ_TYPE_LEVEL_HIGH
|
||||
0 219 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "error",
|
||||
"ch0", "ch1", "ch2", "ch3",
|
||||
"ch4", "ch5", "ch6", "ch7",
|
||||
"ch8", "ch9", "ch10", "ch11",
|
||||
"ch12", "ch13", "ch14", "ch15",
|
||||
"ch16", "ch17", "ch18", "ch19";
|
||||
};
|
||||
};
|
||||
|
||||
thermal@e61f0000 {
|
||||
compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal";
|
||||
reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>,
|
||||
@ -216,15 +236,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c5: i2c@e60b0000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,rmobile-iic";
|
||||
reg = <0 0xe60b0000 0 0x428>;
|
||||
interrupts = <0 179 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c6: i2c@e6550000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@ -252,20 +263,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifa0: serial@e6c40000 {
|
||||
compatible = "renesas,scifa-r8a73a4", "renesas,scifa";
|
||||
reg = <0 0xe6c40000 0 0x100>;
|
||||
interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifa1: serial@e6c50000 {
|
||||
compatible = "renesas,scifa-r8a73a4", "renesas,scifa";
|
||||
reg = <0 0xe6c50000 0 0x100>;
|
||||
interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifb2: serial@e6c20000 {
|
||||
compatible = "renesas,scifb-r8a73a4", "renesas,scifb";
|
||||
reg = <0 0xe6c20000 0 0x100>;
|
||||
@ -280,6 +277,20 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifa0: serial@e6c40000 {
|
||||
compatible = "renesas,scifa-r8a73a4", "renesas,scifa";
|
||||
reg = <0 0xe6c40000 0 0x100>;
|
||||
interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifa1: serial@e6c50000 {
|
||||
compatible = "renesas,scifa-r8a73a4", "renesas,scifa";
|
||||
reg = <0 0xe6c50000 0 0x100>;
|
||||
interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
scifb4: serial@e6ce0000 {
|
||||
compatible = "renesas,scifb-r8a73a4", "renesas,scifb";
|
||||
reg = <0 0xe6ce0000 0 0x100>;
|
||||
@ -294,45 +305,6 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmcif0: mmc@ee200000 {
|
||||
compatible = "renesas,sh-mmcif";
|
||||
reg = <0 0xee200000 0 0x80>;
|
||||
interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-io-width = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmcif1: mmc@ee220000 {
|
||||
compatible = "renesas,sh-mmcif";
|
||||
reg = <0 0xee220000 0 0x80>;
|
||||
interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-io-width = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pfc: pfc@e6050000 {
|
||||
compatible = "renesas,pfc-r8a73a4";
|
||||
reg = <0 0xe6050000 0 0x9000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupts-extended =
|
||||
<&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>,
|
||||
<&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>,
|
||||
<&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>,
|
||||
<&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>,
|
||||
<&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>,
|
||||
<&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>,
|
||||
<&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>,
|
||||
<&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>,
|
||||
<&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>,
|
||||
<&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>,
|
||||
<&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>,
|
||||
<&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>,
|
||||
<&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>,
|
||||
<&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>,
|
||||
<&irqc1 24 0>, <&irqc1 25 0>;
|
||||
};
|
||||
|
||||
sdhi0: sd@ee100000 {
|
||||
compatible = "renesas,sdhi-r8a73a4";
|
||||
reg = <0 0xee100000 0 0x100>;
|
||||
@ -356,4 +328,32 @@
|
||||
cap-sd-highspeed;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmcif0: mmc@ee200000 {
|
||||
compatible = "renesas,sh-mmcif";
|
||||
reg = <0 0xee200000 0 0x80>;
|
||||
interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-io-width = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmcif1: mmc@ee220000 {
|
||||
compatible = "renesas,sh-mmcif";
|
||||
reg = <0 0xee220000 0 0x80>;
|
||||
interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg-io-width = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gic: interrupt-controller@f1001000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
reg = <0 0xf1001000 0 0x1000>,
|
||||
<0 0xf1002000 0 0x1000>,
|
||||
<0 0xf1004000 0 0x2000>,
|
||||
<0 0xf1006000 0 0x2000>;
|
||||
interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
};
|
||||
};
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw";
|
||||
stdout-path = &scifa1;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -28,7 +28,8 @@
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw";
|
||||
bootargs = "ignore_loglevel root=/dev/nfs ip=dhcp rw";
|
||||
stdout-path = &scif0;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC2,115200 ignore_loglevel root=/dev/nfs ip=on";
|
||||
stdout-path = &scif2;
|
||||
};
|
||||
|
||||
memory {
|
||||
@ -68,6 +69,78 @@
|
||||
gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
vga-encoder {
|
||||
compatible = "adi,adv7123";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
vga_enc_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb0>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
vga_enc_out: endpoint {
|
||||
remote-endpoint = <&vga_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vga {
|
||||
compatible = "vga-connector";
|
||||
|
||||
port {
|
||||
vga_in: endpoint {
|
||||
remote-endpoint = <&vga_enc_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lvds-encoder {
|
||||
compatible = "thine,thc63lvdm83d";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
lvds_enc_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb1>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@0 {
|
||||
endpoint {
|
||||
remote-endpoint = <&vga_enc_in>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
endpoint {
|
||||
remote-endpoint = <&lvds_enc_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&irqpin0 {
|
||||
@ -83,6 +156,17 @@
|
||||
};
|
||||
|
||||
&pfc {
|
||||
du_pins: du {
|
||||
du0 {
|
||||
renesas,groups = "du0_rgb888", "du0_sync_1", "du0_clk_out_0";
|
||||
renesas,function = "du0";
|
||||
};
|
||||
du1 {
|
||||
renesas,groups = "du1_rgb666", "du1_sync_1", "du1_clk_out";
|
||||
renesas,function = "du1";
|
||||
};
|
||||
};
|
||||
|
||||
lan0_pins: lan0 {
|
||||
intc {
|
||||
renesas,groups = "intc_irq1_b";
|
||||
|
@ -379,6 +379,30 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
du: display@fff80000 {
|
||||
compatible = "renesas,du-r8a7779";
|
||||
reg = <0 0xfff80000 0 0x40000>;
|
||||
interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7779_CLK_DU>;
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb0: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_rgb1: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
stdout-path = &scifa0;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
@ -144,6 +145,56 @@
|
||||
states = <3300000 1
|
||||
1800000 0>;
|
||||
};
|
||||
|
||||
vga-encoder {
|
||||
compatible = "adi,adv7123";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
adv7123_in: endpoint {
|
||||
remote-endpoint = <&du_out_rgb>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
adv7123_out: endpoint {
|
||||
remote-endpoint = <&vga_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vga {
|
||||
compatible = "vga-connector";
|
||||
|
||||
port {
|
||||
vga_in: endpoint {
|
||||
remote-endpoint = <&adv7123_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@0 {
|
||||
endpoint {
|
||||
remote-endpoint = <&adv7123_in>;
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
@ -151,9 +202,6 @@
|
||||
};
|
||||
|
||||
&pfc {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
du_pins: du {
|
||||
renesas,groups = "du_rgb666", "du_sync_1", "du_clk_out_0";
|
||||
renesas,function = "du";
|
||||
|
@ -600,6 +600,96 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
vsp1@fe920000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe920000 0 0x8000>;
|
||||
interrupts = <0 266 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_R>;
|
||||
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe928000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe928000 0 0x8000>;
|
||||
interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>;
|
||||
|
||||
renesas,has-lut;
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <3>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe930000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe930000 0 0x8000>;
|
||||
interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU0>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe938000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe938000 0 0x8000>;
|
||||
interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU1>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
du: display@feb00000 {
|
||||
compatible = "renesas,du-r8a7790";
|
||||
reg = <0 0xfeb00000 0 0x70000>,
|
||||
<0 0xfeb90000 0 0x1c>,
|
||||
<0 0xfeb94000 0 0x1c>;
|
||||
reg-names = "du", "lvds.0", "lvds.1";
|
||||
interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 268 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 269 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp7_clks R8A7790_CLK_DU0>,
|
||||
<&mstp7_clks R8A7790_CLK_DU1>,
|
||||
<&mstp7_clks R8A7790_CLK_DU2>,
|
||||
<&mstp7_clks R8A7790_CLK_LVDS0>,
|
||||
<&mstp7_clks R8A7790_CLK_LVDS1>;
|
||||
clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1";
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_lvds0: endpoint {
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
du_out_lvds1: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC0,38400 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
stdout-path = &scif0;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
|
@ -25,7 +25,8 @@
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
stdout-path = &scif0;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
@ -211,14 +212,24 @@
|
||||
};
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@1 {
|
||||
lvds_connector: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
clock-frequency = <20000000>;
|
||||
};
|
||||
|
||||
&pfc {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
i2c2_pins: i2c2 {
|
||||
renesas,groups = "i2c2";
|
||||
renesas,function = "i2c2";
|
||||
|
@ -637,6 +637,75 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
vsp1@fe928000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe928000 0 0x8000>;
|
||||
interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_S>;
|
||||
|
||||
renesas,has-lut;
|
||||
renesas,has-sru;
|
||||
renesas,#rpf = <5>;
|
||||
renesas,#uds = <3>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe930000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe930000 0 0x8000>;
|
||||
interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU0>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
vsp1@fe938000 {
|
||||
compatible = "renesas,vsp1";
|
||||
reg = <0 0xfe938000 0 0x8000>;
|
||||
interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU1>;
|
||||
|
||||
renesas,has-lif;
|
||||
renesas,has-lut;
|
||||
renesas,#rpf = <4>;
|
||||
renesas,#uds = <1>;
|
||||
renesas,#wpf = <4>;
|
||||
};
|
||||
|
||||
du: display@feb00000 {
|
||||
compatible = "renesas,du-r8a7791";
|
||||
reg = <0 0xfeb00000 0 0x40000>,
|
||||
<0 0xfeb90000 0 0x1c>;
|
||||
reg-names = "du", "lvds.0";
|
||||
interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 268 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&mstp7_clks R8A7791_CLK_DU0>,
|
||||
<&mstp7_clks R8A7791_CLK_DU1>,
|
||||
<&mstp7_clks R8A7791_CLK_LVDS0>;
|
||||
clock-names = "du.0", "du.1", "lvds.0";
|
||||
status = "disabled";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
du_out_rgb: endpoint {
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
du_out_lvds0: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC0,38400 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
stdout-path = &scif2;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
|
41
arch/arm/boot/dts/r8a77xx-aa104xd12-panel.dtsi
Normal file
41
arch/arm/boot/dts/r8a77xx-aa104xd12-panel.dtsi
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Common file for the AA104XD12 panel connected to Renesas R-Car boards
|
||||
*
|
||||
* Copyright (C) 2014 Renesas Electronics Corp.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/ {
|
||||
panel {
|
||||
compatible = "mitsubishi,aa104xd12", "panel-dpi";
|
||||
|
||||
width-mm = <210>;
|
||||
height-mm = <158>;
|
||||
|
||||
panel-timing {
|
||||
/* 1024x768 @65Hz */
|
||||
clock-frequency = <65000000>;
|
||||
hactive = <1024>;
|
||||
vactive = <768>;
|
||||
hsync-len = <136>;
|
||||
hfront-porch = <20>;
|
||||
hback-porch = <160>;
|
||||
vfront-porch = <3>;
|
||||
vback-porch = <29>;
|
||||
vsync-len = <6>;
|
||||
};
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&lvds_connector>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lvds_connector {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
@ -40,6 +40,7 @@
|
||||
|
||||
chosen {
|
||||
bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel rw";
|
||||
stdout-path = &scifa4;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -1,113 +0,0 @@
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7791=y
|
||||
CONFIG_MACH_KOELSCH=y
|
||||
# CONFIG_SWP_EMULATE is not set
|
||||
CONFIG_CPU_BPREDICT_DISABLE=y
|
||||
CONFIG_PL310_ERRATA_588369=y
|
||||
CONFIG_ARM_ERRATA_754322=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_RCAR_GEN2=y
|
||||
CONFIG_PCI_RCAR_GEN2_PCIE=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_NEON=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_PM_RUNTIME=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_RCAR=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
# CONFIG_NET_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||
# CONFIG_NET_VENDOR_FARADAY is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
CONFIG_SH_ETH=y
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
# CONFIG_NET_VENDOR_SMSC is not set
|
||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||
# CONFIG_NET_VENDOR_VIA is not set
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_KEYBOARD_GPIO=y
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=20
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_MUX=y
|
||||
CONFIG_I2C_SH_MOBILE=y
|
||||
CONFIG_I2C_RCAR=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_RSPI=y
|
||||
CONFIG_SPI_SH_MSIOF=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_RCAR=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_RCAR_THERMAL=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_DA9210=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||
CONFIG_SOC_CAMERA=y
|
||||
CONFIG_SOC_CAMERA_PLATFORM=y
|
||||
CONFIG_VIDEO_RCAR_VIN=y
|
||||
# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
|
||||
CONFIG_VIDEO_ADV7180=y
|
||||
# CONFIG_HID is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHI=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
# CONFIG_ARM_UNWIND is not set
|
@ -17,7 +17,6 @@ CONFIG_ARCH_R8A7779=y
|
||||
CONFIG_ARCH_R8A7790=y
|
||||
CONFIG_ARCH_R8A7791=y
|
||||
CONFIG_ARCH_R8A7794=y
|
||||
CONFIG_MACH_KOELSCH=y
|
||||
CONFIG_MACH_LAGER=y
|
||||
CONFIG_MACH_MARZEN=y
|
||||
# CONFIG_SWP_EMULATE is not set
|
||||
|
@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include <asm/system_misc.h>
|
||||
#include <asm/irq.h>
|
||||
#include <mach/hardware.h>
|
||||
|
||||
#include "soc.h"
|
||||
|
@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <asm/system_misc.h>
|
||||
#include <asm/irq.h>
|
||||
#include <mach/cpu.h>
|
||||
#include <mach/at91_dbgu.h>
|
||||
#include <mach/hardware.h>
|
||||
|
@ -80,8 +80,8 @@ static int da830_evm_usb_ocic_notify(da8xx_ocic_handler_t handler)
|
||||
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
||||
"OHCI over-current indicator", NULL);
|
||||
if (error)
|
||||
printk(KERN_ERR "%s: could not request IRQ to watch "
|
||||
"over-current indicator changes\n", __func__);
|
||||
pr_err("%s: could not request IRQ to watch over-current indicator changes\n",
|
||||
__func__);
|
||||
} else
|
||||
free_irq(irq, NULL);
|
||||
|
||||
@ -145,8 +145,7 @@ static __init void da830_evm_usb_init(void)
|
||||
/* USB_REFCLKIN is not used. */
|
||||
ret = davinci_cfg_reg(DA830_USB0_DRVVBUS);
|
||||
if (ret)
|
||||
pr_warning("%s: USB 2.0 PinMux setup failed: %d\n",
|
||||
__func__, ret);
|
||||
pr_warn("%s: USB 2.0 PinMux setup failed: %d\n", __func__, ret);
|
||||
else {
|
||||
/*
|
||||
* TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A),
|
||||
@ -154,37 +153,35 @@ static __init void da830_evm_usb_init(void)
|
||||
*/
|
||||
ret = da8xx_register_usb20(1000, 3);
|
||||
if (ret)
|
||||
pr_warning("%s: USB 2.0 registration failed: %d\n",
|
||||
__func__, ret);
|
||||
pr_warn("%s: USB 2.0 registration failed: %d\n",
|
||||
__func__, ret);
|
||||
}
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_evm_usb11_pins);
|
||||
if (ret) {
|
||||
pr_warning("%s: USB 1.1 PinMux setup failed: %d\n",
|
||||
__func__, ret);
|
||||
pr_warn("%s: USB 1.1 PinMux setup failed: %d\n", __func__, ret);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
|
||||
"power control: %d\n", __func__, ret);
|
||||
pr_err("%s: failed to request GPIO for USB 1.1 port power control: %d\n",
|
||||
__func__, ret);
|
||||
return;
|
||||
}
|
||||
gpio_direction_output(ON_BD_USB_DRV, 0);
|
||||
|
||||
ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC");
|
||||
if (ret) {
|
||||
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
|
||||
"over-current indicator: %d\n", __func__, ret);
|
||||
pr_err("%s: failed to request GPIO for USB 1.1 port over-current indicator: %d\n",
|
||||
__func__, ret);
|
||||
return;
|
||||
}
|
||||
gpio_direction_input(ON_BD_USB_OVC);
|
||||
|
||||
ret = da8xx_register_usb11(&da830_evm_usb11_pdata);
|
||||
if (ret)
|
||||
pr_warning("%s: USB 1.1 registration failed: %d\n",
|
||||
__func__, ret);
|
||||
pr_warn("%s: USB 1.1 registration failed: %d\n", __func__, ret);
|
||||
}
|
||||
|
||||
static const short da830_evm_mcasp1_pins[] = {
|
||||
@ -252,31 +249,29 @@ static inline void da830_evm_init_mmc(void)
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_evm_mmc_sd_pins);
|
||||
if (ret) {
|
||||
pr_warning("da830_evm_init: mmc/sd mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: mmc/sd mux setup failed: %d\n", __func__, ret);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = gpio_request(DA830_MMCSD_WP_PIN, "MMC WP");
|
||||
if (ret) {
|
||||
pr_warning("da830_evm_init: can not open GPIO %d\n",
|
||||
DA830_MMCSD_WP_PIN);
|
||||
pr_warn("%s: can not open GPIO %d\n",
|
||||
__func__, DA830_MMCSD_WP_PIN);
|
||||
return;
|
||||
}
|
||||
gpio_direction_input(DA830_MMCSD_WP_PIN);
|
||||
|
||||
ret = gpio_request(DA830_MMCSD_CD_PIN, "MMC CD\n");
|
||||
if (ret) {
|
||||
pr_warning("da830_evm_init: can not open GPIO %d\n",
|
||||
DA830_MMCSD_CD_PIN);
|
||||
pr_warn("%s: can not open GPIO %d\n",
|
||||
__func__, DA830_MMCSD_CD_PIN);
|
||||
return;
|
||||
}
|
||||
gpio_direction_input(DA830_MMCSD_CD_PIN);
|
||||
|
||||
ret = da8xx_register_mmcsd0(&da830_evm_mmc_config);
|
||||
if (ret) {
|
||||
pr_warning("da830_evm_init: mmc/sd registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: mmc/sd registration failed: %d\n", __func__, ret);
|
||||
gpio_free(DA830_MMCSD_WP_PIN);
|
||||
}
|
||||
}
|
||||
@ -404,23 +399,21 @@ static inline void da830_evm_init_nand(int mux_mode)
|
||||
int ret;
|
||||
|
||||
if (HAS_MMC) {
|
||||
pr_warning("WARNING: both MMC/SD and NAND are "
|
||||
"enabled, but they share AEMIF pins.\n"
|
||||
"\tDisable MMC/SD for NAND support.\n");
|
||||
pr_warn("WARNING: both MMC/SD and NAND are enabled, but they share AEMIF pins\n"
|
||||
"\tDisable MMC/SD for NAND support\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_evm_emif25_pins);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: emif25 mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: emif25 mux setup failed: %d\n", __func__, ret);
|
||||
|
||||
ret = platform_device_register(&da830_evm_nand_device);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: NAND device not registered.\n");
|
||||
pr_warn("%s: NAND device not registered\n", __func__);
|
||||
|
||||
if (davinci_aemif_setup(&da830_evm_nand_device))
|
||||
pr_warn("%s: Cannot configure AEMIF.\n", __func__);
|
||||
pr_warn("%s: Cannot configure AEMIF\n", __func__);
|
||||
|
||||
gpio_direction_output(mux_mode, 1);
|
||||
}
|
||||
@ -435,12 +428,11 @@ static inline void da830_evm_init_lcdc(int mux_mode)
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_lcdcntl_pins);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: lcdcntl mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: lcdcntl mux setup failed: %d\n", __func__, ret);
|
||||
|
||||
ret = da8xx_register_lcdc(&sharp_lcd035q3dg01_pdata);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: lcd setup failed: %d\n", ret);
|
||||
pr_warn("%s: lcd setup failed: %d\n", __func__, ret);
|
||||
|
||||
gpio_direction_output(mux_mode, 0);
|
||||
}
|
||||
@ -598,22 +590,19 @@ static __init void da830_evm_init(void)
|
||||
|
||||
ret = da830_register_gpio();
|
||||
if (ret)
|
||||
pr_warn("da830_evm_init: GPIO init failed: %d\n", ret);
|
||||
pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
|
||||
|
||||
ret = da830_register_edma(da830_edma_rsv);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: edma registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: edma registration failed: %d\n", __func__, ret);
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_i2c0_pins);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: i2c0 mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: i2c0 mux setup failed: %d\n", __func__, ret);
|
||||
|
||||
ret = da8xx_register_i2c(0, &da830_evm_i2c_0_pdata);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: i2c0 registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: i2c0 registration failed: %d\n", __func__, ret);
|
||||
|
||||
da830_evm_usb_init();
|
||||
|
||||
@ -622,18 +611,16 @@ static __init void da830_evm_init(void)
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_cpgmac_pins);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: cpgmac mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: cpgmac mux setup failed: %d\n", __func__, ret);
|
||||
|
||||
ret = da8xx_register_emac();
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: emac registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: emac registration failed: %d\n", __func__, ret);
|
||||
|
||||
ret = da8xx_register_watchdog();
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: watchdog registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: watchdog registration failed: %d\n",
|
||||
__func__, ret);
|
||||
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
i2c_register_board_info(1, da830_evm_i2c_devices,
|
||||
@ -641,8 +628,7 @@ static __init void da830_evm_init(void)
|
||||
|
||||
ret = davinci_cfg_reg_list(da830_evm_mcasp1_pins);
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: mcasp1 mux setup failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: mcasp1 mux setup failed: %d\n", __func__, ret);
|
||||
|
||||
da8xx_register_mcasp(1, &da830_evm_snd_data);
|
||||
|
||||
@ -650,18 +636,17 @@ static __init void da830_evm_init(void)
|
||||
|
||||
ret = da8xx_register_rtc();
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: rtc setup failed: %d\n", ret);
|
||||
pr_warn("%s: rtc setup failed: %d\n", __func__, ret);
|
||||
|
||||
ret = spi_register_board_info(da830evm_spi_info,
|
||||
ARRAY_SIZE(da830evm_spi_info));
|
||||
if (ret)
|
||||
pr_warn("%s: spi info registration failed: %d\n", __func__,
|
||||
ret);
|
||||
pr_warn("%s: spi info registration failed: %d\n",
|
||||
__func__, ret);
|
||||
|
||||
ret = da8xx_register_spi_bus(0, ARRAY_SIZE(da830evm_spi_info));
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: spi 0 registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("%s: spi 0 registration failed: %d\n", __func__, ret);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
||||
|
@ -452,8 +452,7 @@ static void da850_evm_ui_keys_init(unsigned gpio)
|
||||
for (i = 0; i < DA850_N_UI_PB; i++) {
|
||||
button = &da850_evm_ui_keys[i];
|
||||
button->code = KEY_F8 - i;
|
||||
button->desc = (char *)
|
||||
da850_evm_ui_exp[DA850_EVM_UI_EXP_PB8 + i];
|
||||
button->desc = da850_evm_ui_exp[DA850_EVM_UI_EXP_PB8 + i];
|
||||
button->gpio = gpio + DA850_EVM_UI_EXP_PB8 + i;
|
||||
}
|
||||
}
|
||||
@ -628,15 +627,13 @@ static void da850_evm_bb_keys_init(unsigned gpio)
|
||||
struct gpio_keys_button *button;
|
||||
|
||||
button = &da850_evm_bb_keys[0];
|
||||
button->desc = (char *)
|
||||
da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_PB1];
|
||||
button->desc = da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_PB1];
|
||||
button->gpio = gpio + DA850_EVM_BB_EXP_USER_PB1;
|
||||
|
||||
for (i = 0; i < DA850_N_BB_USER_SW; i++) {
|
||||
button = &da850_evm_bb_keys[i + 1];
|
||||
button->code = SW_LID + i;
|
||||
button->desc = (char *)
|
||||
da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_SW1 + i];
|
||||
button->desc = da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_SW1 + i];
|
||||
button->gpio = gpio + DA850_EVM_BB_EXP_USER_SW1 + i;
|
||||
}
|
||||
}
|
||||
|
@ -767,9 +767,8 @@ static __init void davinci_evm_init(void)
|
||||
|
||||
if (HAS_ATA) {
|
||||
if (HAS_NAND || HAS_NOR)
|
||||
pr_warning("WARNING: both IDE and Flash are "
|
||||
"enabled, but they share AEMIF pins.\n"
|
||||
"\tDisable IDE for NAND/NOR support.\n");
|
||||
pr_warn("WARNING: both IDE and Flash are enabled, but they share AEMIF pins\n"
|
||||
"\tDisable IDE for NAND/NOR support\n");
|
||||
davinci_init_ide();
|
||||
} else if (HAS_NAND || HAS_NOR) {
|
||||
davinci_cfg_reg(DM644X_HPIEN_DISABLE);
|
||||
@ -780,13 +779,12 @@ static __init void davinci_evm_init(void)
|
||||
platform_device_register(&davinci_evm_nandflash_device);
|
||||
|
||||
if (davinci_aemif_setup(&davinci_evm_nandflash_device))
|
||||
pr_warn("%s: Cannot configure AEMIF.\n",
|
||||
pr_warn("%s: Cannot configure AEMIF\n",
|
||||
__func__);
|
||||
|
||||
evm_leds[7].default_trigger = "nand-disk";
|
||||
if (HAS_NOR)
|
||||
pr_warning("WARNING: both NAND and NOR flash "
|
||||
"are enabled; disable one of them.\n");
|
||||
pr_warn("WARNING: both NAND and NOR flash are enabled; disable one of them.\n");
|
||||
} else if (HAS_NOR)
|
||||
platform_device_register(&davinci_evm_norflash_device);
|
||||
}
|
||||
|
@ -8,6 +8,8 @@
|
||||
* any kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "MityOMAPL138: " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/console.h>
|
||||
@ -107,7 +109,7 @@ static void mityomapl138_cpufreq_init(const char *partnum)
|
||||
|
||||
ret = da850_register_cpufreq("pll0_sysclk3");
|
||||
if (ret)
|
||||
pr_warning("cpufreq registration failed: %d\n", ret);
|
||||
pr_warn("cpufreq registration failed: %d\n", ret);
|
||||
}
|
||||
#else
|
||||
static void mityomapl138_cpufreq_init(const char *partnum) { }
|
||||
@ -121,33 +123,31 @@ static void read_factory_config(struct memory_accessor *a, void *context)
|
||||
|
||||
ret = a->read(a, (char *)&factory_config, 0, sizeof(factory_config));
|
||||
if (ret != sizeof(struct factory_config)) {
|
||||
pr_warning("MityOMAPL138: Read Factory Config Failed: %d\n",
|
||||
ret);
|
||||
pr_warn("Read Factory Config Failed: %d\n", ret);
|
||||
goto bad_config;
|
||||
}
|
||||
|
||||
if (factory_config.magic != FACTORY_CONFIG_MAGIC) {
|
||||
pr_warning("MityOMAPL138: Factory Config Magic Wrong (%X)\n",
|
||||
factory_config.magic);
|
||||
pr_warn("Factory Config Magic Wrong (%X)\n",
|
||||
factory_config.magic);
|
||||
goto bad_config;
|
||||
}
|
||||
|
||||
if (factory_config.version != FACTORY_CONFIG_VERSION) {
|
||||
pr_warning("MityOMAPL138: Factory Config Version Wrong (%X)\n",
|
||||
factory_config.version);
|
||||
pr_warn("Factory Config Version Wrong (%X)\n",
|
||||
factory_config.version);
|
||||
goto bad_config;
|
||||
}
|
||||
|
||||
pr_info("MityOMAPL138: Found MAC = %pM\n", factory_config.mac);
|
||||
pr_info("Found MAC = %pM\n", factory_config.mac);
|
||||
if (is_valid_ether_addr(factory_config.mac))
|
||||
memcpy(soc_info->emac_pdata->mac_addr,
|
||||
factory_config.mac, ETH_ALEN);
|
||||
else
|
||||
pr_warning("MityOMAPL138: Invalid MAC found "
|
||||
"in factory config block\n");
|
||||
pr_warn("Invalid MAC found in factory config block\n");
|
||||
|
||||
partnum = factory_config.partnum;
|
||||
pr_info("MityOMAPL138: Part Number = %s\n", partnum);
|
||||
pr_info("Part Number = %s\n", partnum);
|
||||
|
||||
bad_config:
|
||||
/* default maximum speed is valid for all platforms */
|
||||
@ -435,7 +435,7 @@ static void __init mityomapl138_setup_nand(void)
|
||||
ARRAY_SIZE(mityomapl138_devices));
|
||||
|
||||
if (davinci_aemif_setup(&mityomapl138_nandflash_device))
|
||||
pr_warn("%s: Cannot configure AEMIF.\n", __func__);
|
||||
pr_warn("%s: Cannot configure AEMIF\n", __func__);
|
||||
}
|
||||
|
||||
static const short mityomap_mii_pins[] = {
|
||||
@ -478,7 +478,7 @@ static void __init mityomapl138_config_emac(void)
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
pr_warning("mii/rmii mux setup failed: %d\n", ret);
|
||||
pr_warn("mii/rmii mux setup failed: %d\n", ret);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -489,7 +489,7 @@ static void __init mityomapl138_config_emac(void)
|
||||
|
||||
ret = da8xx_register_emac();
|
||||
if (ret)
|
||||
pr_warning("emac registration failed: %d\n", ret);
|
||||
pr_warn("emac registration failed: %d\n", ret);
|
||||
}
|
||||
|
||||
static struct davinci_pm_config da850_pm_pdata = {
|
||||
@ -511,21 +511,21 @@ static void __init mityomapl138_init(void)
|
||||
/* for now, no special EDMA channels are reserved */
|
||||
ret = da850_register_edma(NULL);
|
||||
if (ret)
|
||||
pr_warning("edma registration failed: %d\n", ret);
|
||||
pr_warn("edma registration failed: %d\n", ret);
|
||||
|
||||
ret = da8xx_register_watchdog();
|
||||
if (ret)
|
||||
pr_warning("watchdog registration failed: %d\n", ret);
|
||||
pr_warn("watchdog registration failed: %d\n", ret);
|
||||
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
|
||||
ret = da8xx_register_i2c(0, &mityomap_i2c_0_pdata);
|
||||
if (ret)
|
||||
pr_warning("i2c0 registration failed: %d\n", ret);
|
||||
pr_warn("i2c0 registration failed: %d\n", ret);
|
||||
|
||||
ret = pmic_tps65023_init();
|
||||
if (ret)
|
||||
pr_warning("TPS65023 PMIC init failed: %d\n", ret);
|
||||
pr_warn("TPS65023 PMIC init failed: %d\n", ret);
|
||||
|
||||
mityomapl138_setup_nand();
|
||||
|
||||
@ -537,22 +537,21 @@ static void __init mityomapl138_init(void)
|
||||
ret = da8xx_register_spi_bus(1,
|
||||
ARRAY_SIZE(mityomapl138_spi_flash_info));
|
||||
if (ret)
|
||||
pr_warning("spi 1 registration failed: %d\n", ret);
|
||||
pr_warn("spi 1 registration failed: %d\n", ret);
|
||||
|
||||
mityomapl138_config_emac();
|
||||
|
||||
ret = da8xx_register_rtc();
|
||||
if (ret)
|
||||
pr_warning("rtc setup failed: %d\n", ret);
|
||||
pr_warn("rtc setup failed: %d\n", ret);
|
||||
|
||||
ret = da8xx_register_cpuidle();
|
||||
if (ret)
|
||||
pr_warning("cpuidle registration failed: %d\n", ret);
|
||||
pr_warn("cpuidle registration failed: %d\n", ret);
|
||||
|
||||
ret = da850_register_pm(&da850_pm_device);
|
||||
if (ret)
|
||||
pr_warning("da850_evm_init: suspend registration failed: %d\n",
|
||||
ret);
|
||||
pr_warn("suspend registration failed: %d\n", ret);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
||||
|
@ -183,9 +183,8 @@ static __init void davinci_ntosd2_init(void)
|
||||
|
||||
if (HAS_ATA) {
|
||||
if (HAS_NAND)
|
||||
pr_warning("WARNING: both IDE and Flash are "
|
||||
"enabled, but they share AEMIF pins.\n"
|
||||
"\tDisable IDE for NAND/NOR support.\n");
|
||||
pr_warn("WARNING: both IDE and Flash are enabled, but they share AEMIF pins\n"
|
||||
"\tDisable IDE for NAND/NOR support\n");
|
||||
davinci_init_ide();
|
||||
} else if (HAS_NAND) {
|
||||
davinci_cfg_reg(DM644X_HPIEN_DISABLE);
|
||||
|
@ -564,7 +564,7 @@ int davinci_set_refclk_rate(unsigned long rate)
|
||||
|
||||
refclk = clk_get(NULL, "ref");
|
||||
if (IS_ERR(refclk)) {
|
||||
pr_err("%s: failed to get reference clock.\n", __func__);
|
||||
pr_err("%s: failed to get reference clock\n", __func__);
|
||||
return PTR_ERR(refclk);
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,9 @@
|
||||
*
|
||||
* Copyright (C) 2008 Texas Instruments.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
@ -46,7 +49,7 @@ int __init_or_module davinci_cfg_reg(const unsigned long index)
|
||||
}
|
||||
|
||||
if (index >= soc_info->pinmux_pins_num) {
|
||||
printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n",
|
||||
pr_err("Invalid pin mux index: %lu (%lu)\n",
|
||||
index, soc_info->pinmux_pins_num);
|
||||
dump_stack();
|
||||
return -ENODEV;
|
||||
@ -55,7 +58,7 @@ int __init_or_module davinci_cfg_reg(const unsigned long index)
|
||||
cfg = &soc_info->pinmux_pins[index];
|
||||
|
||||
if (cfg->name == NULL) {
|
||||
printk(KERN_ERR "No entry for the specified index\n");
|
||||
pr_err("No entry for the specified index\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -82,15 +85,15 @@ int __init_or_module davinci_cfg_reg(const unsigned long index)
|
||||
|
||||
if (warn) {
|
||||
#ifdef CONFIG_DAVINCI_MUX_WARNINGS
|
||||
printk(KERN_WARNING "MUX: initialized %s\n", cfg->name);
|
||||
pr_warn("initialized %s\n", cfg->name);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DAVINCI_MUX_DEBUG
|
||||
if (cfg->debug || warn) {
|
||||
printk(KERN_WARNING "MUX: Setting register %s\n", cfg->name);
|
||||
printk(KERN_WARNING " %s (0x%08x) = 0x%08x -> 0x%08x\n",
|
||||
cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg);
|
||||
pr_warn("Setting register %s\n", cfg->name);
|
||||
pr_warn(" %s (0x%08x) = 0x%08x -> 0x%08x\n",
|
||||
cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -342,8 +342,6 @@ void __init davinci_timer_init(void)
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
unsigned int clockevent_id;
|
||||
unsigned int clocksource_id;
|
||||
static char err[] __initdata = KERN_ERR
|
||||
"%s: can't register clocksource!\n";
|
||||
int i;
|
||||
|
||||
clockevent_id = soc_info->timer_info->clockevent_id;
|
||||
@ -364,12 +362,12 @@ void __init davinci_timer_init(void)
|
||||
|
||||
/* Only bottom timers can use compare regs */
|
||||
if (IS_TIMER_TOP(clockevent_id))
|
||||
pr_warning("davinci_timer_init: Invalid use"
|
||||
" of system timers. Results unpredictable.\n");
|
||||
pr_warn("%s: Invalid use of system timers. Results unpredictable.\n",
|
||||
__func__);
|
||||
else if ((dtip[event_timer].cmp_off == 0)
|
||||
|| (dtip[event_timer].cmp_irq == 0))
|
||||
pr_warning("davinci_timer_init: Invalid timer instance"
|
||||
" setup. Results unpredictable.\n");
|
||||
pr_warn("%s: Invalid timer instance setup. Results unpredictable.\n",
|
||||
__func__);
|
||||
else {
|
||||
timers[TID_CLOCKEVENT].opts |= TIMER_OPTS_USE_COMPARE;
|
||||
clockevent_davinci.features = CLOCK_EVT_FEAT_ONESHOT;
|
||||
@ -389,7 +387,8 @@ void __init davinci_timer_init(void)
|
||||
clocksource_davinci.name = id_to_name[clocksource_id];
|
||||
if (clocksource_register_hz(&clocksource_davinci,
|
||||
davinci_clock_tick_rate))
|
||||
printk(err, clocksource_davinci.name);
|
||||
pr_err("%s: can't register clocksource!\n",
|
||||
clocksource_davinci.name);
|
||||
|
||||
sched_clock_register(davinci_read_sched_clock, 32,
|
||||
davinci_clock_tick_rate);
|
||||
|
@ -16,9 +16,6 @@ obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
|
||||
|
||||
obj-$(CONFIG_SMP) += platsmp.o headsmp.o
|
||||
|
||||
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
CFLAGS_hotplug.o += -march=armv7-a
|
||||
|
||||
plus_sec := $(call as-instr,.arch_extension sec,+sec)
|
||||
AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec)
|
||||
|
||||
|
@ -130,8 +130,6 @@ extern void exynos_cpu_resume(void);
|
||||
|
||||
extern struct smp_operations exynos_smp_ops;
|
||||
|
||||
extern void exynos_cpu_die(unsigned int cpu);
|
||||
|
||||
/* PMU(Power Management Unit) support */
|
||||
|
||||
#define PMU_TABLE_END (-1U)
|
||||
|
@ -40,41 +40,11 @@ static struct map_desc exynos4_iodesc[] __initdata = {
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_SYSCON),
|
||||
.length = SZ_64K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_TIMER,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_TIMER),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_WATCHDOG,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_WATCHDOG),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_SROMC,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_SROMC),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_SYSTIMER,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_SYSTIMER),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_COMBINER_BASE,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_COMBINER),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_GIC_CPU,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_GIC_CPU),
|
||||
.length = SZ_64K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_GIC_DIST,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_GIC_DIST),
|
||||
.length = SZ_64K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_CMU,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_CMU),
|
||||
@ -85,11 +55,6 @@ static struct map_desc exynos4_iodesc[] __initdata = {
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_COREPERI),
|
||||
.length = SZ_8K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_L2CC,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_L2CC),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_DMC0,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_DMC0),
|
||||
@ -100,11 +65,6 @@ static struct map_desc exynos4_iodesc[] __initdata = {
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_DMC1),
|
||||
.length = SZ_64K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_USB_HSPHY,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_HSPHY),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
},
|
||||
};
|
||||
|
||||
@ -114,16 +74,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
|
||||
.pfn = __phys_to_pfn(EXYNOS5_PA_SYSCON),
|
||||
.length = SZ_64K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_TIMER,
|
||||
.pfn = __phys_to_pfn(EXYNOS5_PA_TIMER),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_WATCHDOG,
|
||||
.pfn = __phys_to_pfn(EXYNOS5_PA_WATCHDOG),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_SROMC,
|
||||
.pfn = __phys_to_pfn(EXYNOS5_PA_SROMC),
|
||||
|
@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Cloned from linux/arch/arm/mach-realview/hotplug.c
|
||||
*
|
||||
* Copyright (C) 2002 ARM Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* 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/errno.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/cp15.h>
|
||||
#include <asm/smp_plat.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "regs-pmu.h"
|
||||
|
||||
static inline void cpu_leave_lowpower(void)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
asm volatile(
|
||||
"mrc p15, 0, %0, c1, c0, 0\n"
|
||||
" orr %0, %0, %1\n"
|
||||
" mcr p15, 0, %0, c1, c0, 0\n"
|
||||
" mrc p15, 0, %0, c1, c0, 1\n"
|
||||
" orr %0, %0, %2\n"
|
||||
" mcr p15, 0, %0, c1, c0, 1\n"
|
||||
: "=&r" (v)
|
||||
: "Ir" (CR_C), "Ir" (0x40)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
|
||||
{
|
||||
u32 mpidr = cpu_logical_map(cpu);
|
||||
u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0);
|
||||
|
||||
for (;;) {
|
||||
|
||||
/* Turn the CPU off on next WFI instruction. */
|
||||
exynos_cpu_power_down(core_id);
|
||||
|
||||
wfi();
|
||||
|
||||
if (pen_release == core_id) {
|
||||
/*
|
||||
* OK, proper wakeup, we're done
|
||||
*/
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Getting here, means that we have come out of WFI without
|
||||
* having been woken up - this shouldn't happen
|
||||
*
|
||||
* Just note it happening - when we're woken, we can report
|
||||
* its occurrence.
|
||||
*/
|
||||
(*spurious)++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* platform-specific code to shutdown a CPU
|
||||
*
|
||||
* Called with IRQs disabled
|
||||
*/
|
||||
void __ref exynos_cpu_die(unsigned int cpu)
|
||||
{
|
||||
int spurious = 0;
|
||||
|
||||
v7_exit_coherency_flush(louis);
|
||||
|
||||
platform_do_lowpower(cpu, &spurious);
|
||||
|
||||
/*
|
||||
* bring this CPU back into the world of cache
|
||||
* coherency, and then restore interrupts
|
||||
*/
|
||||
cpu_leave_lowpower();
|
||||
|
||||
if (spurious)
|
||||
pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious);
|
||||
}
|
@ -30,40 +30,17 @@
|
||||
#define EXYNOS4_PA_CMU 0x10030000
|
||||
#define EXYNOS5_PA_CMU 0x10010000
|
||||
|
||||
#define EXYNOS4_PA_SYSTIMER 0x10050000
|
||||
|
||||
#define EXYNOS4_PA_WATCHDOG 0x10060000
|
||||
#define EXYNOS5_PA_WATCHDOG 0x101D0000
|
||||
|
||||
#define EXYNOS4_PA_DMC0 0x10400000
|
||||
#define EXYNOS4_PA_DMC1 0x10410000
|
||||
|
||||
#define EXYNOS4_PA_COMBINER 0x10440000
|
||||
#define EXYNOS5_PA_COMBINER 0x10440000
|
||||
|
||||
#define EXYNOS4_PA_GIC_CPU 0x10480000
|
||||
#define EXYNOS4_PA_GIC_DIST 0x10490000
|
||||
#define EXYNOS5_PA_GIC_CPU 0x10482000
|
||||
#define EXYNOS5_PA_GIC_DIST 0x10481000
|
||||
|
||||
#define EXYNOS4_PA_COREPERI 0x10500000
|
||||
#define EXYNOS4_PA_L2CC 0x10502000
|
||||
|
||||
#define EXYNOS4_PA_SROMC 0x12570000
|
||||
#define EXYNOS5_PA_SROMC 0x12250000
|
||||
|
||||
#define EXYNOS4_PA_HSPHY 0x125B0000
|
||||
|
||||
#define EXYNOS4_PA_UART 0x13800000
|
||||
#define EXYNOS5_PA_UART 0x12C00000
|
||||
|
||||
#define EXYNOS4_PA_TIMER 0x139D0000
|
||||
#define EXYNOS5_PA_TIMER 0x12DD0000
|
||||
|
||||
/* Compatibility UART */
|
||||
|
||||
#define EXYNOS5440_PA_UART0 0x000B0000
|
||||
|
||||
#define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET))
|
||||
|
||||
#endif /* __ASM_ARCH_MAP_H */
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <linux/of_address.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/cp15.h>
|
||||
#include <asm/smp_plat.h>
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/firmware.h>
|
||||
@ -33,6 +34,88 @@
|
||||
|
||||
extern void exynos4_secondary_startup(void);
|
||||
|
||||
/*
|
||||
* Set or clear the USE_DELAYED_RESET_ASSERTION option, set on Exynos4 SoCs
|
||||
* during hot-(un)plugging CPUx.
|
||||
*
|
||||
* The feature can be cleared safely during first boot of secondary CPU.
|
||||
*
|
||||
* Exynos4 SoCs require setting USE_DELAYED_RESET_ASSERTION during powering
|
||||
* down a CPU so the CPU idle clock down feature could properly detect global
|
||||
* idle state when CPUx is off.
|
||||
*/
|
||||
static void exynos_set_delayed_reset_assertion(u32 core_id, bool enable)
|
||||
{
|
||||
if (soc_is_exynos4()) {
|
||||
unsigned int tmp;
|
||||
|
||||
tmp = pmu_raw_readl(EXYNOS_ARM_CORE_OPTION(core_id));
|
||||
if (enable)
|
||||
tmp |= S5P_USE_DELAYED_RESET_ASSERTION;
|
||||
else
|
||||
tmp &= ~(S5P_USE_DELAYED_RESET_ASSERTION);
|
||||
pmu_raw_writel(tmp, EXYNOS_ARM_CORE_OPTION(core_id));
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
static inline void cpu_leave_lowpower(u32 core_id)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
asm volatile(
|
||||
"mrc p15, 0, %0, c1, c0, 0\n"
|
||||
" orr %0, %0, %1\n"
|
||||
" mcr p15, 0, %0, c1, c0, 0\n"
|
||||
" mrc p15, 0, %0, c1, c0, 1\n"
|
||||
" orr %0, %0, %2\n"
|
||||
" mcr p15, 0, %0, c1, c0, 1\n"
|
||||
: "=&r" (v)
|
||||
: "Ir" (CR_C), "Ir" (0x40)
|
||||
: "cc");
|
||||
|
||||
exynos_set_delayed_reset_assertion(core_id, false);
|
||||
}
|
||||
|
||||
static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
|
||||
{
|
||||
u32 mpidr = cpu_logical_map(cpu);
|
||||
u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0);
|
||||
|
||||
for (;;) {
|
||||
|
||||
/* Turn the CPU off on next WFI instruction. */
|
||||
exynos_cpu_power_down(core_id);
|
||||
|
||||
/*
|
||||
* Exynos4 SoCs require setting
|
||||
* USE_DELAYED_RESET_ASSERTION so the CPU idle
|
||||
* clock down feature could properly detect
|
||||
* global idle state when CPUx is off.
|
||||
*/
|
||||
exynos_set_delayed_reset_assertion(core_id, true);
|
||||
|
||||
wfi();
|
||||
|
||||
if (pen_release == core_id) {
|
||||
/*
|
||||
* OK, proper wakeup, we're done
|
||||
*/
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Getting here, means that we have come out of WFI without
|
||||
* having been woken up - this shouldn't happen
|
||||
*
|
||||
* Just note it happening - when we're woken, we can report
|
||||
* its occurrence.
|
||||
*/
|
||||
(*spurious)++;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
/**
|
||||
* exynos_core_power_down : power down the specified cpu
|
||||
* @cpu : the cpu to power down
|
||||
@ -237,6 +320,9 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||
udelay(10);
|
||||
}
|
||||
|
||||
/* No harm if this is called during first boot of secondary CPU */
|
||||
exynos_set_delayed_reset_assertion(core_id, false);
|
||||
|
||||
/*
|
||||
* now the secondary core is starting up let it run its
|
||||
* calibrations, then wait for it to finish
|
||||
@ -318,6 +404,33 @@ static void __init exynos_smp_prepare_cpus(unsigned int max_cpus)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/*
|
||||
* platform-specific code to shutdown a CPU
|
||||
*
|
||||
* Called with IRQs disabled
|
||||
*/
|
||||
static void exynos_cpu_die(unsigned int cpu)
|
||||
{
|
||||
int spurious = 0;
|
||||
u32 mpidr = cpu_logical_map(cpu);
|
||||
u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0);
|
||||
|
||||
v7_exit_coherency_flush(louis);
|
||||
|
||||
platform_do_lowpower(cpu, &spurious);
|
||||
|
||||
/*
|
||||
* bring this CPU back into the world of cache
|
||||
* coherency, and then restore interrupts
|
||||
*/
|
||||
cpu_leave_lowpower(core_id);
|
||||
|
||||
if (spurious)
|
||||
pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious);
|
||||
}
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
struct smp_operations exynos_smp_ops __initdata = {
|
||||
.smp_init_cpus = exynos_smp_init_cpus,
|
||||
.smp_prepare_cpus = exynos_smp_prepare_cpus,
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#define S5P_USE_STANDBY_WFI0 (1 << 16)
|
||||
#define S5P_USE_STANDBY_WFE0 (1 << 24)
|
||||
#define S5P_USE_DELAYED_RESET_ASSERTION BIT(12)
|
||||
|
||||
#define EXYNOS_SWRESET 0x0400
|
||||
#define EXYNOS5440_SWRESET 0x00C4
|
||||
@ -106,6 +107,8 @@
|
||||
(EXYNOS_ARM_CORE0_CONFIGURATION + (0x80 * (_nr)))
|
||||
#define EXYNOS_ARM_CORE_STATUS(_nr) \
|
||||
(EXYNOS_ARM_CORE_CONFIGURATION(_nr) + 0x4)
|
||||
#define EXYNOS_ARM_CORE_OPTION(_nr) \
|
||||
(EXYNOS_ARM_CORE_CONFIGURATION(_nr) + 0x8)
|
||||
|
||||
#define EXYNOS_ARM_COMMON_CONFIGURATION 0x2500
|
||||
#define EXYNOS_COMMON_CONFIGURATION(_nr) \
|
||||
|
@ -145,7 +145,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
|
||||
post_div_table[2].div = 1;
|
||||
video_div_table[1].div = 1;
|
||||
video_div_table[2].div = 1;
|
||||
};
|
||||
}
|
||||
|
||||
clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||
clk[IMX6QDL_PLL2_BYPASS_SRC] = imx_clk_mux("pll2_bypass_src", base + 0x30, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||
|
@ -69,7 +69,6 @@ static int clk_pllv3_prepare(struct clk_hw *hw)
|
||||
{
|
||||
struct clk_pllv3 *pll = to_clk_pllv3(hw);
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
val = readl_relaxed(pll->base);
|
||||
if (pll->powerup_set)
|
||||
@ -78,11 +77,7 @@ static int clk_pllv3_prepare(struct clk_hw *hw)
|
||||
val &= ~BM_PLL_POWER;
|
||||
writel_relaxed(val, pll->base);
|
||||
|
||||
ret = clk_pllv3_wait_lock(pll);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
return clk_pllv3_wait_lock(pll);
|
||||
}
|
||||
|
||||
static void clk_pllv3_unprepare(struct clk_hw *hw)
|
||||
|
@ -61,7 +61,6 @@ struct platform_device *mxc_register_gpio(char *name, int id,
|
||||
void mxc_set_cpu_type(unsigned int type);
|
||||
void mxc_restart(enum reboot_mode, const char *);
|
||||
void mxc_arch_reset_init(void __iomem *);
|
||||
void mxc_arch_reset_init_dt(void);
|
||||
int mx51_revision(void);
|
||||
int mx53_revision(void);
|
||||
void imx_set_aips(void __iomem *);
|
||||
|
@ -17,13 +17,6 @@
|
||||
#include "common.h"
|
||||
#include "mx25.h"
|
||||
|
||||
static void __init imx25_dt_init(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const imx25_dt_board_compat[] __initconst = {
|
||||
"fsl,imx25",
|
||||
NULL
|
||||
@ -33,7 +26,5 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
|
||||
.map_io = mx25_map_io,
|
||||
.init_early = imx25_init_early,
|
||||
.init_irq = mx25_init_irq,
|
||||
.init_machine = imx25_dt_init,
|
||||
.dt_compat = imx25_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -22,8 +22,6 @@ static void __init imx27_dt_init(void)
|
||||
{
|
||||
struct platform_device_info devinfo = { .name = "cpufreq-dt", };
|
||||
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
|
||||
platform_device_register_full(&devinfo);
|
||||
@ -40,5 +38,4 @@ DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_machine = imx27_dt_init,
|
||||
.dt_compat = imx27_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -18,13 +18,6 @@
|
||||
#include "common.h"
|
||||
#include "mx31.h"
|
||||
|
||||
static void __init imx31_dt_init(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const imx31_dt_board_compat[] __initconst = {
|
||||
"fsl,imx31",
|
||||
NULL
|
||||
@ -40,7 +33,5 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
|
||||
.init_early = imx31_init_early,
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = imx31_dt_timer_init,
|
||||
.init_machine = imx31_dt_init,
|
||||
.dt_compat = imx31_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -20,14 +20,6 @@
|
||||
#include "common.h"
|
||||
#include "mx35.h"
|
||||
|
||||
static void __init imx35_dt_init(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
static void __init imx35_irq_init(void)
|
||||
{
|
||||
imx_init_l2cache();
|
||||
@ -43,7 +35,5 @@ DT_MACHINE_START(IMX35_DT, "Freescale i.MX35 (Device Tree Support)")
|
||||
.map_io = mx35_map_io,
|
||||
.init_early = imx35_init_early,
|
||||
.init_irq = imx35_irq_init,
|
||||
.init_machine = imx35_dt_init,
|
||||
.dt_compat = imx35_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -44,9 +44,11 @@ static unsigned long mxc_pin_alloc_map[NB_PORTS * 32 / BITS_PER_LONG];
|
||||
/*
|
||||
* set the mode for a IOMUX pin.
|
||||
*/
|
||||
int mxc_iomux_mode(unsigned int pin_mode)
|
||||
void mxc_iomux_mode(unsigned int pin_mode)
|
||||
{
|
||||
u32 field, l, mode, ret = 0;
|
||||
u32 field;
|
||||
u32 l;
|
||||
u32 mode;
|
||||
void __iomem *reg;
|
||||
|
||||
reg = IOMUXSW_MUX_CTL + (pin_mode & IOMUX_REG_MASK);
|
||||
@ -61,8 +63,6 @@ int mxc_iomux_mode(unsigned int pin_mode)
|
||||
__raw_writel(l, reg);
|
||||
|
||||
spin_unlock(&gpio_mux_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -144,7 +144,7 @@ void mxc_iomux_set_gpr(enum iomux_gp_func, bool en);
|
||||
* It is called by the setup functions and should not be called directly anymore.
|
||||
* It is here visible for backward compatibility
|
||||
*/
|
||||
int mxc_iomux_mode(unsigned int pin_mode);
|
||||
void mxc_iomux_mode(unsigned int pin_mode);
|
||||
|
||||
#define IOMUX_PADNUM_MASK 0x1ff
|
||||
#define IOMUX_GPIONUM_SHIFT 9
|
||||
|
@ -16,13 +16,6 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static void __init imx50_dt_init(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const imx50_dt_board_compat[] __initconst = {
|
||||
"fsl,imx50",
|
||||
NULL
|
||||
@ -30,7 +23,5 @@ static const char * const imx50_dt_board_compat[] __initconst = {
|
||||
|
||||
DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)")
|
||||
.init_irq = tzic_init_irq,
|
||||
.init_machine = imx50_dt_init,
|
||||
.dt_compat = imx50_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -53,7 +53,6 @@ static void __init imx51_dt_init(void)
|
||||
{
|
||||
struct platform_device_info devinfo = { .name = "cpufreq-dt", };
|
||||
|
||||
mxc_arch_reset_init_dt();
|
||||
imx51_ipu_mipi_setup();
|
||||
imx_src_init();
|
||||
|
||||
@ -78,5 +77,4 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
|
||||
.init_machine = imx51_dt_init,
|
||||
.init_late = imx51_init_late,
|
||||
.dt_compat = imx51_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -30,7 +30,6 @@ static void __init imx53_init_early(void)
|
||||
|
||||
static void __init imx53_dt_init(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
imx_src_init();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
@ -54,5 +53,4 @@ DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
|
||||
.init_machine = imx53_dt_init,
|
||||
.init_late = imx53_init_late,
|
||||
.dt_compat = imx53_dt_board_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -268,8 +268,6 @@ static void __init imx6q_init_machine(void)
|
||||
imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q",
|
||||
imx_get_soc_revision());
|
||||
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
parent = imx_soc_device_init();
|
||||
if (parent == NULL)
|
||||
pr_warn("failed to initialize soc device\n");
|
||||
@ -409,5 +407,4 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)")
|
||||
.init_machine = imx6q_init_machine,
|
||||
.init_late = imx6q_init_late,
|
||||
.dt_compat = imx6q_dt_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -48,8 +48,6 @@ static void __init imx6sl_init_machine(void)
|
||||
{
|
||||
struct device *parent;
|
||||
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
parent = imx_soc_device_init();
|
||||
if (parent == NULL)
|
||||
pr_warn("failed to initialize soc device\n");
|
||||
@ -76,10 +74,8 @@ static const char * const imx6sl_dt_compat[] __initconst = {
|
||||
};
|
||||
|
||||
DT_MACHINE_START(IMX6SL, "Freescale i.MX6 SoloLite (Device Tree)")
|
||||
.map_io = debug_ll_io_init,
|
||||
.init_irq = imx6sl_init_irq,
|
||||
.init_machine = imx6sl_init_machine,
|
||||
.init_late = imx6sl_init_late,
|
||||
.dt_compat = imx6sl_dt_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -18,8 +18,6 @@ static void __init imx6sx_init_machine(void)
|
||||
{
|
||||
struct device *parent;
|
||||
|
||||
mxc_arch_reset_init_dt();
|
||||
|
||||
parent = imx_soc_device_init();
|
||||
if (parent == NULL)
|
||||
pr_warn("failed to initialize soc device\n");
|
||||
@ -53,10 +51,8 @@ static const char * const imx6sx_dt_compat[] __initconst = {
|
||||
};
|
||||
|
||||
DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)")
|
||||
.map_io = debug_ll_io_init,
|
||||
.init_irq = imx6sx_init_irq,
|
||||
.init_machine = imx6sx_init_machine,
|
||||
.dt_compat = imx6sx_dt_compat,
|
||||
.init_late = imx6sx_init_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -12,14 +12,6 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static void __init vf610_init_machine(void)
|
||||
{
|
||||
mxc_arch_reset_init_dt();
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const vf610_dt_compat[] __initconst = {
|
||||
"fsl,vf610",
|
||||
NULL,
|
||||
@ -28,7 +20,5 @@ static const char * const vf610_dt_compat[] __initconst = {
|
||||
DT_MACHINE_START(VYBRID_VF610, "Freescale Vybrid VF610 (Device Tree)")
|
||||
.l2c_aux_val = 0,
|
||||
.l2c_aux_mask = ~0,
|
||||
.init_machine = vf610_init_machine,
|
||||
.dt_compat = vf610_dt_compat,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@ -89,21 +89,6 @@ void __init mxc_arch_reset_init(void __iomem *base)
|
||||
clk_prepare(wdog_clk);
|
||||
}
|
||||
|
||||
void __init mxc_arch_reset_init_dt(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx21-wdt");
|
||||
wdog_base = of_iomap(np, 0);
|
||||
WARN_ON(!wdog_base);
|
||||
|
||||
wdog_clk = of_clk_get(np, 0);
|
||||
if (IS_ERR(wdog_clk))
|
||||
pr_warn("%s: failed to get wdog clock\n", __func__);
|
||||
else
|
||||
clk_prepare(wdog_clk);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CACHE_L2X0
|
||||
void __init imx_init_l2cache(void)
|
||||
{
|
||||
|
@ -36,7 +36,6 @@ menuconfig ARCH_SHMOBILE_MULTI
|
||||
select NO_IOPORT_MAP
|
||||
select PINCTRL
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
select ARCH_HAS_OPP
|
||||
|
||||
if ARCH_SHMOBILE_MULTI
|
||||
|
||||
@ -73,11 +72,6 @@ config ARCH_R8A7794
|
||||
|
||||
comment "Renesas ARM SoCs Board Type"
|
||||
|
||||
config MACH_KOELSCH
|
||||
bool "Koelsch board"
|
||||
depends on ARCH_R8A7791
|
||||
select MICREL_PHY if SH_ETH
|
||||
|
||||
config MACH_LAGER
|
||||
bool "Lager board"
|
||||
depends on ARCH_R8A7790
|
||||
@ -145,14 +139,6 @@ config ARCH_R8A7790
|
||||
select MIGHT_HAVE_PCI
|
||||
select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
|
||||
|
||||
config ARCH_R8A7791
|
||||
bool "R-Car M2-W (R8A77910)"
|
||||
select ARCH_RCAR_GEN2
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select ARM_GIC
|
||||
select MIGHT_HAVE_PCI
|
||||
select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
|
||||
|
||||
comment "Renesas ARM SoCs Board Type"
|
||||
|
||||
config MACH_APE6EVM
|
||||
@ -227,12 +213,6 @@ config MACH_LAGER
|
||||
select MICREL_PHY if SH_ETH
|
||||
select SND_SOC_AK4642 if SND_SIMPLE_CARD
|
||||
|
||||
config MACH_KOELSCH
|
||||
bool "Koelsch board"
|
||||
depends on ARCH_R8A7791
|
||||
select USE_OF
|
||||
select MICREL_PHY if SH_ETH
|
||||
|
||||
config MACH_KZM9G
|
||||
bool "KZM-A9-GT board"
|
||||
depends on ARCH_SH73A0
|
||||
|
@ -19,8 +19,8 @@ obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o
|
||||
obj-$(CONFIG_ARCH_R7S72100) += setup-r7s72100.o
|
||||
|
||||
# Clock objects
|
||||
obj-y += clock.o
|
||||
ifndef CONFIG_COMMON_CLK
|
||||
obj-y += clock.o
|
||||
obj-$(CONFIG_ARCH_SH7372) += clock-sh7372.o
|
||||
obj-$(CONFIG_ARCH_SH73A0) += clock-sh73a0.o
|
||||
obj-$(CONFIG_ARCH_R8A73A4) += clock-r8a73a4.o
|
||||
@ -28,7 +28,6 @@ obj-$(CONFIG_ARCH_R8A7740) += clock-r8a7740.o
|
||||
obj-$(CONFIG_ARCH_R8A7778) += clock-r8a7778.o
|
||||
obj-$(CONFIG_ARCH_R8A7779) += clock-r8a7779.o
|
||||
obj-$(CONFIG_ARCH_R8A7790) += clock-r8a7790.o
|
||||
obj-$(CONFIG_ARCH_R8A7791) += clock-r8a7791.o
|
||||
endif
|
||||
|
||||
# CPU reset vector handling objects
|
||||
@ -57,7 +56,6 @@ obj-$(CONFIG_ARCH_SH7372) += entry-intc.o sleep-sh7372.o
|
||||
|
||||
# Board objects
|
||||
ifdef CONFIG_ARCH_SHMOBILE_MULTI
|
||||
obj-$(CONFIG_MACH_KOELSCH) += board-koelsch-reference.o
|
||||
obj-$(CONFIG_MACH_LAGER) += board-lager-reference.o
|
||||
obj-$(CONFIG_MACH_MARZEN) += board-marzen-reference.o
|
||||
else
|
||||
@ -69,7 +67,6 @@ obj-$(CONFIG_MACH_BOCKW_REFERENCE) += board-bockw-reference.o
|
||||
obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
|
||||
obj-$(CONFIG_MACH_LAGER) += board-lager.o
|
||||
obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o
|
||||
obj-$(CONFIG_MACH_KOELSCH) += board-koelsch.o
|
||||
obj-$(CONFIG_MACH_KZM9G) += board-kzm9g.o
|
||||
obj-$(CONFIG_MACH_KZM9G_REFERENCE) += board-kzm9g-reference.o
|
||||
endif
|
||||
|
@ -5,7 +5,6 @@ loadaddr-$(CONFIG_MACH_APE6EVM_REFERENCE) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_ARMADILLO800EVA) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000
|
||||
loadaddr-$(CONFIG_MACH_BOCKW_REFERENCE) += 0x60008000
|
||||
loadaddr-$(CONFIG_MACH_KOELSCH) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_KZM9G) += 0x41008000
|
||||
loadaddr-$(CONFIG_MACH_KZM9G_REFERENCE) += 0x41008000
|
||||
loadaddr-$(CONFIG_MACH_LAGER) += 0x40008000
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/gpio.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/gpio.h>
|
||||
|
@ -12,53 +12,48 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/platform_data/st1232_pdata.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/regulator/gpio-regulator.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/sh_eth.h>
|
||||
#include <linux/videodev2.h>
|
||||
#include <linux/usb/renesas_usbhs.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mfd/tmio.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/sh_mmcif.h>
|
||||
#include <linux/mmc/sh_mobile_sdhi.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/platform_data/st1232_pdata.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/regulator/gpio-regulator.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/sh_eth.h>
|
||||
#include <linux/usb/renesas_usbhs.h>
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#include <media/mt9t112.h>
|
||||
#include <media/sh_mobile_ceu.h>
|
||||
#include <media/soc_camera.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
#include <video/sh_mobile_lcdc.h>
|
||||
#include <video/sh_mobile_hdmi.h>
|
||||
#include <asm/page.h>
|
||||
#include <media/mt9t112.h>
|
||||
#include <media/sh_mobile_ceu.h>
|
||||
#include <media/soc_camera.h>
|
||||
#include <sound/sh_fsi.h>
|
||||
#include <sound/simple_card.h>
|
||||
#include <video/sh_mobile_hdmi.h>
|
||||
#include <video/sh_mobile_lcdc.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/of_platform.h>
|
||||
|
@ -13,10 +13,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/mfd/tmio.h>
|
||||
|
@ -1,117 +0,0 @@
|
||||
/*
|
||||
* Koelsch board support - Reference DT implementation
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Electronics Corporation
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
* Copyright (C) 2013 Magnus Damm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7791.h"
|
||||
#include "rcar-gen2.h"
|
||||
|
||||
/* DU */
|
||||
static struct rcar_du_encoder_data koelsch_du_encoders[] = {
|
||||
{
|
||||
.type = RCAR_DU_ENCODER_NONE,
|
||||
.output = RCAR_DU_OUTPUT_LVDS0,
|
||||
.connector.lvds.panel = {
|
||||
.width_mm = 210,
|
||||
.height_mm = 158,
|
||||
.mode = {
|
||||
.pixelclock = 65000000,
|
||||
.hactive = 1024,
|
||||
.hfront_porch = 20,
|
||||
.hback_porch = 160,
|
||||
.hsync_len = 136,
|
||||
.vactive = 768,
|
||||
.vfront_porch = 3,
|
||||
.vback_porch = 29,
|
||||
.vsync_len = 6,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct rcar_du_platform_data koelsch_du_pdata = {
|
||||
.encoders = koelsch_du_encoders,
|
||||
.num_encoders = ARRAY_SIZE(koelsch_du_encoders),
|
||||
};
|
||||
|
||||
static const struct resource du_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xfeb00000, 0x40000),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
|
||||
DEFINE_RES_IRQ(gic_spi(256)),
|
||||
DEFINE_RES_IRQ(gic_spi(268)),
|
||||
};
|
||||
|
||||
static void __init koelsch_add_du_device(void)
|
||||
{
|
||||
struct platform_device_info info = {
|
||||
.name = "rcar-du-r8a7791",
|
||||
.id = -1,
|
||||
.res = du_resources,
|
||||
.num_res = ARRAY_SIZE(du_resources),
|
||||
.data = &koelsch_du_pdata,
|
||||
.size_data = sizeof(koelsch_du_pdata),
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
platform_device_register_full(&info);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a really crude hack to provide clkdev support to platform
|
||||
* devices until they get moved to DT.
|
||||
*/
|
||||
static const struct clk_name clk_names[] __initconst = {
|
||||
{ "du0", "du.0", "rcar-du-r8a7791" },
|
||||
{ "du1", "du.1", "rcar-du-r8a7791" },
|
||||
{ "lvds0", "lvds.0", "rcar-du-r8a7791" },
|
||||
};
|
||||
|
||||
static void __init koelsch_add_standard_devices(void)
|
||||
{
|
||||
shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false);
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
|
||||
koelsch_add_du_device();
|
||||
}
|
||||
|
||||
static const char * const koelsch_boards_compat_dt[] __initconst = {
|
||||
"renesas,koelsch",
|
||||
"renesas,koelsch-reference",
|
||||
NULL,
|
||||
};
|
||||
|
||||
DT_MACHINE_START(KOELSCH_DT, "koelsch")
|
||||
.smp = smp_ops(r8a7791_smp_ops),
|
||||
.init_early = shmobile_init_delay,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = koelsch_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.reserve = rcar_gen2_reserve,
|
||||
.dt_compat = koelsch_boards_compat_dt,
|
||||
MACHINE_END
|
@ -1,527 +0,0 @@
|
||||
/*
|
||||
* Koelsch board support
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Electronics Corporation
|
||||
* Copyright (C) 2013-2014 Renesas Solutions Corp.
|
||||
* Copyright (C) 2013 Magnus Damm
|
||||
* Copyright (C) 2014 Cogent Embedded, Inc.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/mfd/tmio.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/sh_mobile_sdhi.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/platform_data/gpio-rcar.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/regulator/gpio-regulator.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/sh_eth.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/spi/rspi.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7791.h"
|
||||
#include "rcar-gen2.h"
|
||||
|
||||
/* DU */
|
||||
static struct rcar_du_encoder_data koelsch_du_encoders[] = {
|
||||
{
|
||||
.type = RCAR_DU_ENCODER_NONE,
|
||||
.output = RCAR_DU_OUTPUT_LVDS0,
|
||||
.connector.lvds.panel = {
|
||||
.width_mm = 210,
|
||||
.height_mm = 158,
|
||||
.mode = {
|
||||
.pixelclock = 65000000,
|
||||
.hactive = 1024,
|
||||
.hfront_porch = 20,
|
||||
.hback_porch = 160,
|
||||
.hsync_len = 136,
|
||||
.vactive = 768,
|
||||
.vfront_porch = 3,
|
||||
.vback_porch = 29,
|
||||
.vsync_len = 6,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static const struct rcar_du_platform_data koelsch_du_pdata __initconst = {
|
||||
.encoders = koelsch_du_encoders,
|
||||
.num_encoders = ARRAY_SIZE(koelsch_du_encoders),
|
||||
};
|
||||
|
||||
static const struct resource du_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xfeb00000, 0x40000),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
|
||||
DEFINE_RES_IRQ(gic_spi(256)),
|
||||
DEFINE_RES_IRQ(gic_spi(268)),
|
||||
};
|
||||
|
||||
static void __init koelsch_add_du_device(void)
|
||||
{
|
||||
struct platform_device_info info = {
|
||||
.name = "rcar-du-r8a7791",
|
||||
.id = -1,
|
||||
.res = du_resources,
|
||||
.num_res = ARRAY_SIZE(du_resources),
|
||||
.data = &koelsch_du_pdata,
|
||||
.size_data = sizeof(koelsch_du_pdata),
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
platform_device_register_full(&info);
|
||||
}
|
||||
|
||||
/* Ether */
|
||||
static const struct sh_eth_plat_data ether_pdata __initconst = {
|
||||
.phy = 0x1,
|
||||
.phy_irq = irq_pin(0),
|
||||
.edmac_endian = EDMAC_LITTLE_ENDIAN,
|
||||
.phy_interface = PHY_INTERFACE_MODE_RMII,
|
||||
.ether_link_active_low = 1,
|
||||
};
|
||||
|
||||
static const struct resource ether_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xee700000, 0x400),
|
||||
DEFINE_RES_IRQ(gic_spi(162)),
|
||||
};
|
||||
|
||||
static const struct platform_device_info ether_info __initconst = {
|
||||
.name = "r8a7791-ether",
|
||||
.id = -1,
|
||||
.res = ether_resources,
|
||||
.num_res = ARRAY_SIZE(ether_resources),
|
||||
.data = ðer_pdata,
|
||||
.size_data = sizeof(ether_pdata),
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
/* LEDS */
|
||||
static struct gpio_led koelsch_leds[] = {
|
||||
{
|
||||
.name = "led8",
|
||||
.gpio = RCAR_GP_PIN(2, 21),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
}, {
|
||||
.name = "led7",
|
||||
.gpio = RCAR_GP_PIN(2, 20),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
}, {
|
||||
.name = "led6",
|
||||
.gpio = RCAR_GP_PIN(2, 19),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct gpio_led_platform_data koelsch_leds_pdata __initconst = {
|
||||
.leds = koelsch_leds,
|
||||
.num_leds = ARRAY_SIZE(koelsch_leds),
|
||||
};
|
||||
|
||||
/* GPIO KEY */
|
||||
#define GPIO_KEY(c, g, d, ...) \
|
||||
{ .code = c, .gpio = g, .desc = d, .active_low = 1, \
|
||||
.wakeup = 1, .debounce_interval = 20 }
|
||||
|
||||
static struct gpio_keys_button gpio_buttons[] = {
|
||||
GPIO_KEY(KEY_4, RCAR_GP_PIN(5, 3), "SW2-pin4"),
|
||||
GPIO_KEY(KEY_3, RCAR_GP_PIN(5, 2), "SW2-pin3"),
|
||||
GPIO_KEY(KEY_2, RCAR_GP_PIN(5, 1), "SW2-pin2"),
|
||||
GPIO_KEY(KEY_1, RCAR_GP_PIN(5, 0), "SW2-pin1"),
|
||||
GPIO_KEY(KEY_G, RCAR_GP_PIN(7, 6), "SW36"),
|
||||
GPIO_KEY(KEY_F, RCAR_GP_PIN(7, 5), "SW35"),
|
||||
GPIO_KEY(KEY_E, RCAR_GP_PIN(7, 4), "SW34"),
|
||||
GPIO_KEY(KEY_D, RCAR_GP_PIN(7, 3), "SW33"),
|
||||
GPIO_KEY(KEY_C, RCAR_GP_PIN(7, 2), "SW32"),
|
||||
GPIO_KEY(KEY_B, RCAR_GP_PIN(7, 1), "SW31"),
|
||||
GPIO_KEY(KEY_A, RCAR_GP_PIN(7, 0), "SW30"),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_platform_data koelsch_keys_pdata __initconst = {
|
||||
.buttons = gpio_buttons,
|
||||
.nbuttons = ARRAY_SIZE(gpio_buttons),
|
||||
};
|
||||
|
||||
/* QSPI */
|
||||
static const struct resource qspi_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xe6b10000, 0x1000),
|
||||
DEFINE_RES_IRQ_NAMED(gic_spi(184), "mux"),
|
||||
};
|
||||
|
||||
static const struct rspi_plat_data qspi_pdata __initconst = {
|
||||
.num_chipselect = 1,
|
||||
};
|
||||
|
||||
/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64 MiB) */
|
||||
static struct mtd_partition spi_flash_part[] = {
|
||||
{
|
||||
.name = "loader",
|
||||
.offset = 0x00000000,
|
||||
.size = 512 * 1024,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
{
|
||||
.name = "bootenv",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 512 * 1024,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
{
|
||||
.name = "data",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct flash_platform_data spi_flash_data = {
|
||||
.name = "m25p80",
|
||||
.parts = spi_flash_part,
|
||||
.nr_parts = ARRAY_SIZE(spi_flash_part),
|
||||
.type = "s25fl512s",
|
||||
};
|
||||
|
||||
static const struct spi_board_info spi_info[] __initconst = {
|
||||
{
|
||||
.modalias = "m25p80",
|
||||
.platform_data = &spi_flash_data,
|
||||
.mode = SPI_MODE_0 | SPI_TX_QUAD | SPI_RX_QUAD,
|
||||
.max_speed_hz = 30000000,
|
||||
.bus_num = 0,
|
||||
.chip_select = 0,
|
||||
},
|
||||
};
|
||||
|
||||
/* SATA0 */
|
||||
static const struct resource sata0_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xee300000, 0x2000),
|
||||
DEFINE_RES_IRQ(gic_spi(105)),
|
||||
};
|
||||
|
||||
static const struct platform_device_info sata0_info __initconst = {
|
||||
.name = "sata-r8a7791",
|
||||
.id = 0,
|
||||
.res = sata0_resources,
|
||||
.num_res = ARRAY_SIZE(sata0_resources),
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
/* I2C */
|
||||
static const struct resource i2c_resources[] __initconst = {
|
||||
/* I2C0 */
|
||||
DEFINE_RES_MEM(0xE6508000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(287)),
|
||||
/* I2C1 */
|
||||
DEFINE_RES_MEM(0xE6518000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(288)),
|
||||
/* I2C2 */
|
||||
DEFINE_RES_MEM(0xE6530000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(286)),
|
||||
/* I2C3 */
|
||||
DEFINE_RES_MEM(0xE6540000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(290)),
|
||||
/* I2C4 */
|
||||
DEFINE_RES_MEM(0xE6520000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(19)),
|
||||
/* I2C5 */
|
||||
DEFINE_RES_MEM(0xE6528000, 0x40),
|
||||
DEFINE_RES_IRQ(gic_spi(20)),
|
||||
};
|
||||
|
||||
static void __init koelsch_add_i2c(unsigned idx)
|
||||
{
|
||||
unsigned res_idx = idx * 2;
|
||||
|
||||
BUG_ON(res_idx >= ARRAY_SIZE(i2c_resources));
|
||||
|
||||
platform_device_register_simple("i2c-rcar_gen2", idx,
|
||||
i2c_resources + res_idx, 2);
|
||||
}
|
||||
|
||||
#define SDHI_REGULATOR(idx, vdd_pin, vccq_pin) \
|
||||
static struct regulator_consumer_supply vcc_sdhi##idx##_consumer = \
|
||||
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi." #idx); \
|
||||
\
|
||||
static struct regulator_init_data vcc_sdhi##idx##_init_data = { \
|
||||
.constraints = { \
|
||||
.valid_ops_mask = REGULATOR_CHANGE_STATUS, \
|
||||
}, \
|
||||
.consumer_supplies = &vcc_sdhi##idx##_consumer, \
|
||||
.num_consumer_supplies = 1, \
|
||||
}; \
|
||||
\
|
||||
static const struct fixed_voltage_config vcc_sdhi##idx##_info __initconst = {\
|
||||
.supply_name = "SDHI" #idx "Vcc", \
|
||||
.microvolts = 3300000, \
|
||||
.gpio = vdd_pin, \
|
||||
.enable_high = 1, \
|
||||
.init_data = &vcc_sdhi##idx##_init_data, \
|
||||
}; \
|
||||
\
|
||||
static struct regulator_consumer_supply vccq_sdhi##idx##_consumer = \
|
||||
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi." #idx); \
|
||||
\
|
||||
static struct regulator_init_data vccq_sdhi##idx##_init_data = { \
|
||||
.constraints = { \
|
||||
.input_uV = 3300000, \
|
||||
.min_uV = 1800000, \
|
||||
.max_uV = 3300000, \
|
||||
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | \
|
||||
REGULATOR_CHANGE_STATUS, \
|
||||
}, \
|
||||
.consumer_supplies = &vccq_sdhi##idx##_consumer, \
|
||||
.num_consumer_supplies = 1, \
|
||||
}; \
|
||||
\
|
||||
static struct gpio vccq_sdhi##idx##_gpio = \
|
||||
{ vccq_pin, GPIOF_OUT_INIT_HIGH, "vccq-sdhi" #idx }; \
|
||||
\
|
||||
static struct gpio_regulator_state vccq_sdhi##idx##_states[] = { \
|
||||
{ .value = 1800000, .gpios = 0 }, \
|
||||
{ .value = 3300000, .gpios = 1 }, \
|
||||
}; \
|
||||
\
|
||||
static const struct gpio_regulator_config vccq_sdhi##idx##_info __initconst = {\
|
||||
.supply_name = "vqmmc", \
|
||||
.gpios = &vccq_sdhi##idx##_gpio, \
|
||||
.nr_gpios = 1, \
|
||||
.states = vccq_sdhi##idx##_states, \
|
||||
.nr_states = ARRAY_SIZE(vccq_sdhi##idx##_states), \
|
||||
.type = REGULATOR_VOLTAGE, \
|
||||
.init_data = &vccq_sdhi##idx##_init_data, \
|
||||
};
|
||||
|
||||
SDHI_REGULATOR(0, RCAR_GP_PIN(7, 17), RCAR_GP_PIN(2, 12));
|
||||
SDHI_REGULATOR(1, RCAR_GP_PIN(7, 18), RCAR_GP_PIN(2, 13));
|
||||
SDHI_REGULATOR(2, RCAR_GP_PIN(7, 19), RCAR_GP_PIN(2, 26));
|
||||
|
||||
/* SDHI0 */
|
||||
static struct sh_mobile_sdhi_info sdhi0_info __initdata = {
|
||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
||||
MMC_CAP_POWER_OFF_CARD,
|
||||
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
|
||||
};
|
||||
|
||||
static struct resource sdhi0_resources[] __initdata = {
|
||||
DEFINE_RES_MEM(0xee100000, 0x200),
|
||||
DEFINE_RES_IRQ(gic_spi(165)),
|
||||
};
|
||||
|
||||
/* SDHI1 */
|
||||
static struct sh_mobile_sdhi_info sdhi1_info __initdata = {
|
||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
||||
MMC_CAP_POWER_OFF_CARD,
|
||||
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
|
||||
};
|
||||
|
||||
static struct resource sdhi1_resources[] __initdata = {
|
||||
DEFINE_RES_MEM(0xee140000, 0x100),
|
||||
DEFINE_RES_IRQ(gic_spi(167)),
|
||||
};
|
||||
|
||||
/* SDHI2 */
|
||||
static struct sh_mobile_sdhi_info sdhi2_info __initdata = {
|
||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
||||
MMC_CAP_POWER_OFF_CARD,
|
||||
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
|
||||
TMIO_MMC_WRPROTECT_DISABLE,
|
||||
};
|
||||
|
||||
static struct resource sdhi2_resources[] __initdata = {
|
||||
DEFINE_RES_MEM(0xee160000, 0x100),
|
||||
DEFINE_RES_IRQ(gic_spi(168)),
|
||||
};
|
||||
|
||||
static const struct pinctrl_map koelsch_pinctrl_map[] = {
|
||||
/* DU */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791",
|
||||
"du_rgb666", "du"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791",
|
||||
"du_sync", "du"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791",
|
||||
"du_clk_out_0", "du"),
|
||||
/* Ether */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791",
|
||||
"eth_link", "eth"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791",
|
||||
"eth_mdio", "eth"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791",
|
||||
"eth_rmii", "eth"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791",
|
||||
"intc_irq0", "intc"),
|
||||
/* QSPI */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791",
|
||||
"qspi_ctrl", "qspi"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791",
|
||||
"qspi_data4", "qspi"),
|
||||
/* SCIF0 (CN19: DEBUG SERIAL0) */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7791",
|
||||
"scif0_data_d", "scif0"),
|
||||
/* SCIF1 (CN20: DEBUG SERIAL1) */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791",
|
||||
"scif1_data_d", "scif1"),
|
||||
/* I2C1 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.1", "pfc-r8a7791",
|
||||
"i2c1_e", "i2c1"),
|
||||
/* I2C2 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.2", "pfc-r8a7791",
|
||||
"i2c2", "i2c2"),
|
||||
/* I2C4 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.4", "pfc-r8a7791",
|
||||
"i2c4_c", "i2c4"),
|
||||
/* SDHI0 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
|
||||
"sdhi0_data4", "sdhi0"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
|
||||
"sdhi0_ctrl", "sdhi0"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
|
||||
"sdhi0_cd", "sdhi0"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
|
||||
"sdhi0_wp", "sdhi0"),
|
||||
/* SDHI2 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
|
||||
"sdhi1_data4", "sdhi1"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
|
||||
"sdhi1_ctrl", "sdhi1"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
|
||||
"sdhi1_cd", "sdhi1"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
|
||||
"sdhi1_wp", "sdhi1"),
|
||||
/* SDHI2 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
|
||||
"sdhi2_data4", "sdhi2"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
|
||||
"sdhi2_ctrl", "sdhi2"),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
|
||||
"sdhi2_cd", "sdhi2"),
|
||||
};
|
||||
|
||||
static void __init koelsch_add_standard_devices(void)
|
||||
{
|
||||
r8a7791_clock_init();
|
||||
pinctrl_register_mappings(koelsch_pinctrl_map,
|
||||
ARRAY_SIZE(koelsch_pinctrl_map));
|
||||
r8a7791_pinmux_init();
|
||||
r8a7791_add_standard_devices();
|
||||
platform_device_register_full(ðer_info);
|
||||
platform_device_register_data(NULL, "leds-gpio", -1,
|
||||
&koelsch_leds_pdata,
|
||||
sizeof(koelsch_leds_pdata));
|
||||
platform_device_register_data(NULL, "gpio-keys", -1,
|
||||
&koelsch_keys_pdata,
|
||||
sizeof(koelsch_keys_pdata));
|
||||
platform_device_register_resndata(NULL, "qspi", 0,
|
||||
qspi_resources,
|
||||
ARRAY_SIZE(qspi_resources),
|
||||
&qspi_pdata, sizeof(qspi_pdata));
|
||||
spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
|
||||
|
||||
koelsch_add_du_device();
|
||||
|
||||
platform_device_register_full(&sata0_info);
|
||||
|
||||
koelsch_add_i2c(1);
|
||||
koelsch_add_i2c(2);
|
||||
koelsch_add_i2c(4);
|
||||
koelsch_add_i2c(5);
|
||||
|
||||
platform_device_register_data(NULL, "reg-fixed-voltage", 0,
|
||||
&vcc_sdhi0_info, sizeof(struct fixed_voltage_config));
|
||||
platform_device_register_data(NULL, "reg-fixed-voltage", 1,
|
||||
&vcc_sdhi1_info, sizeof(struct fixed_voltage_config));
|
||||
platform_device_register_data(NULL, "reg-fixed-voltage", 2,
|
||||
&vcc_sdhi2_info, sizeof(struct fixed_voltage_config));
|
||||
platform_device_register_data(NULL, "gpio-regulator", 0,
|
||||
&vccq_sdhi0_info, sizeof(struct gpio_regulator_config));
|
||||
platform_device_register_data(NULL, "gpio-regulator", 1,
|
||||
&vccq_sdhi1_info, sizeof(struct gpio_regulator_config));
|
||||
platform_device_register_data(NULL, "gpio-regulator", 2,
|
||||
&vccq_sdhi2_info, sizeof(struct gpio_regulator_config));
|
||||
|
||||
platform_device_register_resndata(NULL, "sh_mobile_sdhi", 0,
|
||||
sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
|
||||
&sdhi0_info, sizeof(struct sh_mobile_sdhi_info));
|
||||
|
||||
platform_device_register_resndata(NULL, "sh_mobile_sdhi", 1,
|
||||
sdhi1_resources, ARRAY_SIZE(sdhi1_resources),
|
||||
&sdhi1_info, sizeof(struct sh_mobile_sdhi_info));
|
||||
|
||||
platform_device_register_resndata(NULL, "sh_mobile_sdhi", 2,
|
||||
sdhi2_resources, ARRAY_SIZE(sdhi2_resources),
|
||||
&sdhi2_info, sizeof(struct sh_mobile_sdhi_info));
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Ether LEDs on the Koelsch board are named LINK and ACTIVE which corresponds
|
||||
* to non-default 01 setting of the Micrel KSZ8041 PHY control register 1 bits
|
||||
* 14-15. We have to set them back to 01 from the default 00 value each time
|
||||
* the PHY is reset. It's also important because the PHY's LED0 signal is
|
||||
* connected to SoC's ETH_LINK signal and in the PHY's default mode it will
|
||||
* bounce on and off after each packet, which we apparently want to avoid.
|
||||
*/
|
||||
static int koelsch_ksz8041_fixup(struct phy_device *phydev)
|
||||
{
|
||||
u16 phyctrl1 = phy_read(phydev, 0x1e);
|
||||
|
||||
phyctrl1 &= ~0xc000;
|
||||
phyctrl1 |= 0x4000;
|
||||
return phy_write(phydev, 0x1e, phyctrl1);
|
||||
}
|
||||
|
||||
static void __init koelsch_init(void)
|
||||
{
|
||||
koelsch_add_standard_devices();
|
||||
|
||||
irq_set_irq_type(irq_pin(0), IRQ_TYPE_LEVEL_LOW);
|
||||
|
||||
if (IS_ENABLED(CONFIG_PHYLIB))
|
||||
phy_register_fixup_for_id("r8a7791-ether-ff:01",
|
||||
koelsch_ksz8041_fixup);
|
||||
}
|
||||
|
||||
static const char * const koelsch_boards_compat_dt[] __initconst = {
|
||||
"renesas,koelsch",
|
||||
NULL,
|
||||
};
|
||||
|
||||
DT_MACHINE_START(KOELSCH_DT, "koelsch")
|
||||
.smp = smp_ops(r8a7791_smp_ops),
|
||||
.init_early = shmobile_init_delay,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = koelsch_init,
|
||||
.init_late = shmobile_init_late,
|
||||
.reserve = rcar_gen2_reserve,
|
||||
.dt_compat = koelsch_boards_compat_dt,
|
||||
MACHINE_END
|
@ -14,10 +14,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
|
@ -12,100 +12,17 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7790.h"
|
||||
#include "rcar-gen2.h"
|
||||
|
||||
/* DU */
|
||||
static struct rcar_du_encoder_data lager_du_encoders[] = {
|
||||
{
|
||||
.type = RCAR_DU_ENCODER_VGA,
|
||||
.output = RCAR_DU_OUTPUT_DPAD0,
|
||||
}, {
|
||||
.type = RCAR_DU_ENCODER_NONE,
|
||||
.output = RCAR_DU_OUTPUT_LVDS1,
|
||||
.connector.lvds.panel = {
|
||||
.width_mm = 210,
|
||||
.height_mm = 158,
|
||||
.mode = {
|
||||
.pixelclock = 65000000,
|
||||
.hactive = 1024,
|
||||
.hfront_porch = 20,
|
||||
.hback_porch = 160,
|
||||
.hsync_len = 136,
|
||||
.vactive = 768,
|
||||
.vfront_porch = 3,
|
||||
.vback_porch = 29,
|
||||
.vsync_len = 6,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct rcar_du_platform_data lager_du_pdata = {
|
||||
.encoders = lager_du_encoders,
|
||||
.num_encoders = ARRAY_SIZE(lager_du_encoders),
|
||||
};
|
||||
|
||||
static const struct resource du_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xfeb00000, 0x70000),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
|
||||
DEFINE_RES_MEM_NAMED(0xfeb94000, 0x1c, "lvds.1"),
|
||||
DEFINE_RES_IRQ(gic_spi(256)),
|
||||
DEFINE_RES_IRQ(gic_spi(268)),
|
||||
DEFINE_RES_IRQ(gic_spi(269)),
|
||||
};
|
||||
|
||||
static void __init lager_add_du_device(void)
|
||||
{
|
||||
struct platform_device_info info = {
|
||||
.name = "rcar-du-r8a7790",
|
||||
.id = -1,
|
||||
.res = du_resources,
|
||||
.num_res = ARRAY_SIZE(du_resources),
|
||||
.data = &lager_du_pdata,
|
||||
.size_data = sizeof(lager_du_pdata),
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
platform_device_register_full(&info);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a really crude hack to provide clkdev support to platform
|
||||
* devices until they get moved to DT.
|
||||
*/
|
||||
static const struct clk_name clk_names[] __initconst = {
|
||||
{ "du0", "du.0", "rcar-du-r8a7790" },
|
||||
{ "du1", "du.1", "rcar-du-r8a7790" },
|
||||
{ "du2", "du.2", "rcar-du-r8a7790" },
|
||||
{ "lvds0", "lvds.0", "rcar-du-r8a7790" },
|
||||
{ "lvds1", "lvds.1", "rcar-du-r8a7790" },
|
||||
};
|
||||
|
||||
static void __init lager_add_standard_devices(void)
|
||||
{
|
||||
shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false);
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
|
||||
lager_add_du_device();
|
||||
}
|
||||
|
||||
static const char *lager_boards_compat_dt[] __initdata = {
|
||||
"renesas,lager",
|
||||
"renesas,lager-reference",
|
||||
@ -116,7 +33,6 @@ DT_MACHINE_START(LAGER_DT, "lager")
|
||||
.smp = smp_ops(r8a7790_smp_ops),
|
||||
.init_early = shmobile_init_delay,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = lager_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.reserve = rcar_gen2_reserve,
|
||||
.dt_compat = lager_boards_compat_dt,
|
||||
|
@ -13,10 +13,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/gpio.h>
|
||||
|
@ -16,10 +16,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/delay.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -13,10 +13,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/clk/shmobile.h>
|
||||
@ -26,7 +22,6 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "irqs.h"
|
||||
#include "r8a7779.h"
|
||||
|
@ -13,10 +13,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -17,10 +17,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
|
@ -1,342 +0,0 @@
|
||||
/*
|
||||
* r8a7791 clock framework support
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Electronics Corporation
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
* Copyright (C) 2013 Magnus Damm
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sh_clk.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
#include "rcar-gen2.h"
|
||||
|
||||
/*
|
||||
* MD EXTAL PLL0 PLL1 PLL3
|
||||
* 14 13 19 (MHz) *1 *1
|
||||
*---------------------------------------------------
|
||||
* 0 0 0 15 x 1 x172/2 x208/2 x106
|
||||
* 0 0 1 15 x 1 x172/2 x208/2 x88
|
||||
* 0 1 0 20 x 1 x130/2 x156/2 x80
|
||||
* 0 1 1 20 x 1 x130/2 x156/2 x66
|
||||
* 1 0 0 26 / 2 x200/2 x240/2 x122
|
||||
* 1 0 1 26 / 2 x200/2 x240/2 x102
|
||||
* 1 1 0 30 / 2 x172/2 x208/2 x106
|
||||
* 1 1 1 30 / 2 x172/2 x208/2 x88
|
||||
*
|
||||
* *1 : Table 7.6 indicates VCO ouput (PLLx = VCO/2)
|
||||
* see "p1 / 2" on R8A7791_CLOCK_ROOT() below
|
||||
*/
|
||||
|
||||
#define CPG_BASE 0xe6150000
|
||||
#define CPG_LEN 0x1000
|
||||
|
||||
#define SMSTPCR0 0xE6150130
|
||||
#define SMSTPCR1 0xE6150134
|
||||
#define SMSTPCR2 0xe6150138
|
||||
#define SMSTPCR3 0xE615013C
|
||||
#define SMSTPCR5 0xE6150144
|
||||
#define SMSTPCR7 0xe615014c
|
||||
#define SMSTPCR8 0xE6150990
|
||||
#define SMSTPCR9 0xE6150994
|
||||
#define SMSTPCR10 0xE6150998
|
||||
#define SMSTPCR11 0xE615099C
|
||||
|
||||
#define MSTPSR1 IOMEM(0xe6150038)
|
||||
#define MSTPSR2 IOMEM(0xe6150040)
|
||||
#define MSTPSR3 IOMEM(0xe6150048)
|
||||
#define MSTPSR5 IOMEM(0xe615003c)
|
||||
#define MSTPSR7 IOMEM(0xe61501c4)
|
||||
#define MSTPSR8 IOMEM(0xe61509a0)
|
||||
#define MSTPSR9 IOMEM(0xe61509a4)
|
||||
#define MSTPSR11 IOMEM(0xe61509ac)
|
||||
|
||||
#define SDCKCR 0xE6150074
|
||||
#define SD1CKCR 0xE6150078
|
||||
#define SD2CKCR 0xE615026c
|
||||
#define MMC0CKCR 0xE6150240
|
||||
#define MMC1CKCR 0xE6150244
|
||||
#define SSPCKCR 0xE6150248
|
||||
#define SSPRSCKCR 0xE615024C
|
||||
|
||||
static struct clk_mapping cpg_mapping = {
|
||||
.phys = CPG_BASE,
|
||||
.len = CPG_LEN,
|
||||
};
|
||||
|
||||
static struct clk extal_clk = {
|
||||
/* .rate will be updated on r8a7791_clock_init() */
|
||||
.mapping = &cpg_mapping,
|
||||
};
|
||||
|
||||
static struct sh_clk_ops followparent_clk_ops = {
|
||||
.recalc = followparent_recalc,
|
||||
};
|
||||
|
||||
static struct clk main_clk = {
|
||||
/* .parent will be set r8a73a4_clock_init */
|
||||
.ops = &followparent_clk_ops,
|
||||
};
|
||||
|
||||
/*
|
||||
* clock ratio of these clock will be updated
|
||||
* on r8a7791_clock_init()
|
||||
*/
|
||||
SH_FIXED_RATIO_CLK_SET(pll1_clk, main_clk, 1, 1);
|
||||
SH_FIXED_RATIO_CLK_SET(pll3_clk, main_clk, 1, 1);
|
||||
SH_FIXED_RATIO_CLK_SET(qspi_clk, pll1_clk, 1, 1);
|
||||
|
||||
/* fixed ratio clock */
|
||||
SH_FIXED_RATIO_CLK_SET(extal_div2_clk, extal_clk, 1, 2);
|
||||
SH_FIXED_RATIO_CLK_SET(cp_clk, extal_clk, 1, 2);
|
||||
|
||||
SH_FIXED_RATIO_CLK_SET(pll1_div2_clk, pll1_clk, 1, 2);
|
||||
SH_FIXED_RATIO_CLK_SET(hp_clk, pll1_clk, 1, 12);
|
||||
SH_FIXED_RATIO_CLK_SET(p_clk, pll1_clk, 1, 24);
|
||||
SH_FIXED_RATIO_CLK_SET(rclk_clk, pll1_clk, 1, (48 * 1024));
|
||||
SH_FIXED_RATIO_CLK_SET(mp_clk, pll1_div2_clk, 1, 15);
|
||||
SH_FIXED_RATIO_CLK_SET(zg_clk, pll1_clk, 1, 3);
|
||||
SH_FIXED_RATIO_CLK_SET(zx_clk, pll1_clk, 1, 3);
|
||||
SH_FIXED_RATIO_CLK_SET(zs_clk, pll1_clk, 1, 6);
|
||||
|
||||
static struct clk *main_clks[] = {
|
||||
&extal_clk,
|
||||
&extal_div2_clk,
|
||||
&main_clk,
|
||||
&pll1_clk,
|
||||
&pll1_div2_clk,
|
||||
&pll3_clk,
|
||||
&hp_clk,
|
||||
&p_clk,
|
||||
&qspi_clk,
|
||||
&rclk_clk,
|
||||
&mp_clk,
|
||||
&cp_clk,
|
||||
&zg_clk,
|
||||
&zx_clk,
|
||||
&zs_clk,
|
||||
};
|
||||
|
||||
/* SDHI (DIV4) clock */
|
||||
static int divisors[] = { 2, 3, 4, 6, 8, 12, 16, 18, 24, 0, 36, 48, 10 };
|
||||
|
||||
static struct clk_div_mult_table div4_div_mult_table = {
|
||||
.divisors = divisors,
|
||||
.nr_divisors = ARRAY_SIZE(divisors),
|
||||
};
|
||||
|
||||
static struct clk_div4_table div4_table = {
|
||||
.div_mult_table = &div4_div_mult_table,
|
||||
};
|
||||
|
||||
enum {
|
||||
DIV4_SDH, DIV4_SD0,
|
||||
DIV4_NR
|
||||
};
|
||||
|
||||
static struct clk div4_clks[DIV4_NR] = {
|
||||
[DIV4_SDH] = SH_CLK_DIV4(&pll1_clk, SDCKCR, 8, 0x0dff, CLK_ENABLE_ON_INIT),
|
||||
[DIV4_SD0] = SH_CLK_DIV4(&pll1_clk, SDCKCR, 4, 0x1df0, CLK_ENABLE_ON_INIT),
|
||||
};
|
||||
|
||||
/* DIV6 clocks */
|
||||
enum {
|
||||
DIV6_SD1, DIV6_SD2,
|
||||
DIV6_NR
|
||||
};
|
||||
|
||||
static struct clk div6_clks[DIV6_NR] = {
|
||||
[DIV6_SD1] = SH_CLK_DIV6(&pll1_div2_clk, SD1CKCR, 0),
|
||||
[DIV6_SD2] = SH_CLK_DIV6(&pll1_div2_clk, SD2CKCR, 0),
|
||||
};
|
||||
|
||||
/* MSTP */
|
||||
enum {
|
||||
MSTP1108, MSTP1107, MSTP1106,
|
||||
MSTP931, MSTP930, MSTP929, MSTP928, MSTP927, MSTP925,
|
||||
MSTP917,
|
||||
MSTP815, MSTP814,
|
||||
MSTP813,
|
||||
MSTP811, MSTP810, MSTP809,
|
||||
MSTP726, MSTP724, MSTP723, MSTP721, MSTP720,
|
||||
MSTP719, MSTP718, MSTP715, MSTP714,
|
||||
MSTP522,
|
||||
MSTP314, MSTP312, MSTP311,
|
||||
MSTP216, MSTP207, MSTP206,
|
||||
MSTP204, MSTP203, MSTP202,
|
||||
MSTP124,
|
||||
MSTP_NR
|
||||
};
|
||||
|
||||
static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP1108] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 8, MSTPSR11, 0), /* SCIFA5 */
|
||||
[MSTP1107] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 7, MSTPSR11, 0), /* SCIFA4 */
|
||||
[MSTP1106] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 6, MSTPSR11, 0), /* SCIFA3 */
|
||||
[MSTP931] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 31, MSTPSR9, 0), /* I2C0 */
|
||||
[MSTP930] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 30, MSTPSR9, 0), /* I2C1 */
|
||||
[MSTP929] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 29, MSTPSR9, 0), /* I2C2 */
|
||||
[MSTP928] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 28, MSTPSR9, 0), /* I2C3 */
|
||||
[MSTP927] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 27, MSTPSR9, 0), /* I2C4 */
|
||||
[MSTP925] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 25, MSTPSR9, 0), /* I2C5 */
|
||||
[MSTP917] = SH_CLK_MSTP32_STS(&qspi_clk, SMSTPCR9, 17, MSTPSR9, 0), /* QSPI */
|
||||
[MSTP815] = SH_CLK_MSTP32_STS(&zs_clk, SMSTPCR8, 15, MSTPSR8, 0), /* SATA0 */
|
||||
[MSTP814] = SH_CLK_MSTP32_STS(&zs_clk, SMSTPCR8, 14, MSTPSR8, 0), /* SATA1 */
|
||||
[MSTP813] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR8, 13, MSTPSR8, 0), /* Ether */
|
||||
[MSTP811] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 11, MSTPSR8, 0), /* VIN0 */
|
||||
[MSTP810] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 10, MSTPSR8, 0), /* VIN1 */
|
||||
[MSTP809] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 9, MSTPSR8, 0), /* VIN2 */
|
||||
[MSTP726] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 26, MSTPSR7, 0), /* LVDS0 */
|
||||
[MSTP724] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 24, MSTPSR7, 0), /* DU0 */
|
||||
[MSTP723] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 23, MSTPSR7, 0), /* DU1 */
|
||||
[MSTP721] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 21, MSTPSR7, 0), /* SCIF0 */
|
||||
[MSTP720] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 20, MSTPSR7, 0), /* SCIF1 */
|
||||
[MSTP719] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 19, MSTPSR7, 0), /* SCIF2 */
|
||||
[MSTP718] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 18, MSTPSR7, 0), /* SCIF3 */
|
||||
[MSTP715] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 15, MSTPSR7, 0), /* SCIF4 */
|
||||
[MSTP714] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 14, MSTPSR7, 0), /* SCIF5 */
|
||||
[MSTP522] = SH_CLK_MSTP32_STS(&extal_clk, SMSTPCR5, 22, MSTPSR5, 0), /* Thermal */
|
||||
[MSTP314] = SH_CLK_MSTP32_STS(&div4_clks[DIV4_SD0], SMSTPCR3, 14, MSTPSR3, 0), /* SDHI0 */
|
||||
[MSTP312] = SH_CLK_MSTP32_STS(&div6_clks[DIV6_SD1], SMSTPCR3, 12, MSTPSR3, 0), /* SDHI1 */
|
||||
[MSTP311] = SH_CLK_MSTP32_STS(&div6_clks[DIV6_SD2], SMSTPCR3, 11, MSTPSR3, 0), /* SDHI2 */
|
||||
[MSTP216] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 16, MSTPSR2, 0), /* SCIFB2 */
|
||||
[MSTP207] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 7, MSTPSR2, 0), /* SCIFB1 */
|
||||
[MSTP206] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 6, MSTPSR2, 0), /* SCIFB0 */
|
||||
[MSTP204] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 4, MSTPSR2, 0), /* SCIFA0 */
|
||||
[MSTP203] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 3, MSTPSR2, 0), /* SCIFA1 */
|
||||
[MSTP202] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 2, MSTPSR2, 0), /* SCIFA2 */
|
||||
[MSTP124] = SH_CLK_MSTP32_STS(&rclk_clk, SMSTPCR1, 24, MSTPSR1, 0), /* CMT0 */
|
||||
};
|
||||
|
||||
static struct clk_lookup lookups[] = {
|
||||
|
||||
/* main clocks */
|
||||
CLKDEV_CON_ID("extal", &extal_clk),
|
||||
CLKDEV_CON_ID("extal_div2", &extal_div2_clk),
|
||||
CLKDEV_CON_ID("main", &main_clk),
|
||||
CLKDEV_CON_ID("pll1", &pll1_clk),
|
||||
CLKDEV_CON_ID("pll1_div2", &pll1_div2_clk),
|
||||
CLKDEV_CON_ID("pll3", &pll3_clk),
|
||||
CLKDEV_CON_ID("zg", &zg_clk),
|
||||
CLKDEV_CON_ID("zs", &zs_clk),
|
||||
CLKDEV_CON_ID("hp", &hp_clk),
|
||||
CLKDEV_CON_ID("p", &p_clk),
|
||||
CLKDEV_CON_ID("qspi", &qspi_clk),
|
||||
CLKDEV_CON_ID("rclk", &rclk_clk),
|
||||
CLKDEV_CON_ID("mp", &mp_clk),
|
||||
CLKDEV_CON_ID("cp", &cp_clk),
|
||||
CLKDEV_CON_ID("peripheral_clk", &hp_clk),
|
||||
|
||||
/* MSTP */
|
||||
CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7791", &mstp_clks[MSTP726]),
|
||||
CLKDEV_ICK_ID("du.0", "rcar-du-r8a7791", &mstp_clks[MSTP724]),
|
||||
CLKDEV_ICK_ID("du.1", "rcar-du-r8a7791", &mstp_clks[MSTP723]),
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]), /* SCIFB0 */
|
||||
CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP207]), /* SCIFB1 */
|
||||
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP216]), /* SCIFB2 */
|
||||
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP202]), /* SCIFA2 */
|
||||
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP721]), /* SCIF0 */
|
||||
CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP720]), /* SCIF1 */
|
||||
CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP719]), /* SCIF2 */
|
||||
CLKDEV_DEV_ID("sh-sci.9", &mstp_clks[MSTP718]), /* SCIF3 */
|
||||
CLKDEV_DEV_ID("sh-sci.10", &mstp_clks[MSTP715]), /* SCIF4 */
|
||||
CLKDEV_DEV_ID("sh-sci.11", &mstp_clks[MSTP714]), /* SCIF5 */
|
||||
CLKDEV_DEV_ID("sh-sci.12", &mstp_clks[MSTP1106]), /* SCIFA3 */
|
||||
CLKDEV_DEV_ID("sh-sci.13", &mstp_clks[MSTP1107]), /* SCIFA4 */
|
||||
CLKDEV_DEV_ID("sh-sci.14", &mstp_clks[MSTP1108]), /* SCIFA5 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]),
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP312]),
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]),
|
||||
CLKDEV_ICK_ID("fck", "sh-cmt-48-gen2.0", &mstp_clks[MSTP124]),
|
||||
CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]),
|
||||
CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.0", &mstp_clks[MSTP931]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.1", &mstp_clks[MSTP930]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.2", &mstp_clks[MSTP929]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.3", &mstp_clks[MSTP928]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.4", &mstp_clks[MSTP927]),
|
||||
CLKDEV_DEV_ID("i2c-rcar_gen2.5", &mstp_clks[MSTP925]),
|
||||
CLKDEV_DEV_ID("r8a7791-ether", &mstp_clks[MSTP813]), /* Ether */
|
||||
CLKDEV_DEV_ID("r8a7791-vin.0", &mstp_clks[MSTP811]),
|
||||
CLKDEV_DEV_ID("r8a7791-vin.1", &mstp_clks[MSTP810]),
|
||||
CLKDEV_DEV_ID("r8a7791-vin.2", &mstp_clks[MSTP809]),
|
||||
CLKDEV_DEV_ID("sata-r8a7791.0", &mstp_clks[MSTP815]),
|
||||
CLKDEV_DEV_ID("sata-r8a7791.1", &mstp_clks[MSTP814]),
|
||||
};
|
||||
|
||||
#define R8A7791_CLOCK_ROOT(e, m, p0, p1, p30, p31) \
|
||||
extal_clk.rate = e * 1000 * 1000; \
|
||||
main_clk.parent = m; \
|
||||
SH_CLK_SET_RATIO(&pll1_clk_ratio, p1 / 2, 1); \
|
||||
if (mode & MD(19)) \
|
||||
SH_CLK_SET_RATIO(&pll3_clk_ratio, p31, 1); \
|
||||
else \
|
||||
SH_CLK_SET_RATIO(&pll3_clk_ratio, p30, 1)
|
||||
|
||||
|
||||
void __init r8a7791_clock_init(void)
|
||||
{
|
||||
u32 mode = rcar_gen2_read_mode_pins();
|
||||
int k, ret = 0;
|
||||
|
||||
switch (mode & (MD(14) | MD(13))) {
|
||||
case 0:
|
||||
R8A7791_CLOCK_ROOT(15, &extal_clk, 172, 208, 106, 88);
|
||||
break;
|
||||
case MD(13):
|
||||
R8A7791_CLOCK_ROOT(20, &extal_clk, 130, 156, 80, 66);
|
||||
break;
|
||||
case MD(14):
|
||||
R8A7791_CLOCK_ROOT(26, &extal_div2_clk, 200, 240, 122, 102);
|
||||
break;
|
||||
case MD(13) | MD(14):
|
||||
R8A7791_CLOCK_ROOT(30, &extal_div2_clk, 172, 208, 106, 88);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((mode & (MD(3) | MD(2) | MD(1))) == MD(2))
|
||||
SH_CLK_SET_RATIO(&qspi_clk_ratio, 1, 16);
|
||||
else
|
||||
SH_CLK_SET_RATIO(&qspi_clk_ratio, 1, 20);
|
||||
|
||||
for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++)
|
||||
ret = clk_register(main_clks[k]);
|
||||
|
||||
if (!ret)
|
||||
ret = sh_clk_div4_register(div4_clks, DIV4_NR, &div4_table);
|
||||
|
||||
if (!ret)
|
||||
ret = sh_clk_div6_register(div6_clks, DIV6_NR);
|
||||
|
||||
if (!ret)
|
||||
ret = sh_clk_mstp_register(mstp_clks, MSTP_NR);
|
||||
|
||||
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
|
||||
|
||||
if (!ret)
|
||||
shmobile_clk_init();
|
||||
else
|
||||
goto epanic;
|
||||
|
||||
return;
|
||||
|
||||
epanic:
|
||||
panic("failed to setup r8a7791 clocks\n");
|
||||
}
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -14,41 +14,13 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/export.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include "clock.h"
|
||||
|
||||
void __init shmobile_clk_workaround(const struct clk_name *clks,
|
||||
int nr_clks, bool enable)
|
||||
{
|
||||
const struct clk_name *clkn;
|
||||
struct clk *clk;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < nr_clks; ++i) {
|
||||
clkn = clks + i;
|
||||
clk = clk_get(NULL, clkn->clk);
|
||||
if (!IS_ERR(clk)) {
|
||||
clk_register_clkdev(clk, clkn->con_id, clkn->dev_id);
|
||||
if (enable)
|
||||
clk_prepare_enable(clk);
|
||||
clk_put(clk);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else /* CONFIG_COMMON_CLK */
|
||||
#include <linux/sh_clk.h>
|
||||
#include <linux/export.h>
|
||||
|
||||
#include "clock.h"
|
||||
#include "common.h"
|
||||
|
||||
@ -84,5 +56,3 @@ void __clk_put(struct clk *clk)
|
||||
{
|
||||
}
|
||||
EXPORT_SYMBOL(__clk_put);
|
||||
|
||||
#endif /* CONFIG_COMMON_CLK */
|
||||
|
@ -1,19 +1,6 @@
|
||||
#ifndef CLOCK_H
|
||||
#define CLOCK_H
|
||||
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
/* temporary clock configuration helper for platform devices */
|
||||
|
||||
struct clk_name {
|
||||
const char *clk;
|
||||
const char *con_id;
|
||||
const char *dev_id;
|
||||
};
|
||||
|
||||
void shmobile_clk_workaround(const struct clk_name *clks, int nr_clks,
|
||||
bool enable);
|
||||
|
||||
#else /* CONFIG_COMMON_CLK */
|
||||
/* legacy clock implementation */
|
||||
|
||||
struct clk;
|
||||
@ -52,5 +39,4 @@ do { \
|
||||
(p)->div = d; \
|
||||
} while (0)
|
||||
|
||||
#endif /* CONFIG_COMMON_CLK */
|
||||
#endif
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -12,11 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -10,10 +10,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef __ASM_R8A7740_H__
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef __ASM_R8A7778_H__
|
||||
#define __ASM_R8A7778_H__
|
||||
@ -71,7 +67,6 @@ extern void r8a7778_add_standard_devices_dt(void);
|
||||
extern void r8a7778_add_dt_devices(void);
|
||||
|
||||
extern void r8a7778_init_late(void);
|
||||
extern void r8a7778_init_delay(void);
|
||||
extern void r8a7778_init_irq_dt(void);
|
||||
extern void r8a7778_clock_init(void);
|
||||
extern void r8a7778_init_irq_extpin(int irlm);
|
||||
|
@ -1,9 +1,6 @@
|
||||
#ifndef __ASM_R8A7791_H__
|
||||
#define __ASM_R8A7791_H__
|
||||
|
||||
void r8a7791_add_standard_devices(void);
|
||||
void r8a7791_clock_init(void);
|
||||
void r8a7791_pinmux_init(void);
|
||||
void r8a7791_pm_init(void);
|
||||
extern struct smp_operations r8a7791_smp_ops;
|
||||
|
||||
|
@ -11,10 +11,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
@ -12,10 +12,6 @@
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user