You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform updates (part 2) from Arnd Bergmann: "These patches are all for Renesas shmobile, and depend on the earlier pinctrl updates. Remarkably, this adds support for three new SoCs: r8a73a4, r8a73a4 and r8a7778. The bulk of the code added for these is for pinctrl (using the new subsystem) and for clocks (not yet using the common clock subsystem). The latter will have to get converted in one of the upcoming releases, but shmobile is not ready for that yet. The series also contains Renesas shmobile board changes, adding one board file for each of the three new SoCs. These boards are using a mix of classic and device-tree based probing, as there is still a lot of infrastructure in shmobile that has not been converted to DT yet. Once those are resolved to the degree that no board specific setup code is needed, they can get folded into the respective SoC setup files." * tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (78 commits) ARM: shmobile: use r8a7790 timer setup code on Lager ARM: shmobile: force enable of r8a7790 arch timer ARM: shmobile: Add second I/O range for r8a7790 PFC ARM: shmobile: bockw: enable network settings on bootargs ARM: shmobile: bockw: add SMSC ethernet support ARM: shmobile: R8A7778: add Ether support ARM: shmobile: bockw: enable SMSC ethernet on defconfig ARM: shmobile: r8a7778: add r8a7778_init_irq_extpin() ARM: shmobile: r8a7778: remove pointless PLATFORM_INFO() ARM: shmobile: mackerel: clean up MMCIF vs. SDHI1 selection ARM: shmobile: mackerel: add interrupt names for SDHI0 ARM: shmobile: mackerel: switch SDHI and MMCIF interfaces to slot-gpio ARM: shmobile: mackerel: remove OCR masks, where regulators are used ARM: shmobile: mackerel: SDHI resources do not have to be numbered ARM: shmobile: Initial r8a7790 Lager board support ARM: shmobile: APE6EVM LAN9220 support ARM: shmobile: APE6EVM PFC support ARM: shmobile: APE6EVM base support ARM: shmobile: kzm9g-reference: add ethernet support ARM: shmobile: add R-Car M1A Bock-W platform support ...
This commit is contained in:
+1
-1
@@ -643,7 +643,7 @@ config ARCH_SHMOBILE
|
|||||||
select MULTI_IRQ_HANDLER
|
select MULTI_IRQ_HANDLER
|
||||||
select NEED_MACH_MEMORY_H
|
select NEED_MACH_MEMORY_H
|
||||||
select NO_IOPORT
|
select NO_IOPORT
|
||||||
select PINCTRL
|
select PINCTRL if ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
select PM_GENERIC_DOMAINS if PM
|
select PM_GENERIC_DOMAINS if PM
|
||||||
select SPARSE_IRQ
|
select SPARSE_IRQ
|
||||||
help
|
help
|
||||||
|
|||||||
@@ -155,9 +155,12 @@ dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \
|
|||||||
ccu9540.dtb
|
ccu9540.dtb
|
||||||
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
|
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
|
||||||
r8a7740-armadillo800eva.dtb \
|
r8a7740-armadillo800eva.dtb \
|
||||||
|
r8a7778-bockw.dtb \
|
||||||
r8a7779-marzen-reference.dtb \
|
r8a7779-marzen-reference.dtb \
|
||||||
|
r8a7790-lager.dtb \
|
||||||
sh73a0-kzm9g.dtb \
|
sh73a0-kzm9g.dtb \
|
||||||
sh73a0-kzm9g-reference.dtb \
|
sh73a0-kzm9g-reference.dtb \
|
||||||
|
r8a73a4-ape6evm.dtb \
|
||||||
sh7372-mackerel.dtb
|
sh7372-mackerel.dtb
|
||||||
dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_cyclone5.dtb \
|
dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_cyclone5.dtb \
|
||||||
socfpga_vt.dtb
|
socfpga_vt.dtb
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree Source for the APE6EVM board
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
/include/ "r8a73a4.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "APE6EVM";
|
||||||
|
compatible = "renesas,ape6evm", "renesas,r8a73a4";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp";
|
||||||
|
};
|
||||||
|
|
||||||
|
memory@40000000 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0 0x40000000 0 0x40000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ape6evm_fixed_3v3: fixedregulator@0 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "3V3";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
lbsc {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
ethernet@8000000 {
|
||||||
|
compatible = "smsc,lan9118", "smsc,lan9115";
|
||||||
|
reg = <0x08000000 0x1000>;
|
||||||
|
interrupt-parent = <&irqc1>;
|
||||||
|
interrupts = <8 0x4>;
|
||||||
|
phy-mode = "mii";
|
||||||
|
reg-io-width = <4>;
|
||||||
|
smsc,irq-active-high;
|
||||||
|
smsc,irq-push-pull;
|
||||||
|
vdd33a-supply = <&ape6evm_fixed_3v3>;
|
||||||
|
vddvario-supply = <&ape6evm_fixed_3v3>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree Source for the r8a73a4 SoC
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Magnus Damm
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "renesas,r8a73a4";
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cpu0: cpu@0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0>;
|
||||||
|
clock-frequency = <1500000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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 0xf04>;
|
||||||
|
|
||||||
|
gic-cpuif@4 {
|
||||||
|
compatible = "arm,gic-cpuif";
|
||||||
|
cpuif-id = <4>;
|
||||||
|
cpu = <&cpu0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
timer {
|
||||||
|
compatible = "arm,armv7-timer";
|
||||||
|
interrupts = <1 13 0xf08>,
|
||||||
|
<1 14 0xf08>,
|
||||||
|
<1 11 0xf08>,
|
||||||
|
<1 10 0xf08>;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqc0: interrupt-controller@e61c0000 {
|
||||||
|
compatible = "renesas,irqc";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0 0xe61c0000 0 0x200>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>,
|
||||||
|
<0 4 4>, <0 5 4>, <0 6 4>, <0 7 4>,
|
||||||
|
<0 8 4>, <0 9 4>, <0 10 4>, <0 11 4>,
|
||||||
|
<0 12 4>, <0 13 4>, <0 14 4>, <0 15 4>,
|
||||||
|
<0 16 4>, <0 17 4>, <0 18 4>, <0 19 4>,
|
||||||
|
<0 20 4>, <0 21 4>, <0 22 4>, <0 23 4>,
|
||||||
|
<0 24 4>, <0 25 4>, <0 26 4>, <0 27 4>,
|
||||||
|
<0 28 4>, <0 29 4>, <0 30 4>, <0 31 4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqc1: interrupt-controller@e61c0200 {
|
||||||
|
compatible = "renesas,irqc";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0 0xe61c0200 0 0x200>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 32 4>, <0 33 4>, <0 34 4>, <0 35 4>,
|
||||||
|
<0 36 4>, <0 37 4>, <0 38 4>, <0 39 4>,
|
||||||
|
<0 40 4>, <0 41 4>, <0 42 4>, <0 43 4>,
|
||||||
|
<0 44 4>, <0 45 4>, <0 46 4>, <0 47 4>,
|
||||||
|
<0 48 4>, <0 49 4>, <0 50 4>, <0 51 4>,
|
||||||
|
<0 52 4>, <0 53 4>, <0 54 4>, <0 55 4>,
|
||||||
|
<0 56 4>, <0 57 4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal@e61f0000 {
|
||||||
|
compatible = "renesas,rcar-thermal";
|
||||||
|
reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>,
|
||||||
|
<0 0xe61f0200 0 0x38>, <0 0xe61f0300 0 0x38>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 69 4>;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Reference Device Tree Source for the Bock-W board
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||||
|
*
|
||||||
|
* based on r8a7779
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Simon Horman
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
/include/ "r8a7778.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "bockw";
|
||||||
|
compatible = "renesas,bockw", "renesas,r8a7778";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs = "console=ttySC0,115200 ignore_loglevel ip=dhcp root=/dev/nfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x60000000 0x10000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree Source for Renesas r8a7778
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||||
|
*
|
||||||
|
* based on r8a7779
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Simon Horman
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/include/ "skeleton.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "renesas,r8a7778";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
compatible = "arm,cortex-a9";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gic: interrupt-controller@fe438000 {
|
||||||
|
compatible = "arm,cortex-a9-gic";
|
||||||
|
#interrupt-cells = <3>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0xfe438000 0x1000>,
|
||||||
|
<0xfe430000 0x100>;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree Source for the Lager board
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
/include/ "r8a7790.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Lager";
|
||||||
|
compatible = "renesas,lager", "renesas,r8a7790";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs = "console=ttySC6,115200 ignore_loglevel";
|
||||||
|
};
|
||||||
|
|
||||||
|
memory@40000000 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0 0x40000000 0 0x80000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lbsc {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Device Tree Source for the r8a7790 SoC
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "renesas,r8a7790";
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cpu0: cpu@0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0>;
|
||||||
|
clock-frequency = <1300000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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 0xf04>;
|
||||||
|
|
||||||
|
gic-cpuif@4 {
|
||||||
|
compatible = "arm,gic-cpuif";
|
||||||
|
cpuif-id = <4>;
|
||||||
|
cpu = <&cpu0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
timer {
|
||||||
|
compatible = "arm,armv7-timer";
|
||||||
|
interrupts = <1 13 0xf08>,
|
||||||
|
<1 14 0xf08>,
|
||||||
|
<1 11 0xf08>,
|
||||||
|
<1 10 0xf08>;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqc0: interrupt-controller@e61c0000 {
|
||||||
|
compatible = "renesas,irqc";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0 0xe61c0000 0 0x200>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>;
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -44,6 +44,19 @@
|
|||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lan9220@10000000 {
|
||||||
|
compatible = "smsc,lan9220", "smsc,lan9115";
|
||||||
|
reg = <0x10000000 0x100>;
|
||||||
|
phy-mode = "mii";
|
||||||
|
interrupt-parent = <&irqpin0>;
|
||||||
|
interrupts = <3 0>; /* active low */
|
||||||
|
reg-io-width = <4>;
|
||||||
|
smsc,irq-push-pull;
|
||||||
|
smsc,save-mac-address;
|
||||||
|
vddvario-supply = <®_1p8v>;
|
||||||
|
vdd33a-supply = <®_3p3v>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmcif {
|
&mmcif {
|
||||||
|
|||||||
@@ -38,6 +38,87 @@
|
|||||||
<0xf0000100 0x100>;
|
<0xf0000100 0x100>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
irqpin0: irqpin@e6900000 {
|
||||||
|
compatible = "renesas,intc-irqpin";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0xe6900000 4>,
|
||||||
|
<0xe6900010 4>,
|
||||||
|
<0xe6900020 1>,
|
||||||
|
<0xe6900040 1>,
|
||||||
|
<0xe6900060 1>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 1 0x4
|
||||||
|
0 2 0x4
|
||||||
|
0 3 0x4
|
||||||
|
0 4 0x4
|
||||||
|
0 5 0x4
|
||||||
|
0 6 0x4
|
||||||
|
0 7 0x4
|
||||||
|
0 8 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqpin1: irqpin@e6900004 {
|
||||||
|
compatible = "renesas,intc-irqpin";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0xe6900004 4>,
|
||||||
|
<0xe6900014 4>,
|
||||||
|
<0xe6900024 1>,
|
||||||
|
<0xe6900044 1>,
|
||||||
|
<0xe6900064 1>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 9 0x4
|
||||||
|
0 10 0x4
|
||||||
|
0 11 0x4
|
||||||
|
0 12 0x4
|
||||||
|
0 13 0x4
|
||||||
|
0 14 0x4
|
||||||
|
0 15 0x4
|
||||||
|
0 16 0x4>;
|
||||||
|
control-parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqpin2: irqpin@e6900008 {
|
||||||
|
compatible = "renesas,intc-irqpin";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0xe6900008 4>,
|
||||||
|
<0xe6900018 4>,
|
||||||
|
<0xe6900028 1>,
|
||||||
|
<0xe6900048 1>,
|
||||||
|
<0xe6900068 1>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 17 0x4
|
||||||
|
0 18 0x4
|
||||||
|
0 19 0x4
|
||||||
|
0 20 0x4
|
||||||
|
0 21 0x4
|
||||||
|
0 22 0x4
|
||||||
|
0 23 0x4
|
||||||
|
0 24 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
irqpin3: irqpin@e690000c {
|
||||||
|
compatible = "renesas,intc-irqpin";
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
reg = <0xe690000c 4>,
|
||||||
|
<0xe690001c 4>,
|
||||||
|
<0xe690002c 1>,
|
||||||
|
<0xe690004c 1>,
|
||||||
|
<0xe690006c 1>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 25 0x4
|
||||||
|
0 26 0x4
|
||||||
|
0 27 0x4
|
||||||
|
0 28 0x4
|
||||||
|
0 29 0x4
|
||||||
|
0 30 0x4
|
||||||
|
0 31 0x4
|
||||||
|
0 32 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
i2c0: i2c@0xe6820000 {
|
i2c0: i2c@0xe6820000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
||||||
|
CONFIG_KERNEL_LZMA=y
|
||||||
|
CONFIG_NO_HZ=y
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=16
|
||||||
|
CONFIG_SYSCTL_SYSCALL=y
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
CONFIG_SLAB=y
|
||||||
|
# CONFIG_IOSCHED_CFQ is not set
|
||||||
|
CONFIG_ARCH_SHMOBILE=y
|
||||||
|
CONFIG_ARCH_R8A7778=y
|
||||||
|
CONFIG_MACH_BOCKW=y
|
||||||
|
CONFIG_MEMORY_START=0x60000000
|
||||||
|
CONFIG_MEMORY_SIZE=0x10000000
|
||||||
|
CONFIG_SHMOBILE_TIMER_HZ=1024
|
||||||
|
# CONFIG_SH_TIMER_CMT is not set
|
||||||
|
# CONFIG_EM_TIMER_STI is not set
|
||||||
|
CONFIG_ARM_ERRATA_430973=y
|
||||||
|
CONFIG_ARM_ERRATA_458693=y
|
||||||
|
CONFIG_ARM_ERRATA_460075=y
|
||||||
|
CONFIG_ARM_ERRATA_743622=y
|
||||||
|
CONFIG_ARM_ERRATA_754322=y
|
||||||
|
CONFIG_AEABI=y
|
||||||
|
# CONFIG_OABI_COMPAT is not set
|
||||||
|
CONFIG_HIGHMEM=y
|
||||||
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
|
CONFIG_ARM_APPENDED_DTB=y
|
||||||
|
CONFIG_CMDLINE="console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp"
|
||||||
|
CONFIG_CMDLINE_FORCE=y
|
||||||
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
|
# CONFIG_SUSPEND is not set
|
||||||
|
CONFIG_NET=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
|
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||||
|
# CONFIG_INET_LRO is not set
|
||||||
|
# CONFIG_INET_DIAG is not set
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
|
# CONFIG_STANDALONE is not set
|
||||||
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
|
# CONFIG_FW_LOADER is not set
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
# 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_NET_VENDOR_SEEQ is not set
|
||||||
|
CONFIG_SMSC911X=y
|
||||||
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
|
# CONFIG_INPUT is not set
|
||||||
|
# CONFIG_SERIO is not set
|
||||||
|
# CONFIG_VT is not set
|
||||||
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
# CONFIG_DEVKMEM is not set
|
||||||
|
CONFIG_SERIAL_SH_SCI=y
|
||||||
|
CONFIG_SERIAL_SH_SCI_NR_UARTS=6
|
||||||
|
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
|
# CONFIG_HWMON is not set
|
||||||
|
# CONFIG_USB_SUPPORT is not set
|
||||||
|
CONFIG_UIO=y
|
||||||
|
CONFIG_UIO_PDRV_GENIRQ=y
|
||||||
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
# CONFIG_DNOTIFY is not set
|
||||||
|
# CONFIG_INOTIFY_USER is not set
|
||||||
|
CONFIG_TMPFS=y
|
||||||
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
|
CONFIG_NFS_V4=y
|
||||||
|
CONFIG_NFS_SWAP=y
|
||||||
|
CONFIG_NFS_V4_1=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||||
|
# CONFIG_FTRACE is not set
|
||||||
|
# CONFIG_ARM_UNWIND is not set
|
||||||
|
CONFIG_AVERAGE=y
|
||||||
@@ -18,11 +18,28 @@ config ARCH_SH73A0
|
|||||||
select SH_CLK_CPG
|
select SH_CLK_CPG
|
||||||
select RENESAS_INTC_IRQPIN
|
select RENESAS_INTC_IRQPIN
|
||||||
|
|
||||||
|
config ARCH_R8A73A4
|
||||||
|
bool "R-Mobile APE6 (R8A73A40)"
|
||||||
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
|
select ARM_GIC
|
||||||
|
select CPU_V7
|
||||||
|
select ARM_ARCH_TIMER
|
||||||
|
select SH_CLK_CPG
|
||||||
|
select RENESAS_IRQC
|
||||||
|
|
||||||
config ARCH_R8A7740
|
config ARCH_R8A7740
|
||||||
bool "R-Mobile A1 (R8A77400)"
|
bool "R-Mobile A1 (R8A77400)"
|
||||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
|
select ARM_GIC
|
||||||
select CPU_V7
|
select CPU_V7
|
||||||
select SH_CLK_CPG
|
select SH_CLK_CPG
|
||||||
|
select RENESAS_INTC_IRQPIN
|
||||||
|
|
||||||
|
config ARCH_R8A7778
|
||||||
|
bool "R-Car M1 (R8A77780)"
|
||||||
|
select CPU_V7
|
||||||
|
select SH_CLK_CPG
|
||||||
|
select ARM_GIC
|
||||||
|
|
||||||
config ARCH_R8A7779
|
config ARCH_R8A7779
|
||||||
bool "R-Car H1 (R8A77790)"
|
bool "R-Car H1 (R8A77790)"
|
||||||
@@ -34,6 +51,15 @@ config ARCH_R8A7779
|
|||||||
select USB_ARCH_HAS_OHCI
|
select USB_ARCH_HAS_OHCI
|
||||||
select RENESAS_INTC_IRQPIN
|
select RENESAS_INTC_IRQPIN
|
||||||
|
|
||||||
|
config ARCH_R8A7790
|
||||||
|
bool "R-Car H2 (R8A77900)"
|
||||||
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
|
select ARM_GIC
|
||||||
|
select CPU_V7
|
||||||
|
select ARM_ARCH_TIMER
|
||||||
|
select SH_CLK_CPG
|
||||||
|
select RENESAS_IRQC
|
||||||
|
|
||||||
config ARCH_EMEV2
|
config ARCH_EMEV2
|
||||||
bool "Emma Mobile EV2"
|
bool "Emma Mobile EV2"
|
||||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
@@ -70,6 +96,11 @@ config MACH_AG5EVM
|
|||||||
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
select SH_LCD_MIPI_DSI
|
select SH_LCD_MIPI_DSI
|
||||||
|
|
||||||
|
config MACH_APE6EVM
|
||||||
|
bool "APE6EVM board"
|
||||||
|
depends on ARCH_R8A73A4
|
||||||
|
select USE_OF
|
||||||
|
|
||||||
config MACH_MACKEREL
|
config MACH_MACKEREL
|
||||||
bool "mackerel board"
|
bool "mackerel board"
|
||||||
depends on ARCH_SH7372
|
depends on ARCH_SH7372
|
||||||
@@ -98,6 +129,13 @@ config MACH_ARMADILLO800EVA
|
|||||||
select SND_SOC_WM8978 if SND_SIMPLE_CARD
|
select SND_SOC_WM8978 if SND_SIMPLE_CARD
|
||||||
select USE_OF
|
select USE_OF
|
||||||
|
|
||||||
|
config MACH_BOCKW
|
||||||
|
bool "BOCK-W platform"
|
||||||
|
depends on ARCH_R8A7778
|
||||||
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
|
select RENESAS_INTC_IRQPIN
|
||||||
|
select USE_OF
|
||||||
|
|
||||||
config MACH_MARZEN
|
config MACH_MARZEN
|
||||||
bool "MARZEN board"
|
bool "MARZEN board"
|
||||||
depends on ARCH_R8A7779
|
depends on ARCH_R8A7779
|
||||||
@@ -117,6 +155,11 @@ config MACH_MARZEN_REFERENCE
|
|||||||
|
|
||||||
This is intended to aid developers
|
This is intended to aid developers
|
||||||
|
|
||||||
|
config MACH_LAGER
|
||||||
|
bool "Lager board"
|
||||||
|
depends on ARCH_R8A7790
|
||||||
|
select USE_OF
|
||||||
|
|
||||||
config MACH_KZM9D
|
config MACH_KZM9D
|
||||||
bool "KZM9D board"
|
bool "KZM9D board"
|
||||||
depends on ARCH_EMEV2
|
depends on ARCH_EMEV2
|
||||||
@@ -157,7 +200,8 @@ config MEMORY_START
|
|||||||
hex "Physical memory start address"
|
hex "Physical memory start address"
|
||||||
default "0x40000000" if MACH_AP4EVB || MACH_AG5EVM || \
|
default "0x40000000" if MACH_AP4EVB || MACH_AG5EVM || \
|
||||||
MACH_MACKEREL || MACH_BONITO || \
|
MACH_MACKEREL || MACH_BONITO || \
|
||||||
MACH_ARMADILLO800EVA
|
MACH_ARMADILLO800EVA || MACH_APE6EVM || \
|
||||||
|
MACH_LAGER
|
||||||
default "0x41000000" if MACH_KOTA2
|
default "0x41000000" if MACH_KOTA2
|
||||||
default "0x00000000"
|
default "0x00000000"
|
||||||
---help---
|
---help---
|
||||||
@@ -167,6 +211,8 @@ config MEMORY_START
|
|||||||
|
|
||||||
config MEMORY_SIZE
|
config MEMORY_SIZE
|
||||||
hex "Physical memory size"
|
hex "Physical memory size"
|
||||||
|
default "0x80000000" if MACH_LAGER
|
||||||
|
default "0x40000000" if MACH_APE6EVM
|
||||||
default "0x20000000" if MACH_AG5EVM || MACH_BONITO || \
|
default "0x20000000" if MACH_AG5EVM || MACH_BONITO || \
|
||||||
MACH_ARMADILLO800EVA
|
MACH_ARMADILLO800EVA
|
||||||
default "0x1e000000" if MACH_KOTA2
|
default "0x1e000000" if MACH_KOTA2
|
||||||
|
|||||||
@@ -8,8 +8,11 @@ obj-y := timer.o console.o clock.o
|
|||||||
# CPU objects
|
# CPU objects
|
||||||
obj-$(CONFIG_ARCH_SH7372) += setup-sh7372.o clock-sh7372.o intc-sh7372.o
|
obj-$(CONFIG_ARCH_SH7372) += setup-sh7372.o clock-sh7372.o intc-sh7372.o
|
||||||
obj-$(CONFIG_ARCH_SH73A0) += setup-sh73a0.o clock-sh73a0.o intc-sh73a0.o
|
obj-$(CONFIG_ARCH_SH73A0) += setup-sh73a0.o clock-sh73a0.o intc-sh73a0.o
|
||||||
|
obj-$(CONFIG_ARCH_R8A73A4) += setup-r8a73a4.o clock-r8a73a4.o
|
||||||
obj-$(CONFIG_ARCH_R8A7740) += setup-r8a7740.o clock-r8a7740.o intc-r8a7740.o
|
obj-$(CONFIG_ARCH_R8A7740) += setup-r8a7740.o clock-r8a7740.o intc-r8a7740.o
|
||||||
|
obj-$(CONFIG_ARCH_R8A7778) += setup-r8a7778.o clock-r8a7778.o
|
||||||
obj-$(CONFIG_ARCH_R8A7779) += setup-r8a7779.o clock-r8a7779.o intc-r8a7779.o
|
obj-$(CONFIG_ARCH_R8A7779) += setup-r8a7779.o clock-r8a7779.o intc-r8a7779.o
|
||||||
|
obj-$(CONFIG_ARCH_R8A7790) += setup-r8a7790.o clock-r8a7790.o
|
||||||
obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o clock-emev2.o
|
obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o clock-emev2.o
|
||||||
|
|
||||||
# SMP objects
|
# SMP objects
|
||||||
@@ -34,11 +37,14 @@ obj-$(CONFIG_ARCH_SH73A0) += pm-sh73a0.o
|
|||||||
# Board objects
|
# Board objects
|
||||||
obj-$(CONFIG_MACH_AP4EVB) += board-ap4evb.o
|
obj-$(CONFIG_MACH_AP4EVB) += board-ap4evb.o
|
||||||
obj-$(CONFIG_MACH_AG5EVM) += board-ag5evm.o
|
obj-$(CONFIG_MACH_AG5EVM) += board-ag5evm.o
|
||||||
|
obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o
|
||||||
obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o
|
obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o
|
||||||
obj-$(CONFIG_MACH_KOTA2) += board-kota2.o
|
obj-$(CONFIG_MACH_KOTA2) += board-kota2.o
|
||||||
obj-$(CONFIG_MACH_BONITO) += board-bonito.o
|
obj-$(CONFIG_MACH_BONITO) += board-bonito.o
|
||||||
|
obj-$(CONFIG_MACH_BOCKW) += board-bockw.o
|
||||||
obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
|
obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
|
||||||
obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.o
|
obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.o
|
||||||
|
obj-$(CONFIG_MACH_LAGER) += board-lager.o
|
||||||
obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o
|
obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o
|
||||||
obj-$(CONFIG_MACH_KZM9D) += board-kzm9d.o
|
obj-$(CONFIG_MACH_KZM9D) += board-kzm9d.o
|
||||||
obj-$(CONFIG_MACH_KZM9G) += board-kzm9g.o
|
obj-$(CONFIG_MACH_KZM9G) += board-kzm9g.o
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* APE6EVM board support
|
||||||
|
*
|
||||||
|
* 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/gpio.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/irqchip.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/pinctrl/machine.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/regulator/fixed.h>
|
||||||
|
#include <linux/regulator/machine.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/irqs.h>
|
||||||
|
#include <mach/r8a73a4.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
|
||||||
|
/* Dummy supplies, where voltage doesn't matter */
|
||||||
|
static struct regulator_consumer_supply dummy_supplies[] = {
|
||||||
|
REGULATOR_SUPPLY("vddvario", "smsc911x"),
|
||||||
|
REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* SMSC LAN9220 */
|
||||||
|
static const struct resource lan9220_res[] = {
|
||||||
|
DEFINE_RES_MEM(0x08000000, 0x1000),
|
||||||
|
{
|
||||||
|
.start = irq_pin(40), /* IRQ40 */
|
||||||
|
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct smsc911x_platform_config lan9220_data = {
|
||||||
|
.flags = SMSC911X_USE_32BIT,
|
||||||
|
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||||
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct pinctrl_map ape6evm_pinctrl_map[] = {
|
||||||
|
/* SCIFA0 console */
|
||||||
|
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4",
|
||||||
|
"scifa0_data", "scifa0"),
|
||||||
|
/* SMSC */
|
||||||
|
PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4",
|
||||||
|
"irqc_irq40", "irqc"),
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init ape6evm_add_standard_devices(void)
|
||||||
|
{
|
||||||
|
r8a73a4_clock_init();
|
||||||
|
pinctrl_register_mappings(ape6evm_pinctrl_map,
|
||||||
|
ARRAY_SIZE(ape6evm_pinctrl_map));
|
||||||
|
r8a73a4_pinmux_init();
|
||||||
|
r8a73a4_add_standard_devices();
|
||||||
|
|
||||||
|
/* LAN9220 ethernet */
|
||||||
|
gpio_request_one(270, GPIOF_OUT_INIT_HIGH, NULL); /* smsc9220 RESET */
|
||||||
|
|
||||||
|
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||||
|
|
||||||
|
platform_device_register_resndata(&platform_bus, "smsc911x", -1,
|
||||||
|
lan9220_res, ARRAY_SIZE(lan9220_res),
|
||||||
|
&lan9220_data, sizeof(lan9220_data));
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *ape6evm_boards_compat_dt[] __initdata = {
|
||||||
|
"renesas,ape6evm",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
DT_MACHINE_START(APE6EVM_DT, "ape6evm")
|
||||||
|
.init_irq = irqchip_init,
|
||||||
|
.init_time = shmobile_timer_init,
|
||||||
|
.init_machine = ape6evm_add_standard_devices,
|
||||||
|
.dt_compat = ape6evm_boards_compat_dt,
|
||||||
|
MACHINE_END
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
* see
|
* see
|
||||||
* usbhsf_power_ctrl()
|
* usbhsf_power_ctrl()
|
||||||
*/
|
*/
|
||||||
#define IRQ7 evt2irq(0x02e0)
|
#define IRQ7 irq_pin(7)
|
||||||
#define USBCR1 IOMEM(0xe605810a)
|
#define USBCR1 IOMEM(0xe605810a)
|
||||||
#define USBH 0xC6700000
|
#define USBH 0xC6700000
|
||||||
#define USBH_USBCTR 0x10834
|
#define USBH_USBCTR 0x10834
|
||||||
@@ -338,7 +338,7 @@ static struct resource usbhsf_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.start = evt2irq(0x0A20),
|
.start = gic_spi(51),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -371,7 +371,7 @@ static struct resource sh_eth_resources[] = {
|
|||||||
.end = 0xe9a02000 - 1,
|
.end = 0xe9a02000 - 1,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
}, {
|
}, {
|
||||||
.start = evt2irq(0x0500),
|
.start = gic_spi(110),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -425,7 +425,7 @@ static struct resource lcdc0_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = intcs_evt2irq(0x580),
|
.start = gic_spi(177),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -460,7 +460,7 @@ static struct resource hdmi_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = evt2irq(0x1700),
|
.start = gic_spi(131),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
@@ -522,7 +522,7 @@ static struct resource hdmi_lcdc_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = intcs_evt2irq(0x1780),
|
.start = gic_spi(178),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -686,7 +686,7 @@ static struct platform_device vcc_sdhi1 = {
|
|||||||
* We can use IRQ31 as card detect irq,
|
* We can use IRQ31 as card detect irq,
|
||||||
* but it needs chattering removal operation
|
* but it needs chattering removal operation
|
||||||
*/
|
*/
|
||||||
#define IRQ31 evt2irq(0x33E0)
|
#define IRQ31 irq_pin(31)
|
||||||
static struct sh_mobile_sdhi_info sdhi0_info = {
|
static struct sh_mobile_sdhi_info sdhi0_info = {
|
||||||
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
||||||
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
|
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
|
||||||
@@ -708,12 +708,12 @@ static struct resource sdhi0_resources[] = {
|
|||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
||||||
.start = evt2irq(0x0E20),
|
.start = gic_spi(118),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
||||||
.start = evt2irq(0x0E40),
|
.start = gic_spi(119),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -747,15 +747,15 @@ static struct resource sdhi1_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = evt2irq(0x0E80),
|
.start = gic_spi(121),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
.start = evt2irq(0x0EA0),
|
.start = gic_spi(122),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[3] = {
|
[3] = {
|
||||||
.start = evt2irq(0x0EC0),
|
.start = gic_spi(123),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -798,12 +798,12 @@ static struct resource sh_mmcif_resources[] = {
|
|||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
/* MMC ERR */
|
/* MMC ERR */
|
||||||
.start = evt2irq(0x1AC0),
|
.start = gic_spi(56),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
/* MMC NOR */
|
/* MMC NOR */
|
||||||
.start = evt2irq(0x1AE0),
|
.start = gic_spi(57),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -880,7 +880,7 @@ static struct resource ceu0_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = intcs_evt2irq(0x0500),
|
.start = gic_spi(160),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
@@ -922,7 +922,7 @@ static struct resource fsi_resources[] = {
|
|||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
.start = evt2irq(0x1840),
|
.start = gic_spi(9),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -1009,7 +1009,7 @@ static struct st1232_pdata st1232_i2c0_pdata = {
|
|||||||
static struct i2c_board_info i2c0_devices[] = {
|
static struct i2c_board_info i2c0_devices[] = {
|
||||||
{
|
{
|
||||||
I2C_BOARD_INFO("st1232-ts", 0x55),
|
I2C_BOARD_INFO("st1232-ts", 0x55),
|
||||||
.irq = evt2irq(0x0340),
|
.irq = irq_pin(10),
|
||||||
.platform_data = &st1232_i2c0_pdata,
|
.platform_data = &st1232_i2c0_pdata,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1292,7 +1292,6 @@ DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva")
|
|||||||
.map_io = r8a7740_map_io,
|
.map_io = r8a7740_map_io,
|
||||||
.init_early = eva_add_early_devices,
|
.init_early = eva_add_early_devices,
|
||||||
.init_irq = r8a7740_init_irq,
|
.init_irq = r8a7740_init_irq,
|
||||||
.handle_irq = shmobile_handle_irq_intc,
|
|
||||||
.init_machine = eva_init,
|
.init_machine = eva_init,
|
||||||
.init_late = shmobile_init_late,
|
.init_late = shmobile_init_late,
|
||||||
.init_time = eva_earlytimer_init,
|
.init_time = eva_earlytimer_init,
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Bock-W board support
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||||
|
* Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||||
|
*
|
||||||
|
* 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/platform_device.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/irqs.h>
|
||||||
|
#include <mach/r8a7778.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
|
||||||
|
static struct smsc911x_platform_config smsc911x_data = {
|
||||||
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||||
|
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||||
|
.flags = SMSC911X_USE_32BIT,
|
||||||
|
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource smsc911x_resources[] = {
|
||||||
|
DEFINE_RES_MEM(0x18300000, 0x1000),
|
||||||
|
DEFINE_RES_IRQ(irq_pin(0)), /* IRQ 0 */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define IRQ0MR 0x30
|
||||||
|
static void __init bockw_init(void)
|
||||||
|
{
|
||||||
|
void __iomem *fpga;
|
||||||
|
|
||||||
|
r8a7778_clock_init();
|
||||||
|
r8a7778_init_irq_extpin(1);
|
||||||
|
r8a7778_add_standard_devices();
|
||||||
|
|
||||||
|
fpga = ioremap_nocache(0x18200000, SZ_1M);
|
||||||
|
if (fpga) {
|
||||||
|
/*
|
||||||
|
* CAUTION
|
||||||
|
*
|
||||||
|
* IRQ0/1 is cascaded interrupt from FPGA.
|
||||||
|
* it should be cared in the future
|
||||||
|
* Now, it is assuming IRQ0 was used only from SMSC.
|
||||||
|
*/
|
||||||
|
u16 val = ioread16(fpga + IRQ0MR);
|
||||||
|
val &= ~(1 << 4); /* enable SMSC911x */
|
||||||
|
iowrite16(val, fpga + IRQ0MR);
|
||||||
|
iounmap(fpga);
|
||||||
|
|
||||||
|
platform_device_register_resndata(
|
||||||
|
&platform_bus, "smsc911x", -1,
|
||||||
|
smsc911x_resources, ARRAY_SIZE(smsc911x_resources),
|
||||||
|
&smsc911x_data, sizeof(smsc911x_data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *bockw_boards_compat_dt[] __initdata = {
|
||||||
|
"renesas,bockw",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
DT_MACHINE_START(BOCKW_DT, "bockw")
|
||||||
|
.init_early = r8a7778_init_delay,
|
||||||
|
.init_irq = r8a7778_init_irq_dt,
|
||||||
|
.init_machine = bockw_init,
|
||||||
|
.init_time = shmobile_timer_init,
|
||||||
|
.dt_compat = bockw_boards_compat_dt,
|
||||||
|
MACHINE_END
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Lager board support
|
||||||
|
*
|
||||||
|
* 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/interrupt.h>
|
||||||
|
#include <linux/irqchip.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/r8a7790.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
|
||||||
|
static void __init lager_add_standard_devices(void)
|
||||||
|
{
|
||||||
|
r8a7790_clock_init();
|
||||||
|
r8a7790_add_standard_devices();
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *lager_boards_compat_dt[] __initdata = {
|
||||||
|
"renesas,lager",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
DT_MACHINE_START(LAGER_DT, "lager")
|
||||||
|
.init_irq = irqchip_init,
|
||||||
|
.init_time = r8a7790_timer_init,
|
||||||
|
.init_machine = lager_add_standard_devices,
|
||||||
|
.dt_compat = lager_boards_compat_dt,
|
||||||
|
MACHINE_END
|
||||||
@@ -969,15 +969,6 @@ static struct platform_device nand_flash_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* The card detect pin of the top SD/MMC slot (CN7) is active low and is
|
|
||||||
* connected to GPIO A22 of SH7372 (GPIO 41).
|
|
||||||
*/
|
|
||||||
static int slot_cn7_get_cd(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
return !gpio_get_value(41);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SDHI0 */
|
/* SDHI0 */
|
||||||
static struct sh_mobile_sdhi_info sdhi0_info = {
|
static struct sh_mobile_sdhi_info sdhi0_info = {
|
||||||
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
||||||
@@ -988,21 +979,17 @@ static struct sh_mobile_sdhi_info sdhi0_info = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct resource sdhi0_resources[] = {
|
static struct resource sdhi0_resources[] = {
|
||||||
[0] = {
|
{
|
||||||
.name = "SDHI0",
|
.name = "SDHI0",
|
||||||
.start = 0xe6850000,
|
.start = 0xe6850000,
|
||||||
.end = 0xe68500ff,
|
.end = 0xe68500ff,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
}, {
|
||||||
[1] = {
|
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
||||||
.start = evt2irq(0x0e00) /* SDHI0_SDHI0I0 */,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
[2] = {
|
|
||||||
.start = evt2irq(0x0e20) /* SDHI0_SDHI0I1 */,
|
.start = evt2irq(0x0e20) /* SDHI0_SDHI0I1 */,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
}, {
|
||||||
[3] = {
|
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
||||||
.start = evt2irq(0x0e40) /* SDHI0_SDHI0I2 */,
|
.start = evt2irq(0x0e40) /* SDHI0_SDHI0I2 */,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
@@ -1018,36 +1005,30 @@ static struct platform_device sdhi0_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
#if !IS_ENABLED(CONFIG_MMC_SH_MMCIF)
|
||||||
/* SDHI1 */
|
/* SDHI1 */
|
||||||
|
|
||||||
|
/* GPIO 41 can trigger IRQ8, but it is used by USBHS1, we have to poll */
|
||||||
static struct sh_mobile_sdhi_info sdhi1_info = {
|
static struct sh_mobile_sdhi_info sdhi1_info = {
|
||||||
.dma_slave_tx = SHDMA_SLAVE_SDHI1_TX,
|
.dma_slave_tx = SHDMA_SLAVE_SDHI1_TX,
|
||||||
.dma_slave_rx = SHDMA_SLAVE_SDHI1_RX,
|
.dma_slave_rx = SHDMA_SLAVE_SDHI1_RX,
|
||||||
.tmio_ocr_mask = MMC_VDD_165_195,
|
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD,
|
||||||
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
|
|
||||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
||||||
MMC_CAP_NEEDS_POLL,
|
MMC_CAP_NEEDS_POLL,
|
||||||
.get_cd = slot_cn7_get_cd,
|
.cd_gpio = 41,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource sdhi1_resources[] = {
|
static struct resource sdhi1_resources[] = {
|
||||||
[0] = {
|
{
|
||||||
.name = "SDHI1",
|
.name = "SDHI1",
|
||||||
.start = 0xe6860000,
|
.start = 0xe6860000,
|
||||||
.end = 0xe68600ff,
|
.end = 0xe68600ff,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
}, {
|
||||||
[1] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
|
|
||||||
.start = evt2irq(0x0e80), /* SDHI1_SDHI1I0 */
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
[2] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
||||||
.start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */
|
.start = evt2irq(0x0ea0), /* SDHI1_SDHI1I1 */
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
}, {
|
||||||
[3] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
||||||
.start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */
|
.start = evt2irq(0x0ec0), /* SDHI1_SDHI1I2 */
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
@@ -1065,43 +1046,32 @@ static struct platform_device sdhi1_device = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* SDHI2 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The card detect pin of the top SD/MMC slot (CN23) is active low and is
|
* The card detect pin of the top SD/MMC slot (CN23) is active low and is
|
||||||
* connected to GPIO SCIFB_SCK of SH7372 (162).
|
* connected to GPIO SCIFB_SCK of SH7372 (GPIO 162).
|
||||||
*/
|
*/
|
||||||
static int slot_cn23_get_cd(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
return !gpio_get_value(162);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SDHI2 */
|
|
||||||
static struct sh_mobile_sdhi_info sdhi2_info = {
|
static struct sh_mobile_sdhi_info sdhi2_info = {
|
||||||
.dma_slave_tx = SHDMA_SLAVE_SDHI2_TX,
|
.dma_slave_tx = SHDMA_SLAVE_SDHI2_TX,
|
||||||
.dma_slave_rx = SHDMA_SLAVE_SDHI2_RX,
|
.dma_slave_rx = SHDMA_SLAVE_SDHI2_RX,
|
||||||
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
|
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_USE_GPIO_CD,
|
||||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
.tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
|
||||||
MMC_CAP_NEEDS_POLL,
|
MMC_CAP_NEEDS_POLL,
|
||||||
.get_cd = slot_cn23_get_cd,
|
.cd_gpio = 162,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource sdhi2_resources[] = {
|
static struct resource sdhi2_resources[] = {
|
||||||
[0] = {
|
{
|
||||||
.name = "SDHI2",
|
.name = "SDHI2",
|
||||||
.start = 0xe6870000,
|
.start = 0xe6870000,
|
||||||
.end = 0xe68700ff,
|
.end = 0xe68700ff,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
}, {
|
||||||
[1] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_CARD_DETECT,
|
|
||||||
.start = evt2irq(0x1200), /* SDHI2_SDHI2I0 */
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
[2] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
.name = SH_MOBILE_SDHI_IRQ_SDCARD,
|
||||||
.start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */
|
.start = evt2irq(0x1220), /* SDHI2_SDHI2I1 */
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
}, {
|
||||||
[3] = {
|
|
||||||
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
.name = SH_MOBILE_SDHI_IRQ_SDIO,
|
||||||
.start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */
|
.start = evt2irq(0x1240), /* SDHI2_SDHI2I2 */
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
@@ -1119,6 +1089,7 @@ static struct platform_device sdhi2_device = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* SH_MMCIF */
|
/* SH_MMCIF */
|
||||||
|
#if IS_ENABLED(CONFIG_MMC_SH_MMCIF)
|
||||||
static struct resource sh_mmcif_resources[] = {
|
static struct resource sh_mmcif_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.name = "MMCIF",
|
.name = "MMCIF",
|
||||||
@@ -1140,16 +1111,17 @@ static struct resource sh_mmcif_resources[] = {
|
|||||||
|
|
||||||
static struct sh_mmcif_plat_data sh_mmcif_plat = {
|
static struct sh_mmcif_plat_data sh_mmcif_plat = {
|
||||||
.sup_pclk = 0,
|
.sup_pclk = 0,
|
||||||
.ocr = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
|
|
||||||
.caps = MMC_CAP_4_BIT_DATA |
|
.caps = MMC_CAP_4_BIT_DATA |
|
||||||
MMC_CAP_8_BIT_DATA |
|
MMC_CAP_8_BIT_DATA |
|
||||||
MMC_CAP_NEEDS_POLL,
|
MMC_CAP_NEEDS_POLL,
|
||||||
.get_cd = slot_cn7_get_cd,
|
.use_cd_gpio = true,
|
||||||
|
/* card detect pin for SD/MMC slot (CN7) */
|
||||||
|
.cd_gpio = 41,
|
||||||
.slave_id_tx = SHDMA_SLAVE_MMCIF_TX,
|
.slave_id_tx = SHDMA_SLAVE_MMCIF_TX,
|
||||||
.slave_id_rx = SHDMA_SLAVE_MMCIF_RX,
|
.slave_id_rx = SHDMA_SLAVE_MMCIF_RX,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device sh_mmcif_device __maybe_unused = {
|
static struct platform_device sh_mmcif_device = {
|
||||||
.name = "sh_mmcif",
|
.name = "sh_mmcif",
|
||||||
.id = 0,
|
.id = 0,
|
||||||
.dev = {
|
.dev = {
|
||||||
@@ -1160,7 +1132,7 @@ static struct platform_device sh_mmcif_device __maybe_unused = {
|
|||||||
.num_resources = ARRAY_SIZE(sh_mmcif_resources),
|
.num_resources = ARRAY_SIZE(sh_mmcif_resources),
|
||||||
.resource = sh_mmcif_resources,
|
.resource = sh_mmcif_resources,
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static int mackerel_camera_add(struct soc_camera_device *icd);
|
static int mackerel_camera_add(struct soc_camera_device *icd);
|
||||||
static void mackerel_camera_del(struct soc_camera_device *icd);
|
static void mackerel_camera_del(struct soc_camera_device *icd);
|
||||||
@@ -1267,11 +1239,12 @@ static struct platform_device *mackerel_devices[] __initdata = {
|
|||||||
&fsi_hdmi_device,
|
&fsi_hdmi_device,
|
||||||
&nand_flash_device,
|
&nand_flash_device,
|
||||||
&sdhi0_device,
|
&sdhi0_device,
|
||||||
#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
#if !IS_ENABLED(CONFIG_MMC_SH_MMCIF)
|
||||||
&sdhi1_device,
|
&sdhi1_device,
|
||||||
|
#else
|
||||||
|
&sh_mmcif_device,
|
||||||
#endif
|
#endif
|
||||||
&sdhi2_device,
|
&sdhi2_device,
|
||||||
&sh_mmcif_device,
|
|
||||||
&ceu_device,
|
&ceu_device,
|
||||||
&mackerel_camera,
|
&mackerel_camera,
|
||||||
&hdmi_device,
|
&hdmi_device,
|
||||||
@@ -1336,11 +1309,6 @@ static struct i2c_board_info i2c1_devices[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct pinctrl_map mackerel_pinctrl_map[] = {
|
static const struct pinctrl_map mackerel_pinctrl_map[] = {
|
||||||
/* MMCIF */
|
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh7372",
|
|
||||||
"mmc0_data8_0", "mmc0"),
|
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh7372",
|
|
||||||
"mmc0_ctrl_0", "mmc0"),
|
|
||||||
/* SDHI0 */
|
/* SDHI0 */
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh7372",
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh7372",
|
||||||
"sdhi0_data4", "sdhi0"),
|
"sdhi0_data4", "sdhi0"),
|
||||||
@@ -1349,11 +1317,17 @@ static const struct pinctrl_map mackerel_pinctrl_map[] = {
|
|||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh7372",
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-sh7372",
|
||||||
"sdhi0_wp", "sdhi0"),
|
"sdhi0_wp", "sdhi0"),
|
||||||
/* SDHI1 */
|
/* SDHI1 */
|
||||||
#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
#if !IS_ENABLED(CONFIG_MMC_SH_MMCIF)
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-sh7372",
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-sh7372",
|
||||||
"sdhi1_data4", "sdhi1"),
|
"sdhi1_data4", "sdhi1"),
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-sh7372",
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-sh7372",
|
||||||
"sdhi1_ctrl", "sdhi1"),
|
"sdhi1_ctrl", "sdhi1"),
|
||||||
|
#else
|
||||||
|
/* MMCIF */
|
||||||
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh7372",
|
||||||
|
"mmc0_data8_0", "mmc0"),
|
||||||
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-sh7372",
|
||||||
|
"mmc0_ctrl_0", "mmc0"),
|
||||||
#endif
|
#endif
|
||||||
/* SDHI2 */
|
/* SDHI2 */
|
||||||
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-sh7372",
|
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-sh7372",
|
||||||
@@ -1378,10 +1352,11 @@ static void __init mackerel_init(void)
|
|||||||
{ "A3SP", &usbhs0_device, },
|
{ "A3SP", &usbhs0_device, },
|
||||||
{ "A3SP", &usbhs1_device, },
|
{ "A3SP", &usbhs1_device, },
|
||||||
{ "A3SP", &nand_flash_device, },
|
{ "A3SP", &nand_flash_device, },
|
||||||
{ "A3SP", &sh_mmcif_device, },
|
|
||||||
{ "A3SP", &sdhi0_device, },
|
{ "A3SP", &sdhi0_device, },
|
||||||
#if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)
|
#if !IS_ENABLED(CONFIG_MMC_SH_MMCIF)
|
||||||
{ "A3SP", &sdhi1_device, },
|
{ "A3SP", &sdhi1_device, },
|
||||||
|
#else
|
||||||
|
{ "A3SP", &sh_mmcif_device, },
|
||||||
#endif
|
#endif
|
||||||
{ "A3SP", &sdhi2_device, },
|
{ "A3SP", &sdhi2_device, },
|
||||||
{ "A4R", &ceu_device, },
|
{ "A4R", &ceu_device, },
|
||||||
@@ -1492,12 +1467,6 @@ static void __init mackerel_init(void)
|
|||||||
/* SDHI0 PORT172 card-detect IRQ26 */
|
/* SDHI0 PORT172 card-detect IRQ26 */
|
||||||
gpio_request(GPIO_FN_IRQ26_172, NULL);
|
gpio_request(GPIO_FN_IRQ26_172, NULL);
|
||||||
|
|
||||||
/* card detect pin for MMC slot (CN7) */
|
|
||||||
gpio_request_one(41, GPIOF_IN, NULL);
|
|
||||||
|
|
||||||
/* card detect pin for microSD slot (CN23) */
|
|
||||||
gpio_request_one(162, GPIOF_IN, NULL);
|
|
||||||
|
|
||||||
/* FLCTL */
|
/* FLCTL */
|
||||||
gpio_request(GPIO_FN_D0_NAF0, NULL);
|
gpio_request(GPIO_FN_D0_NAF0, NULL);
|
||||||
gpio_request(GPIO_FN_D1_NAF1, NULL);
|
gpio_request(GPIO_FN_D1_NAF1, NULL);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/leds.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/pinctrl/machine.h>
|
#include <linux/pinctrl/machine.h>
|
||||||
#include <linux/regulator/fixed.h>
|
#include <linux/regulator/fixed.h>
|
||||||
@@ -168,12 +169,43 @@ static struct platform_device usb_phy_device = {
|
|||||||
.num_resources = ARRAY_SIZE(usb_phy_resources),
|
.num_resources = ARRAY_SIZE(usb_phy_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* LEDS */
|
||||||
|
static struct gpio_led marzen_leds[] = {
|
||||||
|
{
|
||||||
|
.name = "led2",
|
||||||
|
.gpio = 157,
|
||||||
|
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||||
|
}, {
|
||||||
|
.name = "led3",
|
||||||
|
.gpio = 158,
|
||||||
|
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||||
|
}, {
|
||||||
|
.name = "led4",
|
||||||
|
.gpio = 159,
|
||||||
|
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct gpio_led_platform_data marzen_leds_pdata = {
|
||||||
|
.leds = marzen_leds,
|
||||||
|
.num_leds = ARRAY_SIZE(marzen_leds),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device leds_device = {
|
||||||
|
.name = "leds-gpio",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &marzen_leds_pdata,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *marzen_devices[] __initdata = {
|
static struct platform_device *marzen_devices[] __initdata = {
|
||||||
ð_device,
|
ð_device,
|
||||||
&sdhi0_device,
|
&sdhi0_device,
|
||||||
&thermal_device,
|
&thermal_device,
|
||||||
&hspi_device,
|
&hspi_device,
|
||||||
&usb_phy_device,
|
&usb_phy_device,
|
||||||
|
&leds_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* USB */
|
/* USB */
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
/*
|
||||||
|
* r8a73a4 clock framework support
|
||||||
|
*
|
||||||
|
* 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 <mach/common.h>
|
||||||
|
|
||||||
|
#define CPG_BASE 0xe6150000
|
||||||
|
#define CPG_LEN 0x270
|
||||||
|
|
||||||
|
#define MPCKCR 0xe6150080
|
||||||
|
#define SMSTPCR2 0xe6150138
|
||||||
|
#define SMSTPCR5 0xe6150144
|
||||||
|
|
||||||
|
static struct clk_mapping cpg_mapping = {
|
||||||
|
.phys = CPG_BASE,
|
||||||
|
.len = CPG_LEN,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk extalr_clk = {
|
||||||
|
.rate = 32768,
|
||||||
|
.mapping = &cpg_mapping,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk extal1_clk = {
|
||||||
|
.rate = 26000000,
|
||||||
|
.mapping = &cpg_mapping,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk extal2_clk = {
|
||||||
|
.rate = 48000000,
|
||||||
|
.mapping = &cpg_mapping,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk *main_clks[] = {
|
||||||
|
&extalr_clk,
|
||||||
|
&extal1_clk,
|
||||||
|
&extal2_clk,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MSTP217, MSTP216, MSTP207, MSTP206, MSTP204, MSTP203,
|
||||||
|
MSTP522,
|
||||||
|
MSTP_NR
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk mstp_clks[MSTP_NR] = {
|
||||||
|
[MSTP204] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 4, 0), /* SCIFA0 */
|
||||||
|
[MSTP203] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 3, 0), /* SCIFA1 */
|
||||||
|
[MSTP206] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 6, 0), /* SCIFB0 */
|
||||||
|
[MSTP207] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 7, 0), /* SCIFB1 */
|
||||||
|
[MSTP216] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 16, 0), /* SCIFB2 */
|
||||||
|
[MSTP217] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR2, 17, 0), /* SCIFB3 */
|
||||||
|
[MSTP522] = SH_CLK_MSTP32(&extal2_clk, SMSTPCR5, 22, 0), /* Thermal */
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk_lookup lookups[] = {
|
||||||
|
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]),
|
||||||
|
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]),
|
||||||
|
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]),
|
||||||
|
CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP207]),
|
||||||
|
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP216]),
|
||||||
|
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP217]),
|
||||||
|
CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
|
||||||
|
|
||||||
|
/* for DT */
|
||||||
|
CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]),
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init r8a73a4_clock_init(void)
|
||||||
|
{
|
||||||
|
void __iomem *cpg_base, *reg;
|
||||||
|
int k, ret = 0;
|
||||||
|
|
||||||
|
/* fix MPCLK to EXTAL2 for now.
|
||||||
|
* this is needed until more detailed clock topology is supported
|
||||||
|
*/
|
||||||
|
cpg_base = ioremap_nocache(CPG_BASE, CPG_LEN);
|
||||||
|
BUG_ON(!cpg_base);
|
||||||
|
reg = cpg_base + (MPCKCR - CPG_BASE);
|
||||||
|
iowrite32(ioread32(reg) | 1 << 7 | 0x0c, reg); /* set CKSEL */
|
||||||
|
iounmap(cpg_base);
|
||||||
|
|
||||||
|
for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++)
|
||||||
|
ret = clk_register(main_clks[k]);
|
||||||
|
|
||||||
|
if (!ret)
|
||||||
|
ret = sh_clk_mstp_register(mstp_clks, MSTP_NR);
|
||||||
|
|
||||||
|
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
|
||||||
|
|
||||||
|
if (!ret)
|
||||||
|
shmobile_clk_init();
|
||||||
|
else
|
||||||
|
panic("failed to setup r8a73a4 clocks\n");
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user