Commit 150a8dcf authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC board specific changes (part 1) from Olof Johansson:
 "These changes are all for board specific files.  These used to make up
  a large portion of the ARM changes in the past, but as we are
  generalizing the support and moving to device tree probing, this has
  gotten significantly smaller.

  The only platform actually adding new code here at the moment is
  Renesas shmobile, as they are still busy converting their code to
  device tree and have not come far enough to not need it."

* tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (43 commits)
  ARM: msm: USB_MSM_OTG needs USB_PHY
  ARM: davinci: da850 evm: fix const qualifier placement
  ARM: davinci: da850 board: add remoteproc support
  ARM: pxa: move debug uart code
  ARM: pxa: select PXA935 on saar & tavorevb
  ARM: mmp: add more compatible names in gpio driver
  ARM: pxa: move PXA_GPIO_TO_IRQ macro
  ARM: pxa: remove cpu_is_xxx in gpio driver
  ARM: Kirkwood: update Network Space Mini v2 description
  ARM: Kirkwood: DT board setup for CloudBox
  ARM: Kirkwood: sort board entries by ASCII-code order
  ARM: OMAP: board-4430sdp: Provide regulator to pwm-backlight
  ARM: OMAP: zoom: Use pwm stack for lcd and keyboard backlight
  ARM: OMAP2+: omap2plus_defconfig: Add support for BMP085 pressure sensor
  omap2+: Remove useless Makefile line
  omap2+: Remove useless Makefile line
  ARM: OMAP: RX-51: add missing regulator supply definitions for lis3lv02d
  ARM: OMAP1: fix omap_udc registration
  ARM: davinci: use is IS_ENABLED macro
  ARM: kirkwood: add MACH_GURUPLUG_DT to defconfig
  ...
parents e3d98847 21bdcc1a
* Marvell PXA GPIO controller * Marvell PXA GPIO controller
Required properties: Required properties:
- compatible : Should be "mrvl,pxa-gpio" or "mrvl,mmp-gpio" - compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
"intel,pxa27x-gpio", "intel,pxa3xx-gpio",
"marvell,pxa93x-gpio", "marvell,mmp-gpio" or
"marvell,mmp2-gpio".
- reg : Address and length of the register set for the device - reg : Address and length of the register set for the device
- interrupts : Should be the port interrupt shared by all gpio pins. - interrupts : Should be the port interrupt shared by all gpio pins.
There're three gpio interrupts in arch-pxa, and they're gpio0, There're three gpio interrupts in arch-pxa, and they're gpio0,
...@@ -18,7 +21,7 @@ Required properties: ...@@ -18,7 +21,7 @@ Required properties:
Example: Example:
gpio: gpio@d4019000 { gpio: gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
interrupts = <49>; interrupts = <49>;
interrupt-name = "gpio_mux"; interrupt-name = "gpio_mux";
......
...@@ -330,6 +330,13 @@ choice ...@@ -330,6 +330,13 @@ choice
Say Y here if you want kernel low-level debugging support Say Y here if you want kernel low-level debugging support
on PicoXcell based platforms. on PicoXcell based platforms.
config DEBUG_PXA_UART1
depends on ARCH_PXA
bool "Use PXA UART1 for low-level debug"
help
Say Y here if you want kernel low-level debugging support
on PXA UART1.
config DEBUG_REALVIEW_STD_PORT config DEBUG_REALVIEW_STD_PORT
bool "RealView Default UART" bool "RealView Default UART"
depends on ARCH_REALVIEW depends on ARCH_REALVIEW
...@@ -615,6 +622,7 @@ config DEBUG_LL_INCLUDE ...@@ -615,6 +622,7 @@ config DEBUG_LL_INCLUDE
default "debug/bcm2835.S" if DEBUG_BCM2835 default "debug/bcm2835.S" if DEBUG_BCM2835
default "debug/cns3xxx.S" if DEBUG_CNS3XXX default "debug/cns3xxx.S" if DEBUG_CNS3XXX
default "debug/exynos.S" if DEBUG_EXYNOS_UART default "debug/exynos.S" if DEBUG_EXYNOS_UART
default "debug/highbank.S" if DEBUG_HIGHBANK_UART
default "debug/icedcc.S" if DEBUG_ICEDCC default "debug/icedcc.S" if DEBUG_ICEDCC
default "debug/imx.S" if DEBUG_IMX1_UART || \ default "debug/imx.S" if DEBUG_IMX1_UART || \
DEBUG_IMX25_UART || \ DEBUG_IMX25_UART || \
...@@ -624,20 +632,21 @@ config DEBUG_LL_INCLUDE ...@@ -624,20 +632,21 @@ config DEBUG_LL_INCLUDE
DEBUG_IMX51_UART || \ DEBUG_IMX51_UART || \
DEBUG_IMX53_UART ||\ DEBUG_IMX53_UART ||\
DEBUG_IMX6Q_UART DEBUG_IMX6Q_UART
default "debug/highbank.S" if DEBUG_HIGHBANK_UART
default "debug/mvebu.S" if DEBUG_MVEBU_UART default "debug/mvebu.S" if DEBUG_MVEBU_UART
default "debug/mxs.S" if DEBUG_IMX23_UART || DEBUG_IMX28_UART default "debug/mxs.S" if DEBUG_IMX23_UART || DEBUG_IMX28_UART
default "debug/nomadik.S" if DEBUG_NOMADIK_UART default "debug/nomadik.S" if DEBUG_NOMADIK_UART
default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
default "debug/pxa.S" if DEBUG_PXA_UART1 || DEBUG_MMP_UART2 || \
DEBUG_MMP_UART3
default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1 default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1
default "debug/socfpga.S" if DEBUG_SOCFPGA_UART default "debug/socfpga.S" if DEBUG_SOCFPGA_UART
default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1
default "debug/tegra.S" if DEBUG_TEGRA_UART
default "debug/ux500.S" if DEBUG_UX500_UART
default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \ default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \
DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1 DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1
default "debug/vt8500.S" if DEBUG_VT8500_UART0 default "debug/vt8500.S" if DEBUG_VT8500_UART0
default "debug/tegra.S" if DEBUG_TEGRA_UART
default "debug/ux500.S" if DEBUG_UX500_UART
default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
default "mach/debug-macro.S" default "mach/debug-macro.S"
......
...@@ -61,7 +61,8 @@ dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \ ...@@ -61,7 +61,8 @@ dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \
dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
integratorcp.dtb integratorcp.dtb
dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
kirkwood-dns320.dtb \
kirkwood-dns325.dtb \ kirkwood-dns325.dtb \
kirkwood-dockstar.dtb \ kirkwood-dockstar.dtb \
kirkwood-dreamplug.dtb \ kirkwood-dreamplug.dtb \
...@@ -75,6 +76,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \ ...@@ -75,6 +76,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
kirkwood-lschlv2.dtb \ kirkwood-lschlv2.dtb \
kirkwood-lsxhl.dtb \ kirkwood-lsxhl.dtb \
kirkwood-mplcec4.dtb \ kirkwood-mplcec4.dtb \
kirkwood-netgear_readynas_duo_v2.dtb \
kirkwood-ns2.dtb \ kirkwood-ns2.dtb \
kirkwood-ns2lite.dtb \ kirkwood-ns2lite.dtb \
kirkwood-ns2max.dtb \ kirkwood-ns2max.dtb \
...@@ -153,7 +155,9 @@ dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \ ...@@ -153,7 +155,9 @@ 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 \
r8a7779-marzen-reference.dtb \
sh73a0-kzm9g.dtb \ sh73a0-kzm9g.dtb \
sh73a0-kzm9g-reference.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
......
/dts-v1/;
/include/ "kirkwood.dtsi"
/include/ "kirkwood-6281.dtsi"
/ {
model = "LaCie CloudBox";
compatible = "lacie,cloudbox", "marvell,kirkwood-88f6702", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8";
};
ocp@f1000000 {
pinctrl: pinctrl@10000 {
pinctrl-0 = < &pmx_spi &pmx_uart0
&pmx_cloudbox_sata0 >;
pinctrl-names = "default";
pmx_cloudbox_sata0: pmx-cloudbox-sata0 {
marvell,pins = "mpp15";
marvell,function = "sata0";
};
};
serial@12000 {
clock-frequency = <166666667>;
status = "okay";
};
sata@80000 {
status = "okay";
nr-ports = <1>;
};
spi@10600 {
status = "okay";
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "mx25l4005a";
reg = <0>;
spi-max-frequency = <20000000>;
mode = <0>;
partition@0 {
reg = <0x0 0x80000>;
label = "u-boot";
};
};
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power push button";
linux,code = <116>;
gpios = <&gpio0 16 1>;
};
};
gpio-leds {
compatible = "gpio-leds";
red-fail {
label = "cloudbox:red:fail";
gpios = <&gpio0 14 0>;
};
blue-sata {
label = "cloudbox:blue:sata";
gpios = <&gpio0 15 0>;
};
};
gpio_poweroff {
compatible = "gpio-poweroff";
gpios = <&gpio0 17 0>;
};
};
/dts-v1/;
/include/ "kirkwood.dtsi"
/include/ "kirkwood-6282.dtsi"
/ {
model = "NETGEAR ReadyNAS Duo v2";
compatible = "netgear,readynas-duo-v2", "netgear,readynas", "marvell,kirkwood-88f6282", "marvell,kirkwood";
memory { /* 256 MB */
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
pinctrl: pinctrl@10000 {
pinctrl-0 = < &pmx_uart0
&pmx_button_power
&pmx_button_backup
&pmx_button_reset
&pmx_led_blue_power
&pmx_led_blue_activity
&pmx_led_blue_disk1
&pmx_led_blue_disk2
&pmx_led_blue_backup >;
pinctrl-names = "default";
pmx_button_power: pmx-button-power {
marvell,pins = "mpp47";
marvell,function = "gpio";
};
pmx_button_backup: pmx-button-backup {
marvell,pins = "mpp45";
marvell,function = "gpio";
};
pmx_button_reset: pmx-button-reset {
marvell,pins = "mpp13";
marvell,function = "gpio";
};
pmx_led_blue_power: pmx-led-blue-power {
marvell,pins = "mpp31";
marvell,function = "gpio";
};
pmx_led_blue_activity: pmx-led-blue-activity {
marvell,pins = "mpp38";
marvell,function = "gpio";
};
pmx_led_blue_disk1: pmx-led-blue-disk1 {
marvell,pins = "mpp23";
marvell,function = "gpio";
};
pmx_led_blue_disk2: pmx-led-blue-disk2 {
marvell,pins = "mpp22";
marvell,function = "gpio";
};
pmx_led_blue_backup: pmx-led-blue-backup {
marvell,pins = "mpp29";
marvell,function = "gpio";
};
};
i2c@11000 {
status = "okay";
rs5c372a: rs5c372a@32 {
compatible = "ricoh,rs5c372a";
reg = <0x32>;
};
};
serial@12000 {
status = "okay";
};
nand@3000000 {
status = "okay";
partition@0 {
label = "u-boot";
reg = <0x0000000 0x180000>;
read-only;
};
partition@180000 {
label = "u-boot-env";
reg = <0x180000 0x20000>;
};
partition@200000 {
label = "uImage";
reg = <0x0200000 0x600000>;
};
partition@800000 {
label = "minirootfs";
reg = <0x0800000 0x1000000>;
};
partition@1800000 {
label = "jffs2";
reg = <0x1800000 0x6800000>;
};
};
sata@80000 {
status = "okay";
nr-ports = <2>;
};
};
gpio-leds {
compatible = "gpio-leds";
power_led {
label = "status:blue:power_led";
gpios = <&gpio0 31 1>; /* GPIO 31 Active Low */
linux,default-trigger = "default-on";
};
activity_led {
label = "status:blue:activity_led";
gpios = <&gpio1 6 1>; /* GPIO 38 Active Low */
};
disk1_led {
label = "status:blue:disk1_led";
gpios = <&gpio0 23 1>; /* GPIO 23 Active Low */
};
disk2_led {
label = "status:blue:disk2_led";
gpios = <&gpio0 22 1>; /* GPIO 22 Active Low */
};
backup_led {
label = "status:blue:backup_led";
gpios = <&gpio0 29 1>; /* GPIO 29 Active Low*/
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power Button";
linux,code = <116>; /* KEY_POWER */
gpios = <&gpio1 15 1>;
};
button@2 {
label = "Reset Button";
linux,code = <0x198>; /* KEY_RESTART */
gpios = <&gpio0 13 1>;
};
button@3 {
label = "Backup Button";
linux,code = <133>; /* KEY_COPY */
gpios = <&gpio1 13 1>;
};
};
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
usb_power: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "USB 3.0 Power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
regulator-always-on;
regulator-boot-on;
gpio = <&gpio1 14 0>;
};
};
};
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/include/ "kirkwood-ns2-common.dtsi" /include/ "kirkwood-ns2-common.dtsi"
/ { / {
/* This machine is embedded in the first LaCie CloudBox product. */
model = "LaCie Network Space Mini v2"; model = "LaCie Network Space Mini v2";
compatible = "lacie,netspace_mini_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood"; compatible = "lacie,netspace_mini_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood";
......
...@@ -160,7 +160,7 @@ uart4: uart@d4016000 { ...@@ -160,7 +160,7 @@ uart4: uart@d4016000 {
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp2-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
...@@ -77,7 +77,7 @@ uart3: uart@d4026000 { ...@@ -77,7 +77,7 @@ uart3: uart@d4026000 {
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
...@@ -89,7 +89,7 @@ uart3: uart@d4036000 { ...@@ -89,7 +89,7 @@ uart3: uart@d4036000 {
}; };
gpio@d4019000 { gpio@d4019000 {
compatible = "mrvl,mmp-gpio"; compatible = "marvell,mmp-gpio";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
reg = <0xd4019000 0x1000>; reg = <0xd4019000 0x1000>;
......
/*
* Reference Device Tree Source for the Marzen board
*
* 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/ "r8a7779.dtsi"
/ {
model = "marzen";
compatible = "renesas,marzen-reference", "renesas,r8a7779";
chosen {
bootargs = "console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on";
};
memory {
device_type = "memory";
reg = <0x60000000 0x40000000>;
};
fixedregulator3v3: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "fixed-3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
lan0@18000000 {
compatible = "smsc,lan9220", "smsc,lan9115";
reg = <0x18000000 0x100>;
phy-mode = "mii";
interrupt-parent = <&gic>;
interrupts = <0 28 0x4>;
reg-io-width = <4>;
vddvario-supply = <&fixedregulator3v3>;
vdd33a-supply = <&fixedregulator3v3>;
};
};
/*
* Device Tree Source for the KZM-A9-GT board
*
* Copyright (C) 2012 Horms Solutions Ltd.
*
* Based on sh73a0-kzm9g.dts
* Copyright (C) 2012 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/ "sh73a0.dtsi"
/ {
model = "KZM-A9-GT";
compatible = "renesas,kzm9g-reference", "renesas,sh73a0";
chosen {
bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200";
};
memory {
device_type = "memory";
reg = <0x41000000 0x1e800000>;
};
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;
};
};
&mmcif {
bus-width = <8>;
vmmc-supply = <&reg_1p8v>;
status = "okay";
};
&sdhi0 {
vmmc-supply = <&reg_3p3v>;
bus-width = <4>;
status = "okay";
};
&sdhi2 {
vmmc-supply = <&reg_3p3v>;
bus-width = <4>;
broken-cd;
status = "okay";
};
/*
* Device Tree Source for the SH73A0 SoC
*
* Copyright (C) 2012 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.
*/
/include/ "sh73a0.dtsi"
/ {
compatible = "renesas,sh73a0";
mmcif: mmcif@0x10010000 {
compatible = "renesas,sh-mmcif";
reg = <0xe6bd0000 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 140 0x4
0 141 0x4>;
reg-io-width = <4>;
};
};
...@@ -97,4 +97,48 @@ i2c4: i2c@0xe6828000 { ...@@ -97,4 +97,48 @@ i2c4: i2c@0xe6828000 {
0 189 0x4 0 189 0x4
0 190 0x4>; 0 190 0x4>;
}; };
mmcif: mmcif@0x10010000 {
compatible = "renesas,sh-mmcif";
reg = <0xe6bd0000 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 140 0x4
0 141 0x4>;
reg-io-width = <4>;
status = "disabled";
};
sdhi0: sdhi@0xee100000 {
compatible = "renesas,r8a7740-sdhi";
reg = <0xee100000 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 83 4
0 84 4
0 85 4>;
cap-sd-highspeed;
status = "disabled";
};
/* SDHI1 and SDHI2 have no CD pins, no need for CD IRQ */
sdhi1: sdhi@0xee120000 {
compatible = "renesas,r8a7740-sdhi";
reg = <0xee120000 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 88 4
0 89 4>;
toshiba,mmc-wrprotect-disable;
cap-sd-highspeed;
status = "disabled";
};
sdhi2: sdhi@0xee140000 {
compatible = "renesas,r8a7740-sdhi";
reg = <0xee140000 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 104 4
0 105 4>;
toshiba,mmc-wrprotect-disable;
cap-sd-highspeed;
status = "disabled";
};
}; };
...@@ -5,6 +5,7 @@ CONFIG_POSIX_MQUEUE=y ...@@ -5,6 +5,7 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
CONFIG_CGROUPS=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_EXPERT=y CONFIG_EXPERT=y
CONFIG_MODULES=y CONFIG_MODULES=y
......
...@@ -5,6 +5,7 @@ CONFIG_POSIX_MQUEUE=y ...@@ -5,6 +5,7 @@ CONFIG_POSIX_MQUEUE=y
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
CONFIG_CGROUPS=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_EXPERT=y CONFIG_EXPERT=y
CONFIG_MODULES=y CONFIG_MODULES=y
......
...@@ -10,45 +10,48 @@ CONFIG_MODULES=y ...@@ -10,45 +10,48 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_KIRKWOOD=y CONFIG_ARCH_KIRKWOOD=y
CONFIG_MACH_D2NET_V2=y
CONFIG_MACH_DB88F6281_BP=y CONFIG_MACH_DB88F6281_BP=y
CONFIG_MACH_DOCKSTAR=y
CONFIG_MACH_ESATA_SHEEVAPLUG=y
CONFIG_MACH_GURUPLUG=y
CONFIG_MACH_INETSPACE_V2=y
CONFIG_MACH_MV88F6281GTW_GE=y
CONFIG_MACH_NET2BIG_V2=y
CONFIG_MACH_NET5BIG_V2=y
CONFIG_MACH_NETSPACE_MAX_V2=y
CONFIG_MACH_NETSPACE_V2=y
CONFIG_MACH_OPENRD_BASE=y
CONFIG_MACH_OPENRD_CLIENT=y
CONFIG_MACH_OPENRD_ULTIMATE=y
CONFIG_MACH_RD88F6192_NAS=y CONFIG_MACH_RD88F6192_NAS=y
CONFIG_MACH_RD88F6281=y CONFIG_MACH_RD88F6281=y
CONFIG_MACH_MV88F6281GTW_GE=y
CONFIG_MACH_SHEEVAPLUG=y CONFIG_MACH_SHEEVAPLUG=y
CONFIG_MACH_ESATA_SHEEVAPLUG=y CONFIG_MACH_T5325=y
CONFIG_MACH_GURUPLUG=y CONFIG_MACH_TS219=y
CONFIG_MACH_DREAMPLUG_DT=y CONFIG_MACH_TS41X=y
CONFIG_MACH_ICONNECT_DT=y CONFIG_MACH_CLOUDBOX_DT=y
CONFIG_MACH_DLINK_KIRKWOOD_DT=y CONFIG_MACH_DLINK_KIRKWOOD_DT=y
CONFIG_MACH_IB62X0_DT=y
CONFIG_MACH_TS219_DT=y
CONFIG_MACH_DOCKSTAR_DT=y CONFIG_MACH_DOCKSTAR_DT=y
CONFIG_MACH_DREAMPLUG_DT=y
CONFIG_MACH_GOFLEXNET_DT=y CONFIG_MACH_GOFLEXNET_DT=y
CONFIG_MACH_LSXL_DT=y CONFIG_MACH_GURUPLUG_DT=y
CONFIG_MACH_IB62X0_DT=y
CONFIG_MACH_ICONNECT_DT=y
CONFIG_MACH_INETSPACE_V2_DT=y
CONFIG_MACH_IOMEGA_IX2_200_DT=y CONFIG_MACH_IOMEGA_IX2_200_DT=y
CONFIG_MACH_KM_KIRKWOOD_DT=y CONFIG_MACH_KM_KIRKWOOD_DT=y
CONFIG_MACH_INETSPACE_V2_DT=y CONFIG_MACH_LSXL_DT=y
CONFIG_MACH_MPLCEC4_DT=y CONFIG_MACH_MPLCEC4_DT=y
CONFIG_MACH_NETSPACE_V2_DT=y
CONFIG_MACH_NETSPACE_MAX_V2_DT=y
CONFIG_MACH_NETSPACE_LITE_V2_DT=y CONFIG_MACH_NETSPACE_LITE_V2_DT=y
CONFIG_MACH_NETSPACE_MAX_V2_DT=y
CONFIG_MACH_NETSPACE_MINI_V2_DT=y CONFIG_MACH_NETSPACE_MINI_V2_DT=y
CONFIG_MACH_NETSPACE_V2_DT=y
CONFIG_MACH_NSA310_DT=y
CONFIG_MACH_OPENBLOCKS_A6_DT=y CONFIG_MACH_OPENBLOCKS_A6_DT=y
CONFIG_MACH_READYNAS_DT=y
CONFIG_MACH_TOPKICK_DT=y CONFIG_MACH_TOPKICK_DT=y
CONFIG_MACH_TS219=y CONFIG_MACH_TS219_DT=y
CONFIG_MACH_TS41X=y
CONFIG_MACH_DOCKSTAR=y
CONFIG_MACH_OPENRD_BASE=y
CONFIG_MACH_OPENRD_CLIENT=y
CONFIG_MACH_OPENRD_ULTIMATE=y
CONFIG_MACH_NETSPACE_V2=y
CONFIG_MACH_INETSPACE_V2=y
CONFIG_MACH_NETSPACE_MAX_V2=y
CONFIG_MACH_D2NET_V2=y
CONFIG_MACH_NET2BIG_V2=y
CONFIG_MACH_NET5BIG_V2=y
CONFIG_MACH_T5325=y
CONFIG_MACH_NSA310_DT=y
# CONFIG_CPU_FEROCEON_OLD_ID is not set # CONFIG_CPU_FEROCEON_OLD_ID is not set
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_AEABI=y CONFIG_AEABI=y
......
CONFIG_EXPERIMENTAL=y CONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
CONFIG_SLAB=y CONFIG_SYSCTL_SYSCALL=y
# CONFIG_BLK_DEV_BSG is not set CONFIG_KALLSYMS_ALL=y
# CONFIG_IOSCHED_DEADLINE is not set CONFIG_EMBEDDED=y
# CONFIG_IOSCHED_CFQ is not set # CONFIG_SLUB_DEBUG is not set
# CONFIG_COMPAT_BRK is not set
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_ARCH_MSM=y CONFIG_ARCH_MSM=y
CONFIG_MACH_HALIBUT=y CONFIG_ARCH_MSM8X60=y
CONFIG_NO_HZ=y CONFIG_ARCH_MSM8960=y
CONFIG_HIGH_RES_TIMERS=y CONFIG_SMP=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_AEABI=y CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set CONFIG_HIGHMEM=y
CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_HIGHPTE=y
CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_CLEANCACHE=y
CONFIG_CMDLINE="mem=64M console=ttyMSM,115200n8" CONFIG_CC_STACKPROTECTOR=y
CONFIG_PM=y CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_AUTO_ZRELADDR=y
CONFIG_VFP=y
CONFIG_NEON=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
CONFIG_INET=y CONFIG_INET=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set # CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set # CONFIG_INET_LRO is not set
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
CONFIG_MTD=y CONFIG_CFG80211=y
CONFIG_MTD_PARTITIONS=y CONFIG_RFKILL=y
CONFIG_MTD_CMDLINE_PARTS=y CONFIG_BLK_DEV_LOOP=y
CONFIG_MTD_CHAR=y CONFIG_BLK_DEV_RAM=y
CONFIG_MTD_BLOCK=y CONFIG_SCSI=y
CONFIG_SCSI_TGT=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
CONFIG_NET_ETHERNET=y CONFIG_PHYLIB=y
CONFIG_SMC91X=y CONFIG_SLIP=y
CONFIG_PPP=y CONFIG_SLIP_COMPRESSED=y
CONFIG_PPP_ASYNC=y CONFIG_SLIP_MODE_SLIP6=y
CONFIG_PPP_DEFLATE=y CONFIG_USB_USBNET=y
CONFIG_PPP_BSDCOMP=y # CONFIG_USB_NET_AX8817X is not set
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set # CONFIG_USB_NET_ZAURUS is not set
CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVDEV=y
# CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_INPUT_MOUSE is not set # CONFIG_MOUSE_PS2 is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_INPUT_TOUCHSCREEN=y CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_INPUT_MISC=y CONFIG_INPUT_MISC=y
# CONFIG_SERIO is not set CONFIG_INPUT_UINPUT=y
CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_SERIO_LIBPS2=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_MSM=y CONFIG_SERIAL_MSM=y
CONFIG_SERIAL_MSM_CONSOLE=y CONFIG_SERIAL_MSM_CONSOLE=y
# CONFIG_LEGACY_PTYS is not set CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM is not set
CONFIG_I2C=y CONFIG_I2C=y
# CONFIG_HWMON is not set CONFIG_I2C_CHARDEV=y
CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_SPI=y
CONFIG_SSBI=y
CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_SYSFS=y
CONFIG_POWER_SUPPLY=y
CONFIG_THERMAL=y
CONFIG_REGULATOR=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_FB=y CONFIG_FB=y
CONFIG_FB_MODE_HELPERS=y CONFIG_SOUND=y
CONFIG_FB_TILEBLITTING=y CONFIG_SND=y
CONFIG_FB_MSM=y CONFIG_SND_DYNAMIC_MINORS=y
# CONFIG_VGA_CONSOLE is not set # CONFIG_SND_ARM is not set
CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_SND_SPI is not set
# CONFIG_SND_USB is not set
CONFIG_SND_SOC=y
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_USB=y
CONFIG_USB_PHY=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_MON=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_MSM=y
CONFIG_USB_ACM=y
CONFIG_USB_SERIAL=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DEBUG_FILES=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_NEW_LEDS=y CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y CONFIG_RTC_CLASS=y
CONFIG_INOTIFY=y CONFIG_STAGING=y
CONFIG_MSM_IOMMU=y
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT4_FS=y
CONFIG_FUSE_FS=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y CONFIG_TMPFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_CIFS=y
CONFIG_PRINTK_TIME=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y CONFIG_LOCKUP_DETECTOR=y
CONFIG_SCHEDSTATS=y # CONFIG_DETECT_HUNG_TASK is not set
CONFIG_DEBUG_MUTEXES=y # CONFIG_SCHED_DEBUG is not set
CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_TIMER_STATS=y
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_LL=y CONFIG_DYNAMIC_DEBUG=y
...@@ -93,6 +93,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384 ...@@ -93,6 +93,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_SENSORS_LIS3LV02D=m CONFIG_SENSORS_LIS3LV02D=m
CONFIG_SENSORS_TSL2550=m CONFIG_SENSORS_TSL2550=m
CONFIG_SENSORS_LIS3_I2C=m CONFIG_SENSORS_LIS3_I2C=m
CONFIG_BMP085_I2C=m
CONFIG_SCSI=y CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_MULTI_LUN=y
......
/* arch/arm/mach-mmp/include/mach/debug-macro.S /*
* Early serial output macro for Marvell PXA/MMP SoC
* *
* Debugging macro include header * Copyright (C) 1994-1999 Russell King
* Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
* *
* Copied from arch/arm/mach-pxa/include/mach/debug.S * Copyright (C) 2013 Haojian Zhuang
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#if defined(CONFIG_DEBUG_MMP_UART2) #if defined(CONFIG_DEBUG_PXA_UART1)
#define MMP_UART_OFFSET 0x00017000 #define PXA_UART_REG_PHYS_BASE 0x40100000
#define PXA_UART_REG_VIRT_BASE 0xf2100000
#elif defined(CONFIG_DEBUG_MMP_UART2)
#define PXA_UART_REG_PHYS_BASE 0xd4017000
#define PXA_UART_REG_VIRT_BASE 0xfe017000
#elif defined(CONFIG_DEBUG_MMP_UART3) #elif defined(CONFIG_DEBUG_MMP_UART3)
#define MMP_UART_OFFSET 0x00018000 #define PXA_UART_REG_PHYS_BASE 0xd4018000
#define PXA_UART_REG_VIRT_BASE 0xfe018000
#else #else
#error "Select uart for DEBUG_LL" #error "Select uart for DEBUG_LL"
#endif #endif
#include <mach/addr-map.h> .macro addruart, rp, rv, tmp
ldr \rp, =PXA_UART_REG_PHYS_BASE
.macro addruart, rp, rv, tmp ldr \rv, =PXA_UART_REG_VIRT_BASE
ldr \rp, =APB_PHYS_BASE @ physical .endm
ldr \rv, =APB_VIRT_BASE @ virtual
orr \rp, \rp, #MMP_UART_OFFSET
orr \rv, \rv, #MMP_UART_OFFSET
.endm
#define UART_SHIFT 2 #define UART_SHIFT 2
#include <asm/hardware/debug-8250.S> #include <asm/hardware/debug-8250.S>
...@@ -297,11 +297,7 @@ static const short da830_evm_emif25_pins[] = { ...@@ -297,11 +297,7 @@ static const short da830_evm_emif25_pins[] = {
-1 -1
}; };
#if defined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE) #define HAS_MMC IS_ENABLED(CONFIG_MMC_DAVINCI)
#define HAS_MMC 1
#else
#define HAS_MMC 0
#endif
#ifdef CONFIG_DA830_UI_NAND #ifdef CONFIG_DA830_UI_NAND
static struct mtd_partition da830_evm_nand_partitions[] = { static struct mtd_partition da830_evm_nand_partitions[] = {
......
...@@ -335,12 +335,7 @@ static const short da850_evm_nor_pins[] = { ...@@ -335,12 +335,7 @@ static const short da850_evm_nor_pins[] = {
-1 -1
}; };
#if defined(CONFIG_MMC_DAVINCI) || \ #define HAS_MMC IS_ENABLED(CONFIG_MMC_DAVINCI)
defined(CONFIG_MMC_DAVINCI_MODULE)
#define HAS_MMC 1
#else
#define HAS_MMC 0
#endif
static inline void da850_evm_setup_nor_nand(void) static inline void da850_evm_setup_nor_nand(void)
{ {
...@@ -401,7 +396,7 @@ enum da850_evm_ui_exp_pins { ...@@ -401,7 +396,7 @@ enum da850_evm_ui_exp_pins {
DA850_EVM_UI_EXP_PB1, DA850_EVM_UI_EXP_PB1,
}; };
static const char const *da850_evm_ui_exp[] = { static const char * const da850_evm_ui_exp[] = {
[DA850_EVM_UI_EXP_SEL_C] = "sel_c", [DA850_EVM_UI_EXP_SEL_C] = "sel_c",
[DA850_EVM_UI_EXP_SEL_B] = "sel_b", [DA850_EVM_UI_EXP_SEL_B] = "sel_b",
[DA850_EVM_UI_EXP_SEL_A] = "sel_a", [DA850_EVM_UI_EXP_SEL_A] = "sel_a",
...@@ -565,7 +560,7 @@ enum da850_evm_bb_exp_pins { ...@@ -565,7 +560,7 @@ enum da850_evm_bb_exp_pins {
DA850_EVM_BB_EXP_USER_SW8 DA850_EVM_BB_EXP_USER_SW8
}; };
static const char const *da850_evm_bb_exp[] = { static const char * const da850_evm_bb_exp[] = {
[DA850_EVM_BB_EXP_DEEP_SLEEP_EN] = "deep_sleep_en", [DA850_EVM_BB_EXP_DEEP_SLEEP_EN] = "deep_sleep_en",
[DA850_EVM_BB_EXP_SW_RST] = "sw_rst", [DA850_EVM_BB_EXP_SW_RST] = "sw_rst",
[DA850_EVM_BB_EXP_TP_23] = "tp_23", [DA850_EVM_BB_EXP_TP_23] = "tp_23",
...@@ -1577,6 +1572,11 @@ static __init void da850_evm_init(void) ...@@ -1577,6 +1572,11 @@ static __init void da850_evm_init(void)
pr_warn("%s: SATA registration failed: %d\n", __func__, ret); pr_warn("%s: SATA registration failed: %d\n", __func__, ret);
da850_evm_setup_mac_addr(); da850_evm_setup_mac_addr();
ret = da8xx_register_rproc();
if (ret)
pr_warn("%s: dsp/rproc registration failed: %d\n",
__func__, ret);
} }
#ifdef CONFIG_SERIAL_8250_CONSOLE #ifdef CONFIG_SERIAL_8250_CONSOLE
...@@ -1604,4 +1604,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM") ...@@ -1604,4 +1604,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
.reserve = da8xx_rproc_reserve_cma,
MACHINE_END MACHINE_END
...@@ -749,26 +749,11 @@ static int davinci_phy_fixup(struct phy_device *phydev) ...@@ -749,26 +749,11 @@ static int davinci_phy_fixup(struct phy_device *phydev)
return 0; return 0;
} }
#if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ #define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710)
defined(CONFIG_BLK_DEV_PALMCHIP_BK3710_MODULE)
#define HAS_ATA 1 #define HAS_NOR IS_ENABLED(CONFIG_MTD_PHYSMAP)
#else
#define HAS_ATA 0 #define HAS_NAND IS_ENABLED(CONFIG_MTD_NAND_DAVINCI)
#endif
#if defined(CONFIG_MTD_PHYSMAP) || \
defined(CONFIG_MTD_PHYSMAP_MODULE)
#define HAS_NOR 1
#else
#define HAS_NOR 0
#endif
#if defined(CONFIG_MTD_NAND_DAVINCI) || \
defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
#define HAS_NAND 1
#else
#define HAS_NAND 0
#endif
static __init void davinci_evm_init(void) static __init void davinci_evm_init(void)
{ {
......
...@@ -117,12 +117,7 @@ static struct platform_device davinci_nand_device = { ...@@ -117,12 +117,7 @@ static struct platform_device davinci_nand_device = {
}, },
}; };
#if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ #define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710)
defined(CONFIG_BLK_DEV_PALMCHIP_BK3710_MODULE)
#define HAS_ATA 1
#else
#define HAS_ATA 0
#endif
/* CPLD Register 0 bits to control ATA */ /* CPLD Register 0 bits to control ATA */
#define DM646X_EVM_ATA_RST BIT(0) #define DM646X_EVM_ATA_RST BIT(0)
......
...@@ -166,20 +166,9 @@ static struct davinci_mmc_config davinci_ntosd2_mmc_config = { ...@@ -166,20 +166,9 @@ static struct davinci_mmc_config davinci_ntosd2_mmc_config = {
.wires = 4, .wires = 4,
}; };
#define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710)
#if defined(CONFIG_BLK_DEV_PALMCHIP_BK3710) || \ #define HAS_NAND IS_ENABLED(CONFIG_MTD_NAND_DAVINCI)
defined(CONFIG_BLK_DEV_PALMCHIP_BK3710_MODULE)
#define HAS_ATA 1
#else
#define HAS_ATA 0
#endif
#if defined(CONFIG_MTD_NAND_DAVINCI) || \
defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
#define HAS_NAND 1
#else
#define HAS_NAND 0
#endif
static __init void davinci_ntosd2_init(void) static __init void davinci_ntosd2_init(void)
{ {
......
...@@ -310,6 +310,11 @@ static __init void omapl138_hawk_init(void) ...@@ -310,6 +310,11 @@ static __init void omapl138_hawk_init(void)
if (ret) if (ret)
pr_warn("%s: watchdog registration failed: %d\n", pr_warn("%s: watchdog registration failed: %d\n",
__func__, ret); __func__, ret);
ret = da8xx_register_rproc();
if (ret)
pr_warn("%s: dsp/rproc registration failed: %d\n",
__func__, ret);
} }
#ifdef CONFIG_SERIAL_8250_CONSOLE #ifdef CONFIG_SERIAL_8250_CONSOLE
...@@ -337,4 +342,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard") ...@@ -337,4 +342,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
.init_late = davinci_init_late, .init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
.reserve = da8xx_rproc_reserve_cma,
MACHINE_END MACHINE_END
...@@ -119,7 +119,7 @@ void __init davinci_init_ide(void) ...@@ -119,7 +119,7 @@ void __init davinci_init_ide(void)
platform_device_register(&ide_device); platform_device_register(&ide_device);
} }
#if defined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE) #if IS_ENABLED(CONFIG_MMC_DAVINCI)
static u64 mmcsd0_dma_mask = DMA_BIT_MASK(32); static u64 mmcsd0_dma_mask = DMA_BIT_MASK(32);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#define DA8XX_USB0_BASE 0x01e00000 #define DA8XX_USB0_BASE 0x01e00000
#define DA8XX_USB1_BASE 0x01e25000 #define DA8XX_USB1_BASE 0x01e25000
#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) #if IS_ENABLED(CONFIG_USB_MUSB_HDRC)
static struct musb_hdrc_eps_bits musb_eps[] = { static struct musb_hdrc_eps_bits musb_eps[] = {
{ "ep1_tx", 8, }, { "ep1_tx", 8, },
{ "ep1_rx", 8, }, { "ep1_rx", 8, },
......
...@@ -2,23 +2,41 @@ if ARCH_KIRKWOOD ...@@ -2,23 +2,41 @@ if ARCH_KIRKWOOD
menu "Marvell Kirkwood Implementations" menu "Marvell Kirkwood Implementations"
config MACH_D2NET_V2
bool "LaCie d2 Network v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie d2 Network v2 NAS.
config MACH_DB88F6281_BP config MACH_DB88F6281_BP
bool "Marvell DB-88F6281-BP Development Board" bool "Marvell DB-88F6281-BP Development Board"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell DB-88F6281-BP Development Board. Marvell DB-88F6281-BP Development Board.
config MACH_RD88F6192_NAS config MACH_DOCKSTAR
bool "Marvell RD-88F6192-NAS Reference Board" bool "Seagate FreeAgent DockStar"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell RD-88F6192-NAS Reference Board. Seagate FreeAgent DockStar.
config MACH_RD88F6281 config MACH_ESATA_SHEEVAPLUG
bool "Marvell RD-88F6281 Reference Board" bool "Marvell eSATA SheevaPlug Reference Board"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell RD-88F6281 Reference Board. Marvell eSATA SheevaPlug Reference Board.
config MACH_GURUPLUG
bool "Marvell GuruPlug Reference Board"
help
Say 'Y' here if you want your kernel to support the
Marvell GuruPlug Reference Board.
config MACH_INETSPACE_V2
bool "LaCie Internet Space v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Internet Space v2 NAS.
config MACH_MV88F6281GTW_GE config MACH_MV88F6281GTW_GE
bool "Marvell 88F6281 GTW GE Board" bool "Marvell 88F6281 GTW GE Board"
...@@ -26,23 +44,93 @@ config MACH_MV88F6281GTW_GE ...@@ -26,23 +44,93 @@ config MACH_MV88F6281GTW_GE
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell 88F6281 GTW GE Board. Marvell 88F6281 GTW GE Board.
config MACH_NET2BIG_V2
bool "LaCie 2Big Network v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie 2Big Network v2 NAS.
config MACH_NET5BIG_V2
bool "LaCie 5Big Network v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie 5Big Network v2 NAS.
config MACH_NETSPACE_MAX_V2
bool "LaCie Network Space Max v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Network Space Max v2 NAS.
config MACH_NETSPACE_V2
bool "LaCie Network Space v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Network Space v2 NAS.
config MACH_OPENRD
bool
config MACH_OPENRD_BASE
bool "Marvell OpenRD Base Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Base Board.
config MACH_OPENRD_CLIENT
bool "Marvell OpenRD Client Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Client Board.
config MACH_OPENRD_ULTIMATE
bool "Marvell OpenRD Ultimate Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Ultimate Board.
config MACH_RD88F6192_NAS
bool "Marvell RD-88F6192-NAS Reference Board"
help
Say 'Y' here if you want your kernel to support the
Marvell RD-88F6192-NAS Reference Board.
config MACH_RD88F6281
bool "Marvell RD-88F6281 Reference Board"
help
Say 'Y' here if you want your kernel to support the
Marvell RD-88F6281 Reference Board.
config MACH_SHEEVAPLUG config MACH_SHEEVAPLUG
bool "Marvell SheevaPlug Reference Board" bool "Marvell SheevaPlug Reference Board"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell SheevaPlug Reference Board. Marvell SheevaPlug Reference Board.
config MACH_ESATA_SHEEVAPLUG config MACH_T5325
bool "Marvell eSATA SheevaPlug Reference Board" bool "HP t5325 Thin Client"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell eSATA SheevaPlug Reference Board. HP t5325 Thin Client.
config MACH_GURUPLUG config MACH_TS219
bool "Marvell GuruPlug Reference Board" bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell GuruPlug Reference Board. QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
TS-219P+ Turbo NAS devices.
config MACH_TS41X
bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS"
help
Say 'Y' here if you want your kernel to support the
QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
NAS devices.
comment "Device tree entries"
config ARCH_KIRKWOOD_DT config ARCH_KIRKWOOD_DT
bool "Marvell Kirkwood Flattened Device Tree" bool "Marvell Kirkwood Flattened Device Tree"
...@@ -58,12 +146,27 @@ config ARCH_KIRKWOOD_DT ...@@ -58,12 +146,27 @@ config ARCH_KIRKWOOD_DT
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell Kirkwood using flattened device tree. Marvell Kirkwood using flattened device tree.
config MACH_GURUPLUG_DT config MACH_CLOUDBOX_DT
bool "Marvell GuruPlug Reference Board (Flattened Device Tree)" bool "LaCie CloudBox NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
CloudBox NAS, using Flattened Device Tree.
config MACH_DLINK_KIRKWOOD_DT
bool "D-Link Kirkwood-based NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell GuruPlug Reference Board (Flattened Device Tree). Kirkwood-based D-Link NASes such as DNS-320 & DNS-325,
using Flattened Device Tree.
config MACH_DOCKSTAR_DT
bool "Seagate FreeAgent Dockstar (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
Seagate FreeAgent Dockstar (Flattened Device Tree).
config MACH_DREAMPLUG_DT config MACH_DREAMPLUG_DT
bool "Marvell DreamPlug (Flattened Device Tree)" bool "Marvell DreamPlug (Flattened Device Tree)"
...@@ -72,19 +175,19 @@ config MACH_DREAMPLUG_DT ...@@ -72,19 +175,19 @@ config MACH_DREAMPLUG_DT
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Marvell DreamPlug (Flattened Device Tree). Marvell DreamPlug (Flattened Device Tree).
config MACH_ICONNECT_DT config MACH_GOFLEXNET_DT
bool "Iomega Iconnect (Flattened Device Tree)" bool "Seagate GoFlex Net (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here to enable Iomega Iconnect support. Say 'Y' here if you want your kernel to support the
Seagate GoFlex Net (Flattened Device Tree).
config MACH_DLINK_KIRKWOOD_DT config MACH_GURUPLUG_DT
bool "D-Link Kirkwood-based NAS (Flattened Device Tree)" bool "Marvell GuruPlug Reference Board (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Kirkwood-based D-Link NASes such as DNS-320 & DNS-325, Marvell GuruPlug Reference Board (Flattened Device Tree).
using Flattened Device Tree.
config MACH_IB62X0_DT config MACH_IB62X0_DT
bool "RaidSonic IB-NAS6210, IB-NAS6220 (Flattened Device Tree)" bool "RaidSonic IB-NAS6210, IB-NAS6220 (Flattened Device Tree)"
...@@ -94,41 +197,18 @@ config MACH_IB62X0_DT ...@@ -94,41 +197,18 @@ config MACH_IB62X0_DT
RaidSonic IB-NAS6210 & IB-NAS6220 devices, using RaidSonic IB-NAS6210 & IB-NAS6220 devices, using
Flattened Device Tree. Flattened Device Tree.
config MACH_TS219_DT config MACH_ICONNECT_DT
bool "Device Tree for QNAP TS-11X, TS-21X NAS" bool "Iomega Iconnect (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
select ARM_APPENDED_DTB
select ARM_ATAG_DTB_COMPAT
help
Say 'Y' here if you want your kernel to support the QNAP
TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
TS-219P+ Turbo NAS devices using Fattened Device Tree.
There are two different Device Tree descriptions, depending
on if the device is based on an if the board uses the MV6281
or MV6282. If you have the wrong one, the buttons will not
work.
config MACH_DOCKSTAR_DT
bool "Seagate FreeAgent Dockstar (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
Seagate FreeAgent Dockstar (Flattened Device Tree).
config MACH_GOFLEXNET_DT
bool "Seagate GoFlex Net (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here to enable Iomega Iconnect support.
Seagate GoFlex Net (Flattened Device Tree).
config MACH_LSXL_DT config MACH_INETSPACE_V2_DT
bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)" bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the LaCie
Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using Internet Space v2 NAS, using Flattened Device Tree.
Flattened Device Tree.
config MACH_IOMEGA_IX2_200_DT config MACH_IOMEGA_IX2_200_DT
bool "Iomega StorCenter ix2-200 (Flattened Device Tree)" bool "Iomega StorCenter ix2-200 (Flattened Device Tree)"
...@@ -144,12 +224,13 @@ config MACH_KM_KIRKWOOD_DT ...@@ -144,12 +224,13 @@ config MACH_KM_KIRKWOOD_DT
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Keymile Kirkwood Reference Desgin, using Flattened Device Tree. Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
config MACH_INETSPACE_V2_DT config MACH_LSXL_DT
bool "LaCie Internet Space v2 NAS (Flattened Device Tree)" bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the LaCie Say 'Y' here if you want your kernel to support the
Internet Space v2 NAS, using Flattened Device Tree. Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using
Flattened Device Tree.
config MACH_MPLCEC4_DT config MACH_MPLCEC4_DT
bool "MPL CEC4 (Flattened Device Tree)" bool "MPL CEC4 (Flattened Device Tree)"
...@@ -158,12 +239,12 @@ config MACH_MPLCEC4_DT ...@@ -158,12 +239,12 @@ config MACH_MPLCEC4_DT
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
MPL CEC4 (Flattened Device Tree). MPL CEC4 (Flattened Device Tree).
config MACH_NETSPACE_V2_DT config MACH_NETSPACE_LITE_V2_DT
bool "LaCie Network Space v2 NAS (Flattened Device Tree)" bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the LaCie Say 'Y' here if you want your kernel to support the LaCie
Network Space v2 NAS, using Flattened Device Tree. Network Space Lite v2 NAS, using Flattened Device Tree.
config MACH_NETSPACE_MAX_V2_DT config MACH_NETSPACE_MAX_V2_DT
bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)" bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
...@@ -172,128 +253,69 @@ config MACH_NETSPACE_MAX_V2_DT ...@@ -172,128 +253,69 @@ config MACH_NETSPACE_MAX_V2_DT
Say 'Y' here if you want your kernel to support the LaCie Say 'Y' here if you want your kernel to support the LaCie
Network Space Max v2 NAS, using Flattened Device Tree. Network Space Max v2 NAS, using Flattened Device Tree.
config MACH_NETSPACE_LITE_V2_DT
bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
Network Space Lite v2 NAS, using Flattened Device Tree.
config MACH_NETSPACE_MINI_V2_DT config MACH_NETSPACE_MINI_V2_DT
bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)" bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the LaCie Say 'Y' here if you want your kernel to support the LaCie
Network Space Mini v2 NAS (aka SafeBox), using Flattened Network Space Mini v2 NAS using Flattened Device Tree.
Device Tree.
config MACH_OPENBLOCKS_A6_DT This board is embedded in a product named CloudBox, which
bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)" provides automatic backup on a 100GB cloud storage. This
select ARCH_KIRKWOOD_DT should not confused with a more recent LaCie NAS also named
help CloudBox. For this last, the disk capacity is 1TB or above.
Say 'Y' here if you want your kernel to support the
Plat'Home OpenBlocks A6 (Flattened Device Tree).
config MACH_TOPKICK_DT config MACH_NETSPACE_V2_DT
bool "USI Topkick (Flattened Device Tree)" bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the LaCie
USI Topkick, using Flattened Device Tree Network Space v2 NAS, using Flattened Device Tree.
config MACH_TS219
bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
help
Say 'Y' here if you want your kernel to support the
QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
TS-219P+ Turbo NAS devices.
config MACH_TS41X
bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS"
help
Say 'Y' here if you want your kernel to support the
QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
NAS devices.
config MACH_DOCKSTAR
bool "Seagate FreeAgent DockStar"
help
Say 'Y' here if you want your kernel to support the
Seagate FreeAgent DockStar.
config MACH_OPENRD
bool
config MACH_OPENRD_BASE
bool "Marvell OpenRD Base Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Base Board.
config MACH_OPENRD_CLIENT
bool "Marvell OpenRD Client Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Client Board.
config MACH_OPENRD_ULTIMATE
bool "Marvell OpenRD Ultimate Board"
select MACH_OPENRD
help
Say 'Y' here if you want your kernel to support the
Marvell OpenRD Ultimate Board.
config MACH_NETSPACE_V2
bool "LaCie Network Space v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Network Space v2 NAS.
config MACH_INETSPACE_V2
bool "LaCie Internet Space v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Internet Space v2 NAS.
config MACH_NETSPACE_MAX_V2
bool "LaCie Network Space Max v2 NAS Board"
help
Say 'Y' here if you want your kernel to support the
LaCie Network Space Max v2 NAS.
config MACH_D2NET_V2 config MACH_NSA310_DT
bool "LaCie d2 Network v2 NAS Board" bool "ZyXEL NSA-310 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
select ARM_ATAG_DTB_COMPAT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
LaCie d2 Network v2 NAS. ZyXEL NSA-310 board (Flattened Device Tree).
config MACH_NET2BIG_V2 config MACH_OPENBLOCKS_A6_DT
bool "LaCie 2Big Network v2 NAS Board" bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
LaCie 2Big Network v2 NAS. Plat'Home OpenBlocks A6 (Flattened Device Tree).
config MACH_NET5BIG_V2 config MACH_READYNAS_DT
bool "LaCie 5Big Network v2 NAS Board" bool "NETGEAR ReadyNAS Duo v2 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
select ARM_APPENDED_DTB
select ARM_ATAG_DTB_COMPAT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
LaCie 5Big Network v2 NAS. NETGEAR ReadyNAS Duo v2 using Fattened Device Tree.
config MACH_T5325 config MACH_TOPKICK_DT
bool "HP t5325 Thin Client" bool "USI Topkick (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
HP t5325 Thin Client. USI Topkick, using Flattened Device Tree
config MACH_NSA310_DT config MACH_TS219_DT
bool "ZyXEL NSA-310 (Flattened Device Tree)" bool "Device Tree for QNAP TS-11X, TS-21X NAS"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
select ARM_APPENDED_DTB
select ARM_ATAG_DTB_COMPAT select ARM_ATAG_DTB_COMPAT
help help
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the QNAP
ZyXEL NSA-310 board (Flattened Device Tree). TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
TS-219P+ Turbo NAS devices using Fattened Device Tree.
There are two different Device Tree descriptions, depending
on if the device is based on an if the board uses the MV6281
or MV6282. If you have the wrong one, the buttons will not
work.
endmenu endmenu
......
obj-y += common.o addr-map.o irq.o pcie.o mpp.o obj-y += common.o addr-map.o irq.o pcie.o mpp.o
obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o
obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o
obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o
obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o
obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o
obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o
obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o
obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o
obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_INETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o obj-$(CONFIG_MACH_INETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NETSPACE_MAX_V2) += netspace_v2-setup.o lacie_v2-common.o obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NETSPACE_MAX_V2) += netspace_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o
obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
obj-$(CONFIG_MACH_T5325) += t5325-setup.o obj-$(CONFIG_MACH_T5325) += t5325-setup.o
obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o
obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o
obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o
obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o obj-$(CONFIG_MACH_CLOUDBOX_DT) += board-ns2.o
obj-$(CONFIG_MACH_GURUPLUG_DT) += board-guruplug.o
obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o
obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o
obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o
obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o
obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o
obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o
obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o
obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o obj-$(CONFIG_MACH_GURUPLUG_DT) += board-guruplug.o
obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o
obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o
obj-$(CONFIG_MACH_INETSPACE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o
obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o
obj-$(CONFIG_MACH_INETSPACE_V2_DT) += board-ns2.o obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o
obj-$(CONFIG_MACH_MPLCEC4_DT) += board-mplcec4.o obj-$(CONFIG_MACH_MPLCEC4_DT) += board-mplcec4.o
obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NSA310_DT) += board-nsa310.o obj-$(CONFIG_MACH_NSA310_DT) += board-nsa310.o
obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o
obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o
...@@ -139,16 +139,20 @@ static void __init kirkwood_dt_init(void) ...@@ -139,16 +139,20 @@ static void __init kirkwood_dt_init(void)
if (of_machine_is_compatible("keymile,km_kirkwood")) if (of_machine_is_compatible("keymile,km_kirkwood"))
km_kirkwood_init(); km_kirkwood_init();
if (of_machine_is_compatible("lacie,inetspace_v2") || if (of_machine_is_compatible("lacie,cloudbox") ||
of_machine_is_compatible("lacie,netspace_v2") || of_machine_is_compatible("lacie,inetspace_v2") ||
of_machine_is_compatible("lacie,netspace_max_v2") ||
of_machine_is_compatible("lacie,netspace_lite_v2") || of_machine_is_compatible("lacie,netspace_lite_v2") ||
of_machine_is_compatible("lacie,netspace_mini_v2")) of_machine_is_compatible("lacie,netspace_max_v2") ||
of_machine_is_compatible("lacie,netspace_mini_v2") ||
of_machine_is_compatible("lacie,netspace_v2"))
ns2_init(); ns2_init();
if (of_machine_is_compatible("mpl,cec4")) if (of_machine_is_compatible("mpl,cec4"))
mplcec4_init(); mplcec4_init();
if (of_machine_is_compatible("netgear,readynas-duo-v2"))
netgear_readynas_init();
if (of_machine_is_compatible("plathome,openblocks-a6")) if (of_machine_is_compatible("plathome,openblocks-a6"))
openblocks_a6_init(); openblocks_a6_init();
...@@ -171,12 +175,14 @@ static const char * const kirkwood_dt_board_compat[] = { ...@@ -171,12 +175,14 @@ static const char * const kirkwood_dt_board_compat[] = {
"buffalo,lsxl", "buffalo,lsxl",
"iom,ix2-200", "iom,ix2-200",
"keymile,km_kirkwood", "keymile,km_kirkwood",
"lacie,cloudbox",
"lacie,inetspace_v2", "lacie,inetspace_v2",
"lacie,netspace_max_v2",
"lacie,netspace_v2",
"lacie,netspace_lite_v2", "lacie,netspace_lite_v2",
"lacie,netspace_max_v2",
"lacie,netspace_mini_v2", "lacie,netspace_mini_v2",
"lacie,netspace_v2",
"mpl,cec4", "mpl,cec4",
"netgear,readynas-duo-v2",
"plathome,openblocks-a6", "plathome,openblocks-a6",
"usi,topkick", "usi,topkick",
"zyxel,nsa310", "zyxel,nsa310",
......
...@@ -27,7 +27,8 @@ void __init ns2_init(void) ...@@ -27,7 +27,8 @@ void __init ns2_init(void)
/* /*
* Basic setup. Needs to be called early. * Basic setup. Needs to be called early.
*/ */
if (of_machine_is_compatible("lacie,netspace_lite_v2") || if (of_machine_is_compatible("lacie,cloudbox") ||
of_machine_is_compatible("lacie,netspace_lite_v2") ||
of_machine_is_compatible("lacie,netspace_mini_v2")) of_machine_is_compatible("lacie,netspace_mini_v2"))
ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
kirkwood_ge00_init(&ns2_ge00_data); kirkwood_ge00_init(&ns2_ge00_data);
......
/*
* NETGEAR ReadyNAS Duo v2 Board setup for drivers not already
* converted to DT.
*
* Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/mv643xx_eth.h>
#include <mach/kirkwood.h>
#include "common.h"
static struct mv643xx_eth_platform_data netgear_readynas_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
};
void __init netgear_readynas_init(void)
{
kirkwood_ge00_init(&netgear_readynas_ge00_data);
kirkwood_pcie_init(KW_PCIE0);
}
...@@ -141,12 +141,24 @@ void openblocks_a6_init(void); ...@@ -141,12 +141,24 @@ void openblocks_a6_init(void);
static inline void openblocks_a6_init(void) {}; static inline void openblocks_a6_init(void) {};
#endif #endif
#ifdef CONFIG_MACH_READYNAS_DT
void netgear_readynas_init(void);
#else
static inline void netgear_readynas_init(void) {};
#endif
#ifdef CONFIG_MACH_TOPKICK_DT #ifdef CONFIG_MACH_TOPKICK_DT
void usi_topkick_init(void); void usi_topkick_init(void);
#else #else
static inline void usi_topkick_init(void) {}; static inline void usi_topkick_init(void) {};
#endif #endif
#ifdef CONFIG_MACH_CLOUDBOX_DT
void cloudbox_init(void);
#else
static inline void cloudbox_init(void) {};
#endif
/* early init functions not converted to fdt yet */ /* early init functions not converted to fdt yet */
char *kirkwood_id(void); char *kirkwood_id(void);
void kirkwood_l2_init(void); void kirkwood_l2_init(void);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* publishhed by the Free Software Foundation. * publishhed by the Free Software Foundation.
*/ */
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -110,6 +111,10 @@ static unsigned long common_pin_config[] __initdata = { ...@@ -110,6 +111,10 @@ static unsigned long common_pin_config[] __initdata = {
GPIO121_KP_MKIN4, GPIO121_KP_MKIN4,
}; };
static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct smc91x_platdata smc91x_info = { static struct smc91x_platdata smc91x_info = {
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
}; };
...@@ -242,6 +247,8 @@ static void __init common_init(void) ...@@ -242,6 +247,8 @@ static void __init common_init(void)
pxa168_add_nand(&aspenite_nand_info); pxa168_add_nand(&aspenite_nand_info);
pxa168_add_fb(&aspenite_lcd_info); pxa168_add_fb(&aspenite_lcd_info);
pxa168_add_keypad(&aspenite_keypad_info); pxa168_add_keypad(&aspenite_keypad_info);
platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&pxa168_device_gpio); platform_device_register(&pxa168_device_gpio);
/* off-chip devices */ /* off-chip devices */
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gpio-pxa.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -32,12 +33,18 @@ static unsigned long avengers_lite_pin_config_V16F[] __initdata = { ...@@ -32,12 +33,18 @@ static unsigned long avengers_lite_pin_config_V16F[] __initdata = {
GPIO89_UART2_RXD, GPIO89_UART2_RXD,
}; };
static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static void __init avengers_lite_init(void) static void __init avengers_lite_init(void)
{ {
mfp_config(ARRAY_AND_SIZE(avengers_lite_pin_config_V16F)); mfp_config(ARRAY_AND_SIZE(avengers_lite_pin_config_V16F));
/* on-chip devices */ /* on-chip devices */
pxa168_add_uart(2); pxa168_add_uart(2);
platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&pxa168_device_gpio); platform_device_register(&pxa168_device_gpio);
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio-pxa.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/regulator/max8649.h> #include <linux/regulator/max8649.h>
#include <linux/regulator/fixed.h> #include <linux/regulator/fixed.h>
...@@ -104,6 +105,10 @@ static unsigned long brownstone_pin_config[] __initdata = { ...@@ -104,6 +105,10 @@ static unsigned long brownstone_pin_config[] __initdata = {
GPIO89_GPIO, GPIO89_GPIO,
}; };
static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct regulator_consumer_supply max8649_supply[] = { static struct regulator_consumer_supply max8649_supply[] = {
REGULATOR_SUPPLY("vcc_core", NULL), REGULATOR_SUPPLY("vcc_core", NULL),
}; };
...@@ -202,6 +207,8 @@ static void __init brownstone_init(void) ...@@ -202,6 +207,8 @@ static void __init brownstone_init(void)
/* on-chip devices */ /* on-chip devices */
mmp2_add_uart(1); mmp2_add_uart(1);
mmp2_add_uart(3); mmp2_add_uart(3);
platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&mmp2_device_gpio); platform_device_register(&mmp2_device_gpio);
mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info)); mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(brownstone_twsi1_info));
mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */ mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */
......
...@@ -98,7 +98,7 @@ static struct clk_lookup mmp2_clkregs[] = { ...@@ -98,7 +98,7 @@ static struct clk_lookup mmp2_clkregs[] = {
INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL), INIT_CLKREG(&clk_twsi5, "pxa2xx-i2c.4", NULL),
INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL), INIT_CLKREG(&clk_twsi6, "pxa2xx-i2c.5", NULL),
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), INIT_CLKREG(&clk_gpio, "mmp2-gpio", NULL),
INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"), INIT_CLKREG(&clk_sdh0, "sdhci-pxav3.0", "PXA-SDHCLK"),
INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"), INIT_CLKREG(&clk_sdh1, "sdhci-pxav3.1", "PXA-SDHCLK"),
INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"), INIT_CLKREG(&clk_sdh2, "sdhci-pxav3.2", "PXA-SDHCLK"),
......
...@@ -78,7 +78,7 @@ static struct clk_lookup pxa168_clkregs[] = { ...@@ -78,7 +78,7 @@ static struct clk_lookup pxa168_clkregs[] = {
INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL),
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), INIT_CLKREG(&clk_gpio, "mmp-gpio", NULL),
INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL), INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"), INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"),
INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"), INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"),
......
...@@ -56,7 +56,7 @@ static struct clk_lookup pxa910_clkregs[] = { ...@@ -56,7 +56,7 @@ static struct clk_lookup pxa910_clkregs[] = {
INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL),
INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL),
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL), INIT_CLKREG(&clk_gpio, "mmp-gpio", NULL),
INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"), INIT_CLKREG(&clk_u2o, NULL, "U2OCLK"),
INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL), INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
}; };
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/smc91x.h> #include <linux/smc91x.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -77,6 +78,10 @@ static unsigned long flint_pin_config[] __initdata = { ...@@ -77,6 +78,10 @@ static unsigned long flint_pin_config[] __initdata = {
GPIO160_ND_RDY1, GPIO160_ND_RDY1,
}; };
static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct smc91x_platdata flint_smc91x_info = { static struct smc91x_platdata flint_smc91x_info = {
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
}; };
...@@ -111,6 +116,8 @@ static void __init flint_init(void) ...@@ -111,6 +116,8 @@ static void __init flint_init(void)
/* on-chip devices */ /* on-chip devices */
mmp2_add_uart(1); mmp2_add_uart(1);
mmp2_add_uart(2); mmp2_add_uart(2);
platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&mmp2_device_gpio); platform_device_register(&mmp2_device_gpio);
/* off-chip devices */ /* off-chip devices */
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -128,6 +129,10 @@ static unsigned long gplugd_pin_config[] __initdata = { ...@@ -128,6 +129,10 @@ static unsigned long gplugd_pin_config[] __initdata = {
GPIO116_I2S_TXD GPIO116_I2S_TXD
}; };
static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct i2c_board_info gplugd_i2c_board_info[] = { static struct i2c_board_info gplugd_i2c_board_info[] = {
{ {
.type = "isl1208", .type = "isl1208",
...@@ -186,6 +191,8 @@ static void __init gplugd_init(void) ...@@ -186,6 +191,8 @@ static void __init gplugd_init(void)
pxa168_add_uart(3); pxa168_add_uart(3);
pxa168_add_ssp(1); pxa168_add_ssp(1);
pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info)); pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info));
platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&pxa168_device_gpio); platform_device_register(&pxa168_device_gpio);
pxa168_add_eth(&gplugd_eth_platform_data); pxa168_add_eth(&gplugd_eth_platform_data);
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gpio-pxa.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
...@@ -99,6 +100,10 @@ static unsigned long jasper_pin_config[] __initdata = { ...@@ -99,6 +100,10 @@ static unsigned long jasper_pin_config[] __initdata = {
GPIO151_MMC3_CLK, GPIO151_MMC3_CLK,
}; };
static struct pxa_gpio_platform_data mmp2_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct regulator_consumer_supply max8649_supply[] = { static struct regulator_consumer_supply max8649_supply[] = {
REGULATOR_SUPPLY("vcc_core", NULL), REGULATOR_SUPPLY("vcc_core", NULL),
}; };
...@@ -165,6 +170,9 @@ static void __init jasper_init(void) ...@@ -165,6 +170,9 @@ static void __init jasper_init(void)
mmp2_add_uart(1); mmp2_add_uart(1);
mmp2_add_uart(3); mmp2_add_uart(3);
mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(jasper_twsi1_info)); mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(jasper_twsi1_info));
platform_device_add_data(&mmp2_device_gpio, &mmp2_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&mmp2_device_gpio);
mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */ mmp2_add_sdhost(0, &mmp2_sdh_platdata_mmc0); /* SD/MMC */
regulator_has_full_constraints(); regulator_has_full_constraints();
......
...@@ -28,7 +28,7 @@ static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = { ...@@ -28,7 +28,7 @@ static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4026000, "pxa2xx-uart.2", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
...@@ -39,7 +39,7 @@ static const struct of_dev_auxdata pxa910_auxdata_lookup[] __initconst = { ...@@ -39,7 +39,7 @@ static const struct of_dev_auxdata pxa910_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4036000, "pxa2xx-uart.2", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4037000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
......
...@@ -31,7 +31,7 @@ static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = { ...@@ -31,7 +31,7 @@ static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL), OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4016000, "pxa2xx-uart.3", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4011000, "pxa2xx-i2c.0", NULL),
OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL), OF_DEV_AUXDATA("mrvl,mmp-twsi", 0xd4025000, "pxa2xx-i2c.1", NULL),
OF_DEV_AUXDATA("mrvl,mmp-gpio", 0xd4019000, "pxa-gpio", NULL), OF_DEV_AUXDATA("marvell,mmp-gpio", 0xd4019000, "mmp2-gpio", NULL),
OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL), OF_DEV_AUXDATA("mrvl,mmp-rtc", 0xd4010000, "sa1100-rtc", NULL),
{} {}
}; };
......
...@@ -164,7 +164,7 @@ struct resource mmp2_resource_gpio[] = { ...@@ -164,7 +164,7 @@ struct resource mmp2_resource_gpio[] = {
}; };
struct platform_device mmp2_device_gpio = { struct platform_device mmp2_device_gpio = {
.name = "pxa-gpio", .name = "mmp2-gpio",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(mmp2_resource_gpio), .num_resources = ARRAY_SIZE(mmp2_resource_gpio),
.resource = mmp2_resource_gpio, .resource = mmp2_resource_gpio,
......
...@@ -125,7 +125,7 @@ struct resource pxa168_resource_gpio[] = { ...@@ -125,7 +125,7 @@ struct resource pxa168_resource_gpio[] = {
}; };
struct platform_device pxa168_device_gpio = { struct platform_device pxa168_device_gpio = {
.name = "pxa-gpio", .name = "mmp-gpio",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(pxa168_resource_gpio), .num_resources = ARRAY_SIZE(pxa168_resource_gpio),
.resource = pxa168_resource_gpio, .resource = pxa168_resource_gpio,
......
...@@ -152,7 +152,7 @@ struct resource pxa910_resource_gpio[] = { ...@@ -152,7 +152,7 @@ struct resource pxa910_resource_gpio[] = {
}; };
struct platform_device pxa910_device_gpio = { struct platform_device pxa910_device_gpio = {
.name = "pxa-gpio", .name = "mmp-gpio",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(pxa910_resource_gpio), .num_resources = ARRAY_SIZE(pxa910_resource_gpio),
.resource = pxa910_resource_gpio, .resource = pxa910_resource_gpio,
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* publishhed by the Free Software Foundation. * publishhed by the Free Software Foundation.
*/ */
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -60,6 +61,10 @@ static unsigned long tavorevb_pin_config[] __initdata = { ...@@ -60,6 +61,10 @@ static unsigned long tavorevb_pin_config[] __initdata = {
DF_RDY0_DF_RDY0, DF_RDY0_DF_RDY0,
}; };
static struct pxa_gpio_platform_data pxa910_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct smc91x_platdata tavorevb_smc91x_info = { static struct smc91x_platdata tavorevb_smc91x_info = {
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
}; };
...@@ -93,6 +98,8 @@ static void __init tavorevb_init(void) ...@@ -93,6 +98,8 @@ static void __init tavorevb_init(void)
/* on-chip devices */ /* on-chip devices */
pxa910_add_uart(1); pxa910_add_uart(1);
platform_device_add_data(&pxa910_device_gpio, &pxa910_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&pxa910_device_gpio); platform_device_register(&pxa910_device_gpio);
/* off-chip devices */ /* off-chip devices */
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/platform_data/keypad-pxa27x.h> #include <linux/platform_data/keypad-pxa27x.h>
#include <linux/i2c.h> #include <linux/i2c.h>
...@@ -49,6 +50,10 @@ static unsigned long teton_bga_pin_config[] __initdata = { ...@@ -49,6 +50,10 @@ static unsigned long teton_bga_pin_config[] __initdata = {
GPIO78_GPIO, GPIO78_GPIO,
}; };
static struct pxa_gpio_platform_data pxa168_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static unsigned int teton_bga_matrix_key_map[] = { static unsigned int teton_bga_matrix_key_map[] = {
KEY(0, 6, KEY_ESC), KEY(0, 6, KEY_ESC),
KEY(0, 7, KEY_ENTER), KEY(0, 7, KEY_ENTER),
...@@ -79,6 +84,8 @@ static void __init teton_bga_init(void) ...@@ -79,6 +84,8 @@ static void __init teton_bga_init(void)
pxa168_add_uart(1); pxa168_add_uart(1);
pxa168_add_keypad(&teton_bga_keypad_info); pxa168_add_keypad(&teton_bga_keypad_info);
pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info)); pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(teton_bga_i2c_info));
platform_device_add_data(&pxa168_device_gpio, &pxa168_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_device_register(&pxa168_device_gpio); platform_device_register(&pxa168_device_gpio);
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/i2c/pca953x.h> #include <linux/i2c/pca953x.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-pxa.h>
#include <linux/mfd/88pm860x.h> #include <linux/mfd/88pm860x.h>
#include <linux/platform_data/mv_usb.h> #include <linux/platform_data/mv_usb.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
...@@ -75,6 +76,10 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { ...@@ -75,6 +76,10 @@ static unsigned long ttc_dkb_pin_config[] __initdata = {
DF_RDY0_DF_RDY0, DF_RDY0_DF_RDY0,
}; };
static struct pxa_gpio_platform_data pxa910_gpio_pdata = {
.irq_base = MMP_GPIO_TO_IRQ(0),
};
static struct mtd_partition ttc_dkb_onenand_partitions[] = { static struct mtd_partition ttc_dkb_onenand_partitions[] = {
{ {
.name = "bootloader", .name = "bootloader",
...@@ -278,6 +283,8 @@ static void __init ttc_dkb_init(void) ...@@ -278,6 +283,8 @@ static void __init ttc_dkb_init(void)
/* off-chip devices */ /* off-chip devices */
pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info)); pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info));
platform_device_add_data(&pxa910_device_gpio, &pxa910_gpio_pdata,
sizeof(struct pxa_gpio_platform_data));
platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices)); platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices));
#ifdef CONFIG_USB_MV_UDC #ifdef CONFIG_USB_MV_UDC
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* FIXME correct answer depends on hmc_mode, * FIXME correct answer depends on hmc_mode,
* as does (on omap1) any nonzero value for config->otg port number * as does (on omap1) any nonzero value for config->otg port number
*/ */
#ifdef CONFIG_USB_GADGET_OMAP #if IS_ENABLED(CONFIG_USB_OMAP)
#define is_usb0_device(config) 1 #define is_usb0_device(config) 1
#else #else
#define is_usb0_device(config) 0 #define is_usb0_device(config) 0
......
...@@ -123,7 +123,7 @@ omap_otg_init(struct omap_usb_config *config) ...@@ -123,7 +123,7 @@ omap_otg_init(struct omap_usb_config *config)
syscon = omap_readl(OTG_SYSCON_1); syscon = omap_readl(OTG_SYSCON_1);
syscon |= HST_IDLE_EN|DEV_IDLE_EN|OTG_IDLE_EN; syscon |= HST_IDLE_EN|DEV_IDLE_EN|OTG_IDLE_EN;
#ifdef CONFIG_USB_GADGET_OMAP #if IS_ENABLED(CONFIG_USB_OMAP)
if (config->otg || config->register_dev) { if (config->otg || config->register_dev) {
struct platform_device *udc_device = config->udc_device; struct platform_device *udc_device = config->udc_device;
int status; int status;
...@@ -169,7 +169,7 @@ omap_otg_init(struct omap_usb_config *config) ...@@ -169,7 +169,7 @@ omap_otg_init(struct omap_usb_config *config)
void omap_otg_init(struct omap_usb_config *config) {} void omap_otg_init(struct omap_usb_config *config) {}
#endif #endif
#ifdef CONFIG_USB_GADGET_OMAP #if IS_ENABLED(CONFIG_USB_OMAP)
static struct resource udc_resources[] = { static struct resource udc_resources[] = {
/* order is significant! */ /* order is significant! */
...@@ -600,7 +600,7 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config) ...@@ -600,7 +600,7 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config)
while (!(omap_readw(ULPD_DPLL_CTRL) & DPLL_LOCK)) while (!(omap_readw(ULPD_DPLL_CTRL) & DPLL_LOCK))
cpu_relax(); cpu_relax();
#ifdef CONFIG_USB_GADGET_OMAP #if IS_ENABLED(CONFIG_USB_OMAP)
if (config->register_dev) { if (config->register_dev) {
int status; int status;
......
...@@ -229,7 +229,6 @@ obj-$(CONFIG_MACH_DEVKIT8000) += board-devkit8000.o ...@@ -229,7 +229,6 @@ obj-$(CONFIG_MACH_DEVKIT8000) += board-devkit8000.o
obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o
obj-$(CONFIG_MACH_OMAP3530_LV_SOM) += board-omap3logic.o obj-$(CONFIG_MACH_OMAP3530_LV_SOM) += board-omap3logic.o
obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o
obj-$(CONFIG_MACH_ENCORE) += board-omap3encore.o
obj-$(CONFIG_MACH_OVERO) += board-overo.o obj-$(CONFIG_MACH_OVERO) += board-overo.o
obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o
obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o
...@@ -255,8 +254,6 @@ obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o ...@@ -255,8 +254,6 @@ obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o
obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o
obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o obj-$(CONFIG_MACH_OMAP4_PANDA) += board-omap4panda.o
obj-$(CONFIG_MACH_PCM049) += board-omap4pcm049.o
obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o
obj-$(CONFIG_MACH_CRANEBOARD) += board-am3517crane.o obj-$(CONFIG_MACH_CRANEBOARD) += board-am3517crane.o
......
...@@ -291,6 +291,10 @@ static struct platform_device sdp4430_leds_pwm = { ...@@ -291,6 +291,10 @@ static struct platform_device sdp4430_leds_pwm = {
}, },
}; };
/* Dummy regulator for pwm-backlight driver */
static struct regulator_consumer_supply backlight_supply =
REGULATOR_SUPPLY("enable", "pwm-backlight");
static struct platform_pwm_backlight_data sdp4430_backlight_data = { static struct platform_pwm_backlight_data sdp4430_backlight_data = {
.max_brightness = 127, .max_brightness = 127,
.dft_brightness = 127, .dft_brightness = 127,
...@@ -718,6 +722,8 @@ static void __init omap_4430sdp_init(void) ...@@ -718,6 +722,8 @@ static void __init omap_4430sdp_init(void)
omap4_i2c_init(); omap4_i2c_init();
omap_sfh7741prox_init(); omap_sfh7741prox_init();
regulator_register_always_on(0, "backlight-enable",
&backlight_supply, 1, 0);
platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices));
omap_serial_init(); omap_serial_init();
omap_sdrc_init(NULL, NULL); omap_sdrc_init(NULL, NULL);
......
...@@ -547,12 +547,16 @@ static struct regulator_consumer_supply rx51_vio_supplies[] = { ...@@ -547,12 +547,16 @@ static struct regulator_consumer_supply rx51_vio_supplies[] = {
REGULATOR_SUPPLY("DVDD", "2-0019"), REGULATOR_SUPPLY("DVDD", "2-0019"),
/* Si4713 IO supply */ /* Si4713 IO supply */
REGULATOR_SUPPLY("vio", "2-0063"), REGULATOR_SUPPLY("vio", "2-0063"),
/* lis3lv02d */
REGULATOR_SUPPLY("Vdd_IO", "3-001d"),
}; };
static struct regulator_consumer_supply rx51_vaux1_consumers[] = { static struct regulator_consumer_supply rx51_vaux1_consumers[] = {
REGULATOR_SUPPLY("vdds_sdi", "omapdss"), REGULATOR_SUPPLY("vdds_sdi", "omapdss"),
/* Si4713 supply */ /* Si4713 supply */
REGULATOR_SUPPLY("vdd", "2-0063"), REGULATOR_SUPPLY("vdd", "2-0063"),
/* lis3lv02d */
REGULATOR_SUPPLY("Vdd", "3-001d"),
}; };
static struct regulator_init_data rx51_vaux1 = { static struct regulator_init_data rx51_vaux1 = {
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/i2c/twl.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/platform_data/spi-omap2-mcspi.h> #include <linux/platform_data/spi-omap2-mcspi.h>
#include <video/omapdss.h> #include <video/omapdss.h>
...@@ -49,59 +48,6 @@ static void zoom_panel_disable_lcd(struct omap_dss_device *dssdev) ...@@ -49,59 +48,6 @@ static void zoom_panel_disable_lcd(struct omap_dss_device *dssdev)
{ {
} }
/* Register offsets in TWL4030_MODULE_INTBR */
#define TWL_INTBR_PMBR1 0xD
#define TWL_INTBR_GPBR1 0xC
/* Register offsets in TWL_MODULE_PWM */
#define TWL_LED_PWMON 0x3
#define TWL_LED_PWMOFF 0x4
static int zoom_set_bl_intensity(struct omap_dss_device *dssdev, int level)
{
#ifdef CONFIG_TWL4030_CORE
unsigned char c;
u8 mux_pwm, enb_pwm;
if (level > 100)
return -1;
twl_i2c_read_u8(TWL4030_MODULE_INTBR, &mux_pwm, TWL_INTBR_PMBR1);
twl_i2c_read_u8(TWL4030_MODULE_INTBR, &enb_pwm, TWL_INTBR_GPBR1);
if (level == 0) {
/* disable pwm1 output and clock */
enb_pwm = enb_pwm & 0xF5;
/* change pwm1 pin to gpio pin */
mux_pwm = mux_pwm & 0xCF;
twl_i2c_write_u8(TWL4030_MODULE_INTBR,
enb_pwm, TWL_INTBR_GPBR1);
twl_i2c_write_u8(TWL4030_MODULE_INTBR,
mux_pwm, TWL_INTBR_PMBR1);
return 0;
}
if (!((enb_pwm & 0xA) && (mux_pwm & 0x30))) {
/* change gpio pin to pwm1 pin */
mux_pwm = mux_pwm | 0x30;
/* enable pwm1 output and clock*/
enb_pwm = enb_pwm | 0x0A;
twl_i2c_write_u8(TWL4030_MODULE_INTBR,
mux_pwm, TWL_INTBR_PMBR1);
twl_i2c_write_u8(TWL4030_MODULE_INTBR,
enb_pwm, TWL_INTBR_GPBR1);
}
c = ((50 * (100 - level)) / 100) + 1;
twl_i2c_write_u8(TWL_MODULE_PWM, 0x7F, TWL_LED_PWMOFF);
twl_i2c_write_u8(TWL_MODULE_PWM, c, TWL_LED_PWMON);
#else
pr_warn("Backlight not enabled\n");
#endif
return 0;
}
static struct omap_dss_device zoom_lcd_device = { static struct omap_dss_device zoom_lcd_device = {
.name = "lcd", .name = "lcd",
.driver_name = "NEC_8048_panel", .driver_name = "NEC_8048_panel",
...@@ -109,8 +55,6 @@ static struct omap_dss_device zoom_lcd_device = { ...@@ -109,8 +55,6 @@ static struct omap_dss_device zoom_lcd_device = {
.phy.dpi.data_lines = 24, .phy.dpi.data_lines = 24,
.platform_enable = zoom_panel_enable_lcd, .platform_enable = zoom_panel_enable_lcd,
.platform_disable = zoom_panel_disable_lcd, .platform_disable = zoom_panel_disable_lcd,
.max_backlight_level = 100,
.set_backlight = zoom_set_bl_intensity,
}; };
static struct omap_dss_device *zoom_dss_devices[] = { static struct omap_dss_device *zoom_dss_devices[] = {
......
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
#include <linux/platform_data/gpio-omap.h> #include <linux/platform_data/gpio-omap.h>
#include <linux/platform_data/omap-twl4030.h> #include <linux/platform_data/omap-twl4030.h>
#include <linux/usb/phy.h> #include <linux/usb/phy.h>
#include <linux/pwm.h>
#include <linux/leds_pwm.h>
#include <linux/pwm_backlight.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -193,6 +196,53 @@ static struct platform_device omap_vwlan_device = { ...@@ -193,6 +196,53 @@ static struct platform_device omap_vwlan_device = {
}, },
}; };
static struct pwm_lookup zoom_pwm_lookup[] = {
PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "zoom::keypad"),
PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", "backlight"),
};
static struct led_pwm zoom_pwm_leds[] = {
{
.name = "zoom::keypad",
.max_brightness = 127,
.pwm_period_ns = 7812500,
},
};
static struct led_pwm_platform_data zoom_pwm_data = {
.num_leds = ARRAY_SIZE(zoom_pwm_leds),
.leds = zoom_pwm_leds,
};
static struct platform_device zoom_leds_pwm = {
.name = "leds_pwm",
.id = -1,
.dev = {
.platform_data = &zoom_pwm_data,
},
};
static struct platform_pwm_backlight_data zoom_backlight_data = {
.pwm_id = 1,
.max_brightness = 127,
.dft_brightness = 127,
.pwm_period_ns = 7812500,
};
static struct platform_device zoom_backlight_pwm = {
.name = "pwm-backlight",
.id = -1,
.dev = {
.platform_data = &zoom_backlight_data,
},
};
static struct platform_device *zoom_devices[] __initdata = {
&omap_vwlan_device,
&zoom_leds_pwm,
&zoom_backlight_pwm,
};
static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
.board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */ .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
}; };
...@@ -301,7 +351,8 @@ void __init zoom_peripherals_init(void) ...@@ -301,7 +351,8 @@ void __init zoom_peripherals_init(void)
omap_hsmmc_init(mmc); omap_hsmmc_init(mmc);
omap_i2c_init(); omap_i2c_init();
platform_device_register(&omap_vwlan_device); pwm_add_table(zoom_pwm_lookup, ARRAY_SIZE(zoom_pwm_lookup));
platform_add_devices(zoom_devices, ARRAY_SIZE(zoom_devices));
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb"); usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
usb_musb_init(NULL); usb_musb_init(NULL);
enable_board_wakeup_source(); enable_board_wakeup_source();
......
...@@ -51,11 +51,13 @@ config MACH_LITTLETON ...@@ -51,11 +51,13 @@ config MACH_LITTLETON
config MACH_TAVOREVB config MACH_TAVOREVB
bool "PXA930 Evaluation Board (aka TavorEVB)" bool "PXA930 Evaluation Board (aka TavorEVB)"
select CPU_PXA930 select CPU_PXA930
select CPU_PXA935
select PXA3xx select PXA3xx
config MACH_SAAR config MACH_SAAR
bool "PXA930 Handheld Platform (aka SAAR)" bool "PXA930 Handheld Platform (aka SAAR)"
select CPU_PXA930 select CPU_PXA930
select CPU_PXA935
select PXA3xx select PXA3xx
comment "Third Party Dev Platforms (sorted by vendor name)" comment "Third Party Dev Platforms (sorted by vendor name)"
......
...@@ -1107,8 +1107,33 @@ struct resource pxa_resource_gpio[] = { ...@@ -1107,8 +1107,33 @@ struct resource pxa_resource_gpio[] = {
}, },
}; };
struct platform_device pxa_device_gpio = { struct platform_device pxa25x_device_gpio = {
.name = "pxa-gpio", #ifdef CONFIG_CPU_PXA26x
.name = "pxa26x-gpio",
#else
.name = "pxa25x-gpio",
#endif
.id = -1,
.num_resources = ARRAY_SIZE(pxa_resource_gpio),
.resource = pxa_resource_gpio,
};
struct platform_device pxa27x_device_gpio = {
.name = "pxa27x-gpio",
.id = -1,
.num_resources = ARRAY_SIZE(pxa_resource_gpio),
.resource = pxa_resource_gpio,
};
struct platform_device pxa3xx_device_gpio = {
.name = "pxa3xx-gpio",
.id = -1,
.num_resources = ARRAY_SIZE(pxa_resource_gpio),
.resource = pxa_resource_gpio,
};
struct platform_device pxa93x_device_gpio = {
.name = "pxa93x-gpio",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(pxa_resource_gpio), .num_resources = ARRAY_SIZE(pxa_resource_gpio),
.resource = pxa_resource_gpio, .resource = pxa_resource_gpio,
......
...@@ -16,7 +16,6 @@ extern struct platform_device pxa_device_ficp; ...@@ -16,7 +16,6 @@ extern struct platform_device pxa_device_ficp;
extern struct platform_device sa1100_device_rtc; extern struct platform_device sa1100_device_rtc;
extern struct platform_device pxa_device_rtc; extern struct platform_device pxa_device_rtc;
extern struct platform_device pxa_device_ac97; extern struct platform_device pxa_device_ac97;
extern struct platform_device pxa_device_gpio;
extern struct platform_device pxa27x_device_i2c_power; extern struct platform_device pxa27x_device_i2c_power;
extern struct platform_device pxa27x_device_ohci; extern struct platform_device pxa27x_device_ohci;
...@@ -46,4 +45,9 @@ extern struct platform_device pxa_device_asoc_ssp2; ...@@ -46,4 +45,9 @@ extern struct platform_device pxa_device_asoc_ssp2;
extern struct platform_device pxa_device_asoc_ssp3; extern struct platform_device pxa_device_asoc_ssp3;
extern struct platform_device pxa_device_asoc_ssp4; extern struct platform_device pxa_device_asoc_ssp4;
extern struct platform_device pxa25x_device_gpio;
extern struct platform_device pxa27x_device_gpio;
extern struct platform_device pxa3xx_device_gpio;
extern struct platform_device pxa93x_device_gpio;
void __init pxa_register_device(struct platform_device *dev, void *data); void __init pxa_register_device(struct platform_device *dev, void *data);
/* arch/arm/mach-pxa/include/mach/debug-macro.S
*
* Debugging macro include header
*
* Copyright (C) 1994-1999 Russell King
* Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
*
* 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 "hardware.h"
.macro addruart, rp, rv, tmp
mov \rp, #0x00100000
orr \rv, \rp, #io_p2v(0x40000000) @ virtual
orr \rp, \rp, #0x40000000 @ physical
.endm
#define UART_SHIFT 2
#include <asm/hardware/debug-8250.S>
...@@ -208,7 +208,11 @@ static struct clk_lookup pxa25x_clkregs[] = { ...@@ -208,7 +208,11 @@ static struct clk_lookup pxa25x_clkregs[] = {
INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"), INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"),
INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"), INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"),
INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL), INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL),
INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), #ifdef CONFIG_CPU_PXA26x
INIT_CLKREG(&clk_dummy, "pxa26x-gpio", NULL),
#else
INIT_CLKREG(&clk_dummy, "pxa25x-gpio", NULL),
#endif
INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
}; };
...@@ -340,7 +344,8 @@ void __init pxa25x_map_io(void) ...@@ -340,7 +344,8 @@ void __init pxa25x_map_io(void)
} }
static struct pxa_gpio_platform_data pxa25x_gpio_info __initdata = { static struct pxa_gpio_platform_data pxa25x_gpio_info __initdata = {
.gpio_set_wake = gpio_set_wake, .irq_base = PXA_GPIO_TO_IRQ(0),
.gpio_set_wake = gpio_set_wake,
}; };
static struct platform_device *pxa25x_devices[] __initdata = { static struct platform_device *pxa25x_devices[] __initdata = {
...@@ -375,7 +380,7 @@ static int __init pxa25x_init(void) ...@@ -375,7 +380,7 @@ static int __init pxa25x_init(void)
register_syscore_ops(&pxa2xx_mfp_syscore_ops); register_syscore_ops(&pxa2xx_mfp_syscore_ops);
register_syscore_ops(&pxa2xx_clock_syscore_ops); register_syscore_ops(&pxa2xx_clock_syscore_ops);
pxa_register_device(&pxa_device_gpio, &pxa25x_gpio_info); pxa_register_device(&pxa25x_device_gpio, &pxa25x_gpio_info);
ret = platform_add_devices(pxa25x_devices, ret = platform_add_devices(pxa25x_devices,
ARRAY_SIZE(pxa25x_devices)); ARRAY_SIZE(pxa25x_devices));
if (ret) if (ret)
......
...@@ -237,7 +237,7 @@ static struct clk_lookup pxa27x_clkregs[] = { ...@@ -237,7 +237,7 @@ static struct clk_lookup pxa27x_clkregs[] = {
INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"), INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"),
INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"), INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"),
INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL), INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL),
INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), INIT_CLKREG(&clk_dummy, "pxa27x-gpio", NULL),
INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
}; };
...@@ -431,7 +431,8 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info) ...@@ -431,7 +431,8 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
} }
static struct pxa_gpio_platform_data pxa27x_gpio_info __initdata = { static struct pxa_gpio_platform_data pxa27x_gpio_info __initdata = {
.gpio_set_wake = gpio_set_wake, .irq_base = PXA_GPIO_TO_IRQ(0),
.gpio_set_wake = gpio_set_wake,
}; };
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
...@@ -470,7 +471,7 @@ static int __init pxa27x_init(void) ...@@ -470,7 +471,7 @@ static int __init pxa27x_init(void)
register_syscore_ops(&pxa2xx_mfp_syscore_ops); register_syscore_ops(&pxa2xx_mfp_syscore_ops);
register_syscore_ops(&pxa2xx_clock_syscore_ops); register_syscore_ops(&pxa2xx_clock_syscore_ops);
pxa_register_device(&pxa_device_gpio, &pxa27x_gpio_info); pxa_register_device(&pxa27x_device_gpio, &pxa27x_gpio_info);
ret = platform_add_devices(devices, ARRAY_SIZE(devices)); ret = platform_add_devices(devices, ARRAY_SIZE(devices));
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/gpio-pxa.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/irq.h> #include <linux/irq.h>
...@@ -92,7 +93,8 @@ static struct clk_lookup pxa3xx_clkregs[] = { ...@@ -92,7 +93,8 @@ static struct clk_lookup pxa3xx_clkregs[] = {
INIT_CLKREG(&clk_pxa3xx_mmc1, "pxa2xx-mci.0", NULL), INIT_CLKREG(&clk_pxa3xx_mmc1, "pxa2xx-mci.0", NULL),
INIT_CLKREG(&clk_pxa3xx_mmc2, "pxa2xx-mci.1", NULL), INIT_CLKREG(&clk_pxa3xx_mmc2, "pxa2xx-mci.1", NULL),
INIT_CLKREG(&clk_pxa3xx_smemc, "pxa2xx-pcmcia", NULL), INIT_CLKREG(&clk_pxa3xx_smemc, "pxa2xx-pcmcia", NULL),
INIT_CLKREG(&clk_pxa3xx_gpio, "pxa-gpio", NULL), INIT_CLKREG(&clk_pxa3xx_gpio, "pxa3xx-gpio", NULL),
INIT_CLKREG(&clk_pxa3xx_gpio, "pxa93x-gpio", NULL),
INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
}; };
...@@ -435,8 +437,11 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info) ...@@ -435,8 +437,11 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info)
pxa_register_device(&pxa3xx_device_i2c_power, info); pxa_register_device(&pxa3xx_device_i2c_power, info);
} }
static struct pxa_gpio_platform_data pxa3xx_gpio_pdata = {
.irq_base = PXA_GPIO_TO_IRQ(0),
};
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&pxa_device_gpio,
&pxa27x_device_udc, &pxa27x_device_udc,
&pxa_device_pmu, &pxa_device_pmu,
&pxa_device_i2s, &pxa_device_i2s,
...@@ -482,8 +487,18 @@ static int __init pxa3xx_init(void) ...@@ -482,8 +487,18 @@ static int __init pxa3xx_init(void)
register_syscore_ops(&pxa3xx_mfp_syscore_ops); register_syscore_ops(&pxa3xx_mfp_syscore_ops);
register_syscore_ops(&pxa3xx_clock_syscore_ops); register_syscore_ops(&pxa3xx_clock_syscore_ops);
if (!of_have_populated_dt()) if (of_have_populated_dt())
ret = platform_add_devices(devices, ARRAY_SIZE(devices)); return 0;
ret = platform_add_devices(devices, ARRAY_SIZE(devices));
if (ret)
return ret;
if (cpu_is_pxa300() || cpu_is_pxa310() || cpu_is_pxa320()) {
platform_device_add_data(&pxa3xx_device_gpio,
&pxa3xx_gpio_pdata,
sizeof(pxa3xx_gpio_pdata));
ret = platform_device_register(&pxa3xx_device_gpio);
}
} }
return ret; return ret;
......
...@@ -12,12 +12,15 @@ ...@@ -12,12 +12,15 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/irq.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/irq.h>
#include <linux/gpio-pxa.h>
#include <linux/platform_device.h>
#include <mach/pxa930.h> #include <mach/pxa930.h>
#include "devices.h"
static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = { static struct mfp_addr_map pxa930_mfp_addr_map[] __initdata = {
MFP_ADDR(GPIO0, 0x02e0), MFP_ADDR(GPIO0, 0x02e0),
...@@ -190,11 +193,21 @@ static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = { ...@@ -190,11 +193,21 @@ static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = {
MFP_ADDR_END, MFP_ADDR_END,
}; };
static struct pxa_gpio_platform_data pxa93x_gpio_pdata = {
.irq_base = PXA_GPIO_TO_IRQ(0),
};
static int __init pxa930_init(void) static int __init pxa930_init(void)
{ {
int ret = 0;
if (cpu_is_pxa93x()) { if (cpu_is_pxa93x()) {
mfp_init_base(io_p2v(MFPR_BASE)); mfp_init_base(io_p2v(MFPR_BASE));
mfp_init_addr(pxa930_mfp_addr_map); mfp_init_addr(pxa930_mfp_addr_map);
platform_device_add_data(&pxa93x_device_gpio,
&pxa93x_gpio_pdata,
sizeof(pxa93x_gpio_pdata));
ret = platform_device_register(&pxa93x_device_gpio);
} }
if (cpu_is_pxa935()) if (cpu_is_pxa935())
......
...@@ -104,6 +104,19 @@ config MACH_MARZEN ...@@ -104,6 +104,19 @@ config MACH_MARZEN
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select REGULATOR_FIXED_VOLTAGE if REGULATOR select REGULATOR_FIXED_VOLTAGE if REGULATOR
config MACH_MARZEN_REFERENCE
bool "MARZEN board - Reference Device Tree Implementation"
depends on ARCH_R8A7779
select ARCH_REQUIRE_GPIOLIB
select REGULATOR_FIXED_VOLTAGE if REGULATOR
select USE_OF
---help---
Use reference implementation of Marzen board support
which makes use of device tree at the expense
of not supporting a number of devices.
This is intended to aid developers
config MACH_KZM9D config MACH_KZM9D
bool "KZM9D board" bool "KZM9D board"
depends on ARCH_EMEV2 depends on ARCH_EMEV2
...@@ -118,6 +131,20 @@ config MACH_KZM9G ...@@ -118,6 +131,20 @@ config MACH_KZM9G
select SND_SOC_AK4642 if SND_SIMPLE_CARD select SND_SOC_AK4642 if SND_SIMPLE_CARD
select USE_OF select USE_OF
config MACH_KZM9G_REFERENCE
bool "KZM-A9-GT board - Reference Device Tree Implementation"
depends on ARCH_SH73A0
select ARCH_REQUIRE_GPIOLIB
select REGULATOR_FIXED_VOLTAGE if REGULATOR
select SND_SOC_AK4642 if SND_SIMPLE_CARD
select USE_OF
---help---
Use reference implementation of KZM-A9-GT board support
which makes as greater use of device tree at the expense
of not supporting a number of devices.
This is intended to aid developers
comment "SH-Mobile System Configuration" comment "SH-Mobile System Configuration"
config CPU_HAS_INTEVT config CPU_HAS_INTEVT
......
...@@ -38,9 +38,11 @@ obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o ...@@ -38,9 +38,11 @@ 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_MARZEN) += board-marzen.o obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.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
obj-$(CONFIG_MACH_KZM9G_REFERENCE) += board-kzm9g-reference.o
# Framework support # Framework support
obj-$(CONFIG_SMP) += $(smp-y) obj-$(CONFIG_SMP) += $(smp-y)
...@@ -29,8 +29,10 @@ ...@@ -29,8 +29,10 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/regulator/driver.h>
#include <linux/pinctrl/machine.h> #include <linux/pinctrl/machine.h>
#include <linux/regulator/fixed.h> #include <linux/regulator/fixed.h>
#include <linux/regulator/gpio-regulator.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/sh_eth.h> #include <linux/sh_eth.h>
#include <linux/videodev2.h> #include <linux/videodev2.h>
...@@ -560,15 +562,119 @@ static struct platform_device gpio_keys_device = { ...@@ -560,15 +562,119 @@ static struct platform_device gpio_keys_device = {
}, },
}; };
/* Fixed 3.3V regulator to be used by SDHI0, SDHI1, MMCIF */ /* Fixed 3.3V regulator to be used by SDHI1, MMCIF */
static struct regulator_consumer_supply fixed3v3_power_consumers[] = static struct regulator_consumer_supply fixed3v3_power_consumers[] = {
{ REGULATOR_SUPPLY("vmmc", "sh_mmcif"),
REGULATOR_SUPPLY("vqmmc", "sh_mmcif"),
};
/* Fixed 3.3V regulator to be used by SDHI0 */
static struct regulator_consumer_supply vcc_sdhi0_consumers[] = {
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
};
static struct regulator_init_data vcc_sdhi0_init_data = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers),
.consumer_supplies = vcc_sdhi0_consumers,
};
static struct fixed_voltage_config vcc_sdhi0_info = {
.supply_name = "SDHI0 Vcc",
.microvolts = 3300000,
.gpio = GPIO_PORT75,
.enable_high = 1,
.init_data = &vcc_sdhi0_init_data,
};
static struct platform_device vcc_sdhi0 = {
.name = "reg-fixed-voltage",
.id = 1,
.dev = {
.platform_data = &vcc_sdhi0_info,
},
};
/* 1.8 / 3.3V SDHI0 VccQ regulator */
static struct regulator_consumer_supply vccq_sdhi0_consumers[] = {
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"),
};
static struct regulator_init_data vccq_sdhi0_init_data = {
.constraints = {
.input_uV = 3300000,
.min_uV = 1800000,
.max_uV = 3300000,
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = ARRAY_SIZE(vccq_sdhi0_consumers),
.consumer_supplies = vccq_sdhi0_consumers,
};
static struct gpio vccq_sdhi0_gpios[] = {
{GPIO_PORT17, GPIOF_OUT_INIT_LOW, "vccq-sdhi0" },
};
static struct gpio_regulator_state vccq_sdhi0_states[] = {
{ .value = 3300000, .gpios = (0 << 0) },
{ .value = 1800000, .gpios = (1 << 0) },
};
static struct gpio_regulator_config vccq_sdhi0_info = {
.supply_name = "vqmmc",
.enable_gpio = GPIO_PORT74,
.enable_high = 1,
.enabled_at_boot = 0,
.gpios = vccq_sdhi0_gpios,
.nr_gpios = ARRAY_SIZE(vccq_sdhi0_gpios),
.states = vccq_sdhi0_states,
.nr_states = ARRAY_SIZE(vccq_sdhi0_states),
.type = REGULATOR_VOLTAGE,
.init_data = &vccq_sdhi0_init_data,
};
static struct platform_device vccq_sdhi0 = {
.name = "gpio-regulator",
.id = -1,
.dev = {
.platform_data = &vccq_sdhi0_info,
},
};
/* Fixed 3.3V regulator to be used by SDHI1 */
static struct regulator_consumer_supply vcc_sdhi1_consumers[] = {
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"),
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.1"), };
REGULATOR_SUPPLY("vmmc", "sh_mmcif"),
REGULATOR_SUPPLY("vqmmc", "sh_mmcif"), static struct regulator_init_data vcc_sdhi1_init_data = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = ARRAY_SIZE(vcc_sdhi1_consumers),
.consumer_supplies = vcc_sdhi1_consumers,
};
static struct fixed_voltage_config vcc_sdhi1_info = {
.supply_name = "SDHI1 Vcc",
.microvolts = 3300000,
.gpio = GPIO_PORT16,
.enable_high = 1,
.init_data = &vcc_sdhi1_init_data,
};
static struct platform_device vcc_sdhi1 = {
.name = "reg-fixed-voltage",
.id = 2,
.dev = {
.platform_data = &vcc_sdhi1_info,
},
}; };
/* SDHI0 */ /* SDHI0 */
...@@ -584,10 +690,10 @@ static struct regulator_consumer_supply fixed3v3_power_consumers[] = ...@@ -584,10 +690,10 @@ static struct regulator_consumer_supply fixed3v3_power_consumers[] =
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,
.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_POWER_OFF_CARD,
.tmio_ocr_mask = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34, .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD,
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, .cd_gpio = GPIO_PORT167,
}; };
static struct resource sdhi0_resources[] = { static struct resource sdhi0_resources[] = {
...@@ -626,9 +732,11 @@ static struct platform_device sdhi0_device = { ...@@ -626,9 +732,11 @@ static struct platform_device sdhi0_device = {
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_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
.tmio_ocr_mask = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34, MMC_CAP_POWER_OFF_CARD,
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD,
/* Port72 cannot generate IRQs, will be used in polling mode. */
.cd_gpio = GPIO_PORT72,
}; };
static struct resource sdhi1_resources[] = { static struct resource sdhi1_resources[] = {
...@@ -676,7 +784,6 @@ static const struct pinctrl_map eva_sdhi1_pinctrl_map[] = { ...@@ -676,7 +784,6 @@ static const struct pinctrl_map eva_sdhi1_pinctrl_map[] = {
/* MMCIF */ /* MMCIF */
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_NONREMOVABLE, MMC_CAP_NONREMOVABLE,
...@@ -924,6 +1031,8 @@ static struct platform_device *eva_devices[] __initdata = { ...@@ -924,6 +1031,8 @@ static struct platform_device *eva_devices[] __initdata = {
&lcdc0_device, &lcdc0_device,
&gpio_keys_device, &gpio_keys_device,
&sh_eth_device, &sh_eth_device,
&vcc_sdhi0,
&vccq_sdhi0,
&sdhi0_device, &sdhi0_device,
&sh_mmcif_device, &sh_mmcif_device,
&hdmi_device, &hdmi_device,
...@@ -1067,13 +1176,6 @@ static void __init eva_init(void) ...@@ -1067,13 +1176,6 @@ static void __init eva_init(void)
usb = &usbhsf_device; usb = &usbhsf_device;
} }
/* SDHI0 */
gpio_request_one(17, GPIOF_OUT_INIT_LOW, NULL); /* SDHI0_18/33_B */
gpio_request_one(74, GPIOF_OUT_INIT_HIGH, NULL); /* SDHI0_PON */
gpio_request_one(75, GPIOF_OUT_INIT_HIGH, NULL); /* SDSLOT1_PON */
/* we can use GPIO_FN_IRQ31_PORT167 here for SDHI0 CD irq */
/* CEU0 */ /* CEU0 */
gpio_request(GPIO_FN_VIO0_D7, NULL); gpio_request(GPIO_FN_VIO0_D7, NULL);
gpio_request(GPIO_FN_VIO0_D6, NULL); gpio_request(GPIO_FN_VIO0_D6, NULL);
...@@ -1134,9 +1236,7 @@ static void __init eva_init(void) ...@@ -1134,9 +1236,7 @@ static void __init eva_init(void)
pinctrl_register_mappings(eva_sdhi1_pinctrl_map, pinctrl_register_mappings(eva_sdhi1_pinctrl_map,
ARRAY_SIZE(eva_sdhi1_pinctrl_map)); ARRAY_SIZE(eva_sdhi1_pinctrl_map));
/* SDSLOT2_PON */ platform_device_register(&vcc_sdhi1);
gpio_request_one(16, GPIOF_OUT_INIT_HIGH, NULL);
platform_device_register(&sdhi1_device); platform_device_register(&sdhi1_device);
} }
......
/*
* KZM-A9-GT board support - Reference Device Tree Implementation
*
* Copyright (C) 2012 Horms Solutions Ltd.
*
* Based on board-kzm9g.c
* Copyright (C) 2012 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/delay.h>
#include <linux/gpio.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/irqchip.h>
#include <linux/input.h>
#include <linux/of_platform.h>
#include <linux/pinctrl/machine.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <mach/sh73a0.h>
#include <mach/common.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
static unsigned long pin_pullup_conf[] = {
PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_UP, 0),
};
static const struct pinctrl_map kzm_pinctrl_map[] = {
PIN_MAP_MUX_GROUP_DEFAULT("e6826000.i2c", "pfc-sh73a0",
"i2c3_1", "i2c3"),
/* MMCIF */
PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
"mmc0_data8_0", "mmc0"),
PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
"mmc0_ctrl_0", "mmc0"),
PIN_MAP_CONFIGS_PIN_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
"PORT279", pin_pullup_conf),
PIN_MAP_CONFIGS_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
"mmc0_data8_0", pin_pullup_conf),
/* SCIFA4 */
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0",
"scifa4_data", "scifa4"),
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0",
"scifa4_ctrl", "scifa4"),
/* SDHI0 */
PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
"sdhi0_data4", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
"sdhi0_ctrl", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
"sdhi0_cd", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
"sdhi0_wp", "sdhi0"),
/* SDHI2 */
PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0",
"sdhi2_data4", "sdhi2"),
PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0",
"sdhi2_ctrl", "sdhi2"),
};
static void __init kzm_init(void)
{
sh73a0_add_standard_devices_dt();
pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map));
sh73a0_pinmux_init();
/* enable SD */
gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL);
gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */
gpio_request_one(14, GPIOF_OUT_INIT_HIGH, NULL); /* power */
#ifdef CONFIG_CACHE_L2X0
/* Early BRESP enable, Shared attribute override enable, 64K*8way */
l2x0_init(IOMEM(0xf0100000), 0x40460000, 0x82000fff);
#endif
}
static const char *kzm9g_boards_compat_dt[] __initdata = {
"renesas,kzm9g-reference",
NULL,
};
DT_MACHINE_START(KZM9G_DT, "kzm9g-reference")
.smp = smp_ops(sh73a0_smp_ops),
.map_io = sh73a0_map_io,
.init_early = sh73a0_init_delay,
.nr_irqs = NR_IRQS_LEGACY,
.init_irq = irqchip_init,
.init_machine = kzm_init,
.init_time = shmobile_timer_init,
.dt_compat = kzm9g_boards_compat_dt,
MACHINE_END
...@@ -63,8 +63,8 @@ ...@@ -63,8 +63,8 @@
/* Dummy supplies, where voltage doesn't matter */ /* Dummy supplies, where voltage doesn't matter */
static struct regulator_consumer_supply dummy_supplies[] = { static struct regulator_consumer_supply dummy_supplies[] = {
REGULATOR_SUPPLY("vddvario", "smsc911x"), REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
REGULATOR_SUPPLY("vdd33a", "smsc911x"), REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
}; };
/* /*
...@@ -379,13 +379,64 @@ static struct platform_device mmc_device = { ...@@ -379,13 +379,64 @@ static struct platform_device mmc_device = {
.resource = sh_mmcif_resources, .resource = sh_mmcif_resources,
}; };
/* Fixed 2.8V regulators to be used by SDHI0 and SDHI2 */ /* Fixed 3.3V regulators to be used by SDHI0 */
static struct regulator_consumer_supply fixed2v8_power_consumers[] = static struct regulator_consumer_supply vcc_sdhi0_consumers[] =
{ {
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), };
static struct regulator_init_data vcc_sdhi0_init_data = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers),
.consumer_supplies = vcc_sdhi0_consumers,
};
static struct fixed_voltage_config vcc_sdhi0_info = {
.supply_name = "SDHI0 Vcc",
.microvolts = 3300000,
.gpio = 15,
.enable_high = 1,
.init_data = &vcc_sdhi0_init_data,
};
static struct platform_device vcc_sdhi0 = {
.name = "reg-fixed-voltage",
.id = 0,
.dev = {
.platform_data = &vcc_sdhi0_info,
},
};
/* Fixed 3.3V regulators to be used by SDHI2 */
static struct regulator_consumer_supply vcc_sdhi2_consumers[] =
{
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"), REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"),
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.2"), };
static struct regulator_init_data vcc_sdhi2_init_data = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = ARRAY_SIZE(vcc_sdhi2_consumers),
.consumer_supplies = vcc_sdhi2_consumers,
};
static struct fixed_voltage_config vcc_sdhi2_info = {
.supply_name = "SDHI2 Vcc",
.microvolts = 3300000,
.gpio = 14,
.enable_high = 1,
.init_data = &vcc_sdhi2_init_data,
};
static struct platform_device vcc_sdhi2 = {
.name = "reg-fixed-voltage",
.id = 1,
.dev = {
.platform_data = &vcc_sdhi2_info,
},
}; };
/* SDHI */ /* SDHI */
...@@ -393,8 +444,8 @@ static struct sh_mobile_sdhi_info sdhi0_info = { ...@@ -393,8 +444,8 @@ 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,
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
.tmio_caps = MMC_CAP_SD_HIGHSPEED, .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
.tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, MMC_CAP_POWER_OFF_CARD,
}; };
static struct resource sdhi0_resources[] = { static struct resource sdhi0_resources[] = {
...@@ -437,8 +488,7 @@ static struct sh_mobile_sdhi_info sdhi2_info = { ...@@ -437,8 +488,7 @@ static struct sh_mobile_sdhi_info sdhi2_info = {
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
TMIO_MMC_USE_GPIO_CD | TMIO_MMC_USE_GPIO_CD |
TMIO_MMC_WRPROTECT_DISABLE, TMIO_MMC_WRPROTECT_DISABLE,
.tmio_caps = MMC_CAP_SD_HIGHSPEED, .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_POWER_OFF_CARD,
.tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29,
.cd_gpio = 13, .cd_gpio = 13,
}; };
...@@ -598,6 +648,8 @@ static struct platform_device *kzm_devices[] __initdata = { ...@@ -598,6 +648,8 @@ static struct platform_device *kzm_devices[] __initdata = {
&usbhs_device, &usbhs_device,
&lcdc_device, &lcdc_device,
&mmc_device, &mmc_device,
&vcc_sdhi0,
&vcc_sdhi2,
&sdhi0_device, &sdhi0_device,
&sdhi2_device, &sdhi2_device,
&gpio_keys_device, &gpio_keys_device,
...@@ -718,11 +770,9 @@ device_initcall(as3711_enable_lcdc_backlight); ...@@ -718,11 +770,9 @@ device_initcall(as3711_enable_lcdc_backlight);
static void __init kzm_init(void) static void __init kzm_init(void)
{ {
regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers, regulator_register_always_on(2, "fixed-1.8V", fixed1v8_power_consumers,
ARRAY_SIZE(fixed1v8_power_consumers), 1800000); ARRAY_SIZE(fixed1v8_power_consumers), 1800000);
regulator_register_always_on(1, "fixed-2.8V", fixed2v8_power_consumers, regulator_register_fixed(3, dummy_supplies, ARRAY_SIZE(dummy_supplies));
ARRAY_SIZE(fixed2v8_power_consumers), 2800000);
regulator_register_fixed(2, dummy_supplies, ARRAY_SIZE(dummy_supplies));
pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map)); pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map));
...@@ -740,10 +790,6 @@ static void __init kzm_init(void) ...@@ -740,10 +790,6 @@ static void __init kzm_init(void)
/* enable SD */ /* enable SD */
gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL); gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON, NULL);
gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */
/* enable Micro SD */
gpio_request_one(14, GPIOF_OUT_INIT_HIGH, NULL); /* power */
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
/* Early BRESP enable, Shared attribute override enable, 64K*8way */ /* Early BRESP enable, Shared attribute override enable, 64K*8way */
......
...@@ -1149,7 +1149,7 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = { ...@@ -1149,7 +1149,7 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = {
.slave_id_rx = SHDMA_SLAVE_MMCIF_RX, .slave_id_rx = SHDMA_SLAVE_MMCIF_RX,
}; };
static struct platform_device sh_mmcif_device = { static struct platform_device sh_mmcif_device __maybe_unused = {
.name = "sh_mmcif", .name = "sh_mmcif",
.id = 0, .id = 0,
.dev = { .dev = {
......
/*
* marzen board support - Reference DT implementation
*
* Copyright (C) 2011 Renesas Solutions Corp.
* Copyright (C) 2011 Magnus Damm
* Copyright (C) 2013 Simon Horman
*
* 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/pinctrl/machine.h>
#include <mach/r8a7779.h>
#include <mach/common.h>
#include <mach/irqs.h>
#include <asm/irq.h>
#include <asm/mach/arch.h>
static const struct pinctrl_map marzen_pinctrl_map[] = {
/* SCIF2 (CN18: DEBUG0) */
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.2", "pfc-r8a7779",
"scif2_data_c", "scif2"),
/* SCIF4 (CN19: DEBUG1) */
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-r8a7779",
"scif4_data", "scif4"),
/* SDHI0 */
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
"sdhi0_data4", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
"sdhi0_ctrl", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
"sdhi0_cd", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
"sdhi0_wp", "sdhi0"),
/* SMSC */
PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779",
"intc_irq1_b", "intc"),
PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779",
"lbsc_ex_cs0", "lbsc"),
};
static void __init marzen_init(void)
{
pinctrl_register_mappings(marzen_pinctrl_map,
ARRAY_SIZE(marzen_pinctrl_map));
r8a7779_pinmux_init();
r8a7779_add_standard_devices_dt();
}
static const char *marzen_boards_compat_dt[] __initdata = {
"renesas,marzen-reference",
NULL,
};
DT_MACHINE_START(MARZEN, "marzen")
.smp = smp_ops(r8a7779_smp_ops),
.map_io = r8a7779_map_io,
.init_early = r8a7779_init_delay,
.nr_irqs = NR_IRQS_LEGACY,
.init_irq = r8a7779_init_irq_dt,
.init_machine = marzen_init,
.init_time = shmobile_timer_init,
.dt_compat = marzen_boards_compat_dt,
MACHINE_END
...@@ -67,7 +67,7 @@ static struct resource smsc911x_resources[] = { ...@@ -67,7 +67,7 @@ static struct resource smsc911x_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(28), /* IRQ 1 */ .start = gic_iid(0x3c), /* IRQ 1 */
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
...@@ -97,7 +97,7 @@ static struct resource sdhi0_resources[] = { ...@@ -97,7 +97,7 @@ static struct resource sdhi0_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(104), .start = gic_iid(0x88),
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
...@@ -215,7 +215,7 @@ static struct resource ehci0_resources[] = { ...@@ -215,7 +215,7 @@ static struct resource ehci0_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(44), .start = gic_iid(0x4c),
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
...@@ -239,7 +239,7 @@ static struct resource ehci1_resources[] = { ...@@ -239,7 +239,7 @@ static struct resource ehci1_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(45), .start = gic_iid(0x4d),
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
...@@ -269,7 +269,7 @@ static struct resource ohci0_resources[] = { ...@@ -269,7 +269,7 @@ static struct resource ohci0_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(44), .start = gic_iid(0x4c),
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
...@@ -293,7 +293,7 @@ static struct resource ohci1_resources[] = { ...@@ -293,7 +293,7 @@ static struct resource ohci1_resources[] = {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = gic_spi(45), .start = gic_iid(0x4d),
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
......
...@@ -221,7 +221,7 @@ void __init mmp2_clk_init(void) ...@@ -221,7 +221,7 @@ void __init mmp2_clk_init(void)
clk = mmp_clk_register_apbc("gpio", "vctcxo", clk = mmp_clk_register_apbc("gpio", "vctcxo",
apbc_base + APBC_GPIO, 10, 0, &clk_lock); apbc_base + APBC_GPIO, 10, 0, &clk_lock);
clk_register_clkdev(clk, NULL, "pxa-gpio"); clk_register_clkdev(clk, NULL, "mmp2-gpio");
clk = mmp_clk_register_apbc("kpc", "clk32", clk = mmp_clk_register_apbc("kpc", "clk32",
apbc_base + APBC_KPC, 10, 0, &clk_lock); apbc_base + APBC_KPC, 10, 0, &clk_lock);
......
...@@ -172,7 +172,7 @@ void __init pxa168_clk_init(void) ...@@ -172,7 +172,7 @@ void __init pxa168_clk_init(void)
clk = mmp_clk_register_apbc("gpio", "vctcxo", clk = mmp_clk_register_apbc("gpio", "vctcxo",
apbc_base + APBC_GPIO, 10, 0, &clk_lock); apbc_base + APBC_GPIO, 10, 0, &clk_lock);
clk_register_clkdev(clk, NULL, "pxa-gpio"); clk_register_clkdev(clk, NULL, "mmp-gpio");
clk = mmp_clk_register_apbc("kpc", "clk32", clk = mmp_clk_register_apbc("kpc", "clk32",
apbc_base + APBC_KPC, 10, 0, &clk_lock); apbc_base + APBC_KPC, 10, 0, &clk_lock);
......
...@@ -177,7 +177,7 @@ void __init pxa910_clk_init(void) ...@@ -177,7 +177,7 @@ void __init pxa910_clk_init(void)
clk = mmp_clk_register_apbc("gpio", "vctcxo", clk = mmp_clk_register_apbc("gpio", "vctcxo",
apbc_base + APBC_GPIO, 10, 0, &clk_lock); apbc_base + APBC_GPIO, 10, 0, &clk_lock);
clk_register_clkdev(clk, NULL, "pxa-gpio"); clk_register_clkdev(clk, NULL, "mmp-gpio");
clk = mmp_clk_register_apbc("kpc", "clk32", clk = mmp_clk_register_apbc("kpc", "clk32",
apbc_base + APBC_KPC, 10, 0, &clk_lock); apbc_base + APBC_KPC, 10, 0, &clk_lock);
......
...@@ -85,20 +85,61 @@ struct pxa_gpio_chip { ...@@ -85,20 +85,61 @@ struct pxa_gpio_chip {
#endif #endif
}; };
enum { enum pxa_gpio_type {
PXA25X_GPIO = 0, PXA25X_GPIO = 0,
PXA26X_GPIO, PXA26X_GPIO,
PXA27X_GPIO, PXA27X_GPIO,
PXA3XX_GPIO, PXA3XX_GPIO,
PXA93X_GPIO, PXA93X_GPIO,
MMP_GPIO = 0x10, MMP_GPIO = 0x10,
MMP2_GPIO,
};
struct pxa_gpio_id {
enum pxa_gpio_type type;
int gpio_nums;
}; };
static DEFINE_SPINLOCK(gpio_lock); static DEFINE_SPINLOCK(gpio_lock);
static struct pxa_gpio_chip *pxa_gpio_chips; static struct pxa_gpio_chip *pxa_gpio_chips;
static int gpio_type; static enum pxa_gpio_type gpio_type;
static void __iomem *gpio_reg_base; static void __iomem *gpio_reg_base;
static struct pxa_gpio_id pxa25x_id = {
.type = PXA25X_GPIO,
.gpio_nums = 85,
};
static struct pxa_gpio_id pxa26x_id = {
.type = PXA26X_GPIO,
.gpio_nums = 90,
};
static struct pxa_gpio_id pxa27x_id = {
.type = PXA27X_GPIO,
.gpio_nums = 121,
};
static struct pxa_gpio_id pxa3xx_id = {
.type = PXA3XX_GPIO,
.gpio_nums = 128,
};
static struct pxa_gpio_id pxa93x_id = {
.type = PXA93X_GPIO,
.gpio_nums = 192,
};
static struct pxa_gpio_id mmp_id = {
.type = MMP_GPIO,
.gpio_nums = 128,
};
static struct pxa_gpio_id mmp2_id = {
.type = MMP2_GPIO,
.gpio_nums = 192,
};
#define for_each_gpio_chip(i, c) \ #define for_each_gpio_chip(i, c) \
for (i = 0, c = &pxa_gpio_chips[0]; i <= pxa_last_gpio; i += 32, c++) for (i = 0, c = &pxa_gpio_chips[0]; i <= pxa_last_gpio; i += 32, c++)
...@@ -431,47 +472,39 @@ static struct irq_chip pxa_muxed_gpio_chip = { ...@@ -431,47 +472,39 @@ static struct irq_chip pxa_muxed_gpio_chip = {
.irq_set_wake = pxa_gpio_set_wake, .irq_set_wake = pxa_gpio_set_wake,
}; };
static int pxa_gpio_nums(void) static int pxa_gpio_nums(struct platform_device *pdev)
{ {
const struct platform_device_id *id = platform_get_device_id(pdev);
struct pxa_gpio_id *pxa_id = (struct pxa_gpio_id *)id->driver_data;
int count = 0; int count = 0;
#ifdef CONFIG_ARCH_PXA switch (pxa_id->type) {
if (cpu_is_pxa25x()) { case PXA25X_GPIO:
#ifdef CONFIG_CPU_PXA26x case PXA26X_GPIO:
count = 89; case PXA27X_GPIO:
gpio_type = PXA26X_GPIO; case PXA3XX_GPIO:
#elif defined(CONFIG_PXA25x) case PXA93X_GPIO:
count = 84; case MMP_GPIO:
gpio_type = PXA26X_GPIO; case MMP2_GPIO:
#endif /* CONFIG_CPU_PXA26x */ gpio_type = pxa_id->type;
} else if (cpu_is_pxa27x()) { count = pxa_id->gpio_nums - 1;
count = 120; break;
gpio_type = PXA27X_GPIO; default:
} else if (cpu_is_pxa93x()) { count = -EINVAL;
count = 191; break;
gpio_type = PXA93X_GPIO;
} else if (cpu_is_pxa3xx()) {
count = 127;
gpio_type = PXA3XX_GPIO;
}
#endif /* CONFIG_ARCH_PXA */
#ifdef CONFIG_ARCH_MMP
if (cpu_is_pxa168() || cpu_is_pxa910()) {
count = 127;
gpio_type = MMP_GPIO;
} else if (cpu_is_mmp2()) {
count = 191;
gpio_type = MMP_GPIO;
} }
#endif /* CONFIG_ARCH_MMP */
return count; return count;
} }
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_device_id pxa_gpio_dt_ids[] = { static struct of_device_id pxa_gpio_dt_ids[] = {
{ .compatible = "mrvl,pxa-gpio" }, { .compatible = "intel,pxa25x-gpio", .data = &pxa25x_id, },
{ .compatible = "mrvl,mmp-gpio", .data = (void *)MMP_GPIO }, { .compatible = "intel,pxa26x-gpio", .data = &pxa26x_id, },
{ .compatible = "intel,pxa27x-gpio", .data = &pxa27x_id, },
{ .compatible = "intel,pxa3xx-gpio", .data = &pxa3xx_id, },
{ .compatible = "marvell,pxa93x-gpio", .data = &pxa93x_id, },
{ .compatible = "marvell,mmp-gpio", .data = &mmp_id, },
{ .compatible = "marvell,mmp2-gpio", .data = &mmp2_id, },
{} {}
}; };
...@@ -491,16 +524,18 @@ const struct irq_domain_ops pxa_irq_domain_ops = { ...@@ -491,16 +524,18 @@ const struct irq_domain_ops pxa_irq_domain_ops = {
static int pxa_gpio_probe_dt(struct platform_device *pdev) static int pxa_gpio_probe_dt(struct platform_device *pdev)
{ {
int ret, nr_banks, nr_gpios; int ret, nr_gpios;
struct device_node *prev, *next, *np = pdev->dev.of_node; struct device_node *prev, *next, *np = pdev->dev.of_node;
const struct of_device_id *of_id = const struct of_device_id *of_id =
of_match_device(pxa_gpio_dt_ids, &pdev->dev); of_match_device(pxa_gpio_dt_ids, &pdev->dev);
const struct pxa_gpio_id *gpio_id;
if (!of_id) { if (!of_id || !of_id->data) {
dev_err(&pdev->dev, "Failed to find gpio controller\n"); dev_err(&pdev->dev, "Failed to find gpio controller\n");
return -EFAULT; return -EFAULT;
} }
gpio_type = (int)of_id->data; gpio_id = of_id->data;
gpio_type = gpio_id->type;
next = of_get_next_child(np, NULL); next = of_get_next_child(np, NULL);
prev = next; prev = next;
...@@ -509,14 +544,8 @@ static int pxa_gpio_probe_dt(struct platform_device *pdev) ...@@ -509,14 +544,8 @@ static int pxa_gpio_probe_dt(struct platform_device *pdev)
ret = -EINVAL; ret = -EINVAL;
goto err; goto err;
} }
for (nr_banks = 1; ; nr_banks++) {
next = of_get_next_child(np, prev);
if (!next)
break;
prev = next;
}
of_node_put(prev); of_node_put(prev);
nr_gpios = nr_banks << 5; nr_gpios = gpio_id->gpio_nums;
pxa_last_gpio = nr_gpios - 1; pxa_last_gpio = nr_gpios - 1;
irq_base = irq_alloc_descs(-1, 0, nr_gpios, 0); irq_base = irq_alloc_descs(-1, 0, nr_gpios, 0);
...@@ -545,19 +574,18 @@ static int pxa_gpio_probe(struct platform_device *pdev) ...@@ -545,19 +574,18 @@ static int pxa_gpio_probe(struct platform_device *pdev)
int gpio, irq, ret, use_of = 0; int gpio, irq, ret, use_of = 0;
int irq0 = 0, irq1 = 0, irq_mux, gpio_offset = 0; int irq0 = 0, irq1 = 0, irq_mux, gpio_offset = 0;
ret = pxa_gpio_probe_dt(pdev); info = dev_get_platdata(&pdev->dev);
if (ret < 0) { if (info) {
pxa_last_gpio = pxa_gpio_nums(); irq_base = info->irq_base;
#ifdef CONFIG_ARCH_PXA if (irq_base <= 0)
if (gpio_is_pxa_type(gpio_type)) return -EINVAL;
irq_base = PXA_GPIO_TO_IRQ(0); pxa_last_gpio = pxa_gpio_nums(pdev);
#endif
#ifdef CONFIG_ARCH_MMP
if (gpio_is_mmp_type(gpio_type))
irq_base = MMP_GPIO_TO_IRQ(0);
#endif
} else { } else {
irq_base = 0;
use_of = 1; use_of = 1;
ret = pxa_gpio_probe_dt(pdev);
if (ret < 0)
return -EINVAL;
} }
if (!pxa_last_gpio) if (!pxa_last_gpio)
...@@ -594,7 +622,6 @@ static int pxa_gpio_probe(struct platform_device *pdev) ...@@ -594,7 +622,6 @@ static int pxa_gpio_probe(struct platform_device *pdev)
} }
/* Initialize GPIO chips */ /* Initialize GPIO chips */
info = dev_get_platdata(&pdev->dev);
pxa_init_gpio_chip(pxa_last_gpio, info ? info->gpio_set_wake : NULL); pxa_init_gpio_chip(pxa_last_gpio, info ? info->gpio_set_wake : NULL);
/* clear all GPIO edge detects */ /* clear all GPIO edge detects */
...@@ -634,12 +661,24 @@ static int pxa_gpio_probe(struct platform_device *pdev) ...@@ -634,12 +661,24 @@ static int pxa_gpio_probe(struct platform_device *pdev)
return 0; return 0;
} }
static const struct platform_device_id gpio_id_table[] = {
{ "pxa25x-gpio", (unsigned long)&pxa25x_id },
{ "pxa26x-gpio", (unsigned long)&pxa26x_id },
{ "pxa27x-gpio", (unsigned long)&pxa27x_id },
{ "pxa3xx-gpio", (unsigned long)&pxa3xx_id },
{ "pxa93x-gpio", (unsigned long)&pxa93x_id },
{ "mmp-gpio", (unsigned long)&mmp_id },
{ "mmp2-gpio", (unsigned long)&mmp2_id },
{ },
};
static struct platform_driver pxa_gpio_driver = { static struct platform_driver pxa_gpio_driver = {
.probe = pxa_gpio_probe, .probe = pxa_gpio_probe,
.driver = { .driver = {
.name = "pxa-gpio", .name = "pxa-gpio",
.of_match_table = of_match_ptr(pxa_gpio_dt_ids), .of_match_table = of_match_ptr(pxa_gpio_dt_ids),
}, },
.id_table = gpio_id_table,
}; };
static int __init pxa_gpio_init(void) static int __init pxa_gpio_init(void)
......
...@@ -14,6 +14,7 @@ extern int pxa_last_gpio; ...@@ -14,6 +14,7 @@ extern int pxa_last_gpio;
extern int pxa_irq_to_gpio(int irq); extern int pxa_irq_to_gpio(int irq);
struct pxa_gpio_platform_data { struct pxa_gpio_platform_data {
int irq_base;
int (*gpio_set_wake)(unsigned int gpio, unsigned int on); int (*gpio_set_wake)(unsigned int gpio, unsigned int on);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment