orion boards for v3.8

- mach-orion5x/ joins the dark side! (devicetree)
  - Lacie Network Space family
  - Lacie Ethernet Disk mini v2
  - USI TopKick
  - ZyXEL NSA310
  - MPL CEC4
  - Plat'Home OpenBlocks A6 (kirkwood, AX3-4 is armada xp)
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (GNU/Linux)
 
 iQEcBAABAgAGBQJQrc/qAAoJEAi3KVZQDZAeGIcIAJ70hcz/cKdEKNpekMRoMWpz
 LoDXtPqRuUvCqBdUNFkJyPAhHHkWwnU6KRcBRz1dknTtJ7nyCkDQYRG/JIroIs8I
 X9N6JbPH7FMU+Z1ZUAM2ww+pEAIQkwX06erAy9u/a7ivMj/0LeXboNK+ngIx1jgL
 xz2SS4wJrujPwvT2rYo4nJ+WwGiiIPbRjiY7r87rD/DQ9nY9DxKgfve7pRhaCCZS
 Baw48u8qTe6M9LGcXw+b/MSHGCTB6YabqaRHMAr/1NK0Z3JDGU8tEpOuMCnFX7SA
 6CxEymw5/8fzyTgdRz7FRd9Hg28y5Cd+T2l48X4tSL/M16H4EeBOxj6ub4zCi9s=
 =nsDw
 -----END PGP SIGNATURE-----

Merge tag 'orion_boards_for_3.8' of git://git.infradead.org/users/jcooper/linux into next/boards

From Jason Cooper:
orion boards for v3.8

 - mach-orion5x/ joins the dark side! (devicetree)
 - Lacie Network Space family
 - Lacie Ethernet Disk mini v2
 - USI TopKick
 - ZyXEL NSA310
 - MPL CEC4
 - Plat'Home OpenBlocks A6 (kirkwood, AX3-4 is armada xp)

* tag 'orion_boards_for_3.8' of git://git.infradead.org/users/jcooper/linux:
  ARM: kirkwood: Add Plat'Home OpenBlocks A6 support
  ARM: Dove: update defconfig
  ARM: Kirkwood: update defconfig for new boards
  arm: orion5x: add DT related options in defconfig
  arm: orion5x: convert 'LaCie Ethernet Disk mini v2' to Device Tree
  arm: orion5x: basic Device Tree support
  arm: orion5x: mechanical defconfig update
  ARM: kirkwood: Add support for the MPL CEC4
  arm: kirkwood: add support for ZyXEL NSA310
  ARM: Kirkwood: new board USI Topkick
  ARM: kirkwood: use gpio-fan DT binding on lsxl
  ARM: Kirkwood: add Netspace boards to defconfig
  ARM: kirkwood: DT board setup for Network Space Mini v2
  ARM: kirkwood: DT board setup for Network Space Lite v2
  ARM: kirkwood: DT board setup for Network Space v2 and parents
  leds: leds-ns2: add device tree binding
  ARM: Kirkwood: Enable the second I2C bus
This commit is contained in:
Olof Johansson 2012-11-26 01:04:39 -08:00
commit 0d5c2e21d3
37 changed files with 1630 additions and 174 deletions

View File

@ -0,0 +1,26 @@
Binding for dual-GPIO LED found on Network Space v2 (and parents).
Required properties:
- compatible: "lacie,ns2-leds".
Each LED is represented as a sub-node of the ns2-leds device.
Required sub-node properties:
- cmd-gpio: Command LED GPIO. See OF device-tree GPIO specification.
- slow-gpio: Slow LED GPIO. See OF device-tree GPIO specification.
Optional sub-node properties:
- label: Name for this LED. If omitted, the label is taken from the node name.
- linux,default-trigger: Trigger assigned to the LED.
Example:
ns2-leds {
compatible = "lacie,ns2-leds";
blue-sata {
label = "ns2:blue:sata";
slow-gpio = <&gpio0 29 0>;
cmd-gpio = <&gpio0 30 0>;
};
};

View File

@ -36,11 +36,20 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
kirkwood-ib62x0.dtb \ kirkwood-ib62x0.dtb \
kirkwood-iconnect.dtb \ kirkwood-iconnect.dtb \
kirkwood-iomega_ix2_200.dtb \ kirkwood-iomega_ix2_200.dtb \
kirkwood-is2.dtb \
kirkwood-km_kirkwood.dtb \ kirkwood-km_kirkwood.dtb \
kirkwood-lschlv2.dtb \ kirkwood-lschlv2.dtb \
kirkwood-lsxhl.dtb \ kirkwood-lsxhl.dtb \
kirkwood-mplcec4.dtb \
kirkwood-ns2.dtb \
kirkwood-ns2lite.dtb \
kirkwood-ns2max.dtb \
kirkwood-ns2mini.dtb \
kirkwood-nsa310.dtb \
kirkwood-topkick.dtb \
kirkwood-ts219-6281.dtb \ kirkwood-ts219-6281.dtb \
kirkwood-ts219-6282.dtb kirkwood-ts219-6282.dtb \
kirkwood-openblocks_a6.dtb
dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \ dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
msm8960-cdp.dtb msm8960-cdp.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \ dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
@ -73,6 +82,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
omap5-evm.dtb \ omap5-evm.dtb \
am335x-evm.dtb \ am335x-evm.dtb \
am335x-bone.dtb am335x-bone.dtb
dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb
dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
dtb-$(CONFIG_ARCH_U8500) += snowball.dtb dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \

View File

@ -0,0 +1,30 @@
/dts-v1/;
/include/ "kirkwood-ns2-common.dtsi"
/ {
model = "LaCie Internet Space v2";
compatible = "lacie,inetspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x8000000>;
};
ocp@f1000000 {
sata@80000 {
status = "okay";
nr-ports = <1>;
};
};
ns2-leds {
compatible = "lacie,ns2-leds";
blue-sata {
label = "ns2:blue:sata";
slow-gpio = <&gpio0 29 0>;
cmd-gpio = <&gpio0 30 0>;
};
};
};

View File

@ -94,4 +94,15 @@
gpios = <&gpio1 16 1>; gpios = <&gpio1 16 1>;
}; };
}; };
gpio_fan {
compatible = "gpio-fan";
gpios = <&gpio0 19 1
&gpio0 18 1>;
gpio-fan,speed-map = <0 3
1500 2
3250 1
5000 0>;
alarm-gpios = <&gpio1 8 0>;
};
}; };

View File

@ -0,0 +1,119 @@
/dts-v1/;
/include/ "kirkwood.dtsi"
/ {
model = "MPL CEC4";
compatible = "mpl,cec4-10", "mpl,cec4", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x20000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
i2c@11000 {
status = "okay";
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
eeprom@57 {
compatible = "atmel,24c02";
reg = <0x57>;
};
};
serial@12000 {
clock-frequency = <200000000>;
status = "ok";
};
nand@3000000 {
status = "okay";
partition@0 {
label = "uboot";
reg = <0x0000000 0x100000>;
};
partition@100000 {
label = "env";
reg = <0x100000 0x80000>;
};
partition@180000 {
label = "fdt";
reg = <0x180000 0x80000>;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
};
partition@600000 {
label = "rootfs";
reg = <0x600000 0x1fa00000>;
};
};
rtc@10300 {
status = "disabled";
};
sata@80000 {
nr-ports = <2>;
status = "okay";
};
};
gpio-leds {
compatible = "gpio-leds";
health {
label = "status:green:health";
gpios = <&gpio0 7 1>;
};
user1o {
label = "user1:orange";
gpios = <&gpio1 8 1>;
default-state = "on";
};
user1g {
label = "user1:green";
gpios = <&gpio1 9 1>;
default-state = "on";
};
user0o {
label = "user0:orange";
gpios = <&gpio1 12 1>;
default-state = "on";
};
user0g {
label = "user0:green";
gpios = <&gpio1 13 1>;
default-state = "on";
};
misc {
label = "status:orange:misc";
gpios = <&gpio1 14 1>;
default-state = "on";
};
};
};

View File

@ -0,0 +1,63 @@
/include/ "kirkwood.dtsi"
/ {
chosen {
bootargs = "console=ttyS0,115200n8";
};
ocp@f1000000 {
serial@12000 {
clock-frequency = <166666667>;
status = "okay";
};
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";
};
};
};
i2c@11000 {
status = "okay";
eeprom@50 {
compatible = "at,24c04";
pagesize = <16>;
reg = <0x50>;
};
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power push button";
linux,code = <116>;
gpios = <&gpio1 0 0>;
};
};
gpio-leds {
compatible = "gpio-leds";
red-fail {
label = "ns2:red:fail";
gpios = <&gpio0 12 0>;
};
};
};

View File

@ -0,0 +1,30 @@
/dts-v1/;
/include/ "kirkwood-ns2-common.dtsi"
/ {
model = "LaCie Network Space v2";
compatible = "lacie,netspace_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
ocp@f1000000 {
sata@80000 {
status = "okay";
nr-ports = <1>;
};
};
ns2-leds {
compatible = "lacie,ns2-leds";
blue-sata {
label = "ns2:blue:sata";
slow-gpio = <&gpio0 29 0>;
cmd-gpio = <&gpio0 30 0>;
};
};
};

View File

@ -0,0 +1,30 @@
/dts-v1/;
/include/ "kirkwood-ns2-common.dtsi"
/ {
model = "LaCie Network Space Lite v2";
compatible = "lacie,netspace_lite_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x8000000>;
};
ocp@f1000000 {
sata@80000 {
status = "okay";
nr-ports = <1>;
};
};
gpio-leds {
compatible = "gpio-leds";
blue-sata {
label = "ns2:blue:sata";
gpios = <&gpio0 30 1>;
linux,default-trigger = "default-on";
};
};
};

View File

@ -0,0 +1,49 @@
/dts-v1/;
/include/ "kirkwood-ns2-common.dtsi"
/ {
model = "LaCie Network Space Max v2";
compatible = "lacie,netspace_max_v2", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
ocp@f1000000 {
sata@80000 {
status = "okay";
nr-ports = <2>;
};
};
gpio_fan {
compatible = "gpio-fan";
gpios = <&gpio0 22 1
&gpio0 7 1
&gpio1 1 1
&gpio0 23 1>;
gpio-fan,speed-map =
< 0 0
1500 15
1700 14
1800 13
2100 12
3100 11
3300 10
4300 9
5500 8>;
alarm-gpios = <&gpio0 25 1>;
};
ns2-leds {
compatible = "lacie,ns2-leds";
blue-sata {
label = "ns2:blue:sata";
slow-gpio = <&gpio0 29 0>;
cmd-gpio = <&gpio0 30 0>;
};
};
};

View File

@ -0,0 +1,49 @@
/dts-v1/;
/include/ "kirkwood-ns2-common.dtsi"
/ {
model = "LaCie Network Space Mini v2";
compatible = "lacie,netspace_mini_v2", "marvell,kirkwood-88f6192", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x8000000>;
};
ocp@f1000000 {
sata@80000 {
status = "okay";
nr-ports = <1>;
};
};
gpio_fan {
compatible = "gpio-fan";
gpios = <&gpio0 22 1
&gpio0 7 1
&gpio1 1 1
&gpio0 23 1>;
gpio-fan,speed-map =
< 0 0
3000 15
3180 14
4140 13
4570 12
6760 11
7140 10
7980 9
9200 8>;
alarm-gpios = <&gpio0 25 1>;
};
ns2-leds {
compatible = "lacie,ns2-leds";
blue-sata {
label = "ns2:blue:sata";
slow-gpio = <&gpio0 29 0>;
cmd-gpio = <&gpio0 30 0>;
};
};
};

View File

@ -0,0 +1,144 @@
/dts-v1/;
/include/ "kirkwood.dtsi"
/ {
model = "ZyXEL NSA310";
compatible = "zyxel,nsa310", "marvell,kirkwood-88f6281", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200";
};
ocp@f1000000 {
serial@12000 {
clock-frequency = <200000000>;
status = "ok";
};
sata@80000 {
status = "okay";
nr-ports = <2>;
};
i2c@11000 {
status = "okay";
};
nand@3000000 {
status = "okay";
chip-delay = <35>;
partition@0 {
label = "uboot";
reg = <0x0000000 0x0100000>;
read-only;
};
partition@100000 {
label = "uboot_env";
reg = <0x0100000 0x0080000>;
};
partition@180000 {
label = "key_store";
reg = <0x0180000 0x0080000>;
};
partition@200000 {
label = "info";
reg = <0x0200000 0x0080000>;
};
partition@280000 {
label = "etc";
reg = <0x0280000 0x0a00000>;
};
partition@c80000 {
label = "kernel_1";
reg = <0x0c80000 0x0a00000>;
};
partition@1680000 {
label = "rootfs1";
reg = <0x1680000 0x2fc0000>;
};
partition@4640000 {
label = "kernel_2";
reg = <0x4640000 0x0a00000>;
};
partition@5040000 {
label = "rootfs2";
reg = <0x5040000 0x2fc0000>;
};
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power Button";
linux,code = <116>;
gpios = <&gpio1 14 0>;
};
button@2 {
label = "Copy Button";
linux,code = <133>;
gpios = <&gpio1 5 1>;
};
button@3 {
label = "Reset Button";
linux,code = <0x198>;
gpios = <&gpio1 4 1>;
};
};
gpio-leds {
compatible = "gpio-leds";
green-sys {
label = "nsa310:green:sys";
gpios = <&gpio0 28 0>;
};
red-sys {
label = "nsa310:red:sys";
gpios = <&gpio0 29 0>;
};
green-hdd {
label = "nsa310:green:hdd";
gpios = <&gpio1 9 0>;
};
red-hdd {
label = "nsa310:red:hdd";
gpios = <&gpio1 10 0>;
};
green-esata {
label = "nsa310:green:esata";
gpios = <&gpio0 12 0>;
};
red-esata {
label = "nsa310:red:esata";
gpios = <&gpio0 13 0>;
};
green-usb {
label = "nsa310:green:usb";
gpios = <&gpio0 15 0>;
};
red-usb {
label = "nsa310:red:usb";
gpios = <&gpio0 16 0>;
};
green-copy {
label = "nsa310:green:copy";
gpios = <&gpio1 7 0>;
};
red-copy {
label = "nsa310:red:copy";
gpios = <&gpio1 8 0>;
};
};
};

View File

@ -0,0 +1,39 @@
/dts-v1/;
/include/ "kirkwood.dtsi"
/ {
model = "Plat'Home OpenBlocksA6";
compatible = "plathome,openblocks-a6", "marvell,kirkwood-88f6283", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x20000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
serial@12000 {
clock-frequency = <200000000>;
status = "ok";
};
serial@12100 {
clock-frequency = <200000000>;
status = "ok";
};
nand@3000000 {
chip-delay = <25>;
status = "okay";
};
sata@80000 {
nr-ports = <1>;
status = "okay";
};
};
};

View File

@ -0,0 +1,85 @@
/dts-v1/;
/include/ "kirkwood.dtsi"
/ {
model = "Univeral Scientific Industrial Co. Topkick-1281P2";
compatible = "usi,topkick-1281P2", "usi,topkick", "marvell,kirkwood-88f6282", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
serial@12000 {
clock-frequency = <200000000>;
status = "ok";
};
nand@3000000 {
status = "okay";
partition@0 {
label = "u-boot";
reg = <0x0000000 0x180000>;
};
partition@180000 {
label = "u-boot env";
reg = <0x0180000 0x20000>;
};
partition@200000 {
label = "uImage";
reg = <0x0200000 0x600000>;
};
partition@800000 {
label = "uInitrd";
reg = <0x0800000 0x1000000>;
};
partition@1800000 {
label = "rootfs";
reg = <0x1800000 0xe800000>;
};
};
sata@80000 {
status = "okay";
nr-ports = <1>;
};
};
gpio-leds {
compatible = "gpio-leds";
disk {
label = "topkick:yellow:disk";
gpios = <&gpio0 21 1>;
linux,default-trigger = "ide-disk";
};
system2 {
label = "topkick:red:system";
gpios = <&gpio1 5 1>;
};
system {
label = "topkick:blue:system";
gpios = <&gpio1 6 1>;
default-state = "on";
};
wifi {
label = "topkick:green:wifi";
gpios = <&gpio1 7 1>;
};
wifi2 {
label = "topkick:yellow:wifi";
gpios = <&gpio1 16 1>;
};
};
};

View File

@ -0,0 +1,55 @@
/*
* Copyright (C) 2012 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* 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/ "orion5x.dtsi"
/ {
model = "LaCie Ethernet Disk mini V2";
compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x";
memory {
reg = <0x00000000 0x4000000>; /* 64 MB */
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
serial@12000 {
clock-frequency = <166666667>;
status = "okay";
};
sata@80000 {
status = "okay";
nr-ports = <2>;
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power-on Switch";
linux,code = <116>; /* KEY_POWER */
gpios = <&gpio0 18 0>;
};
};
gpio_leds {
compatible = "gpio-leds";
led@1 {
label = "power:blue";
gpios = <&gpio0 16 1>;
};
};
};

View File

@ -0,0 +1,98 @@
/*
* Copyright (C) 2012 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
/include/ "skeleton.dtsi"
/ {
model = "Marvell Orion5x SoC";
compatible = "marvell,orion5x";
interrupt-parent = <&intc>;
intc: interrupt-controller {
compatible = "marvell,orion-intc", "marvell,intc";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0xf1020204 0x04>;
};
ocp@f1000000 {
compatible = "simple-bus";
ranges = <0x00000000 0xf1000000 0x4000000
0xf2200000 0xf2200000 0x0000800>;
#address-cells = <1>;
#size-cells = <1>;
gpio0: gpio@10100 {
compatible = "marvell,orion-gpio";
#gpio-cells = <2>;
gpio-controller;
reg = <0x10100 0x40>;
ngpio = <32>;
interrupts = <6>, <7>, <8>, <9>;
};
serial@12000 {
compatible = "ns16550a";
reg = <0x12000 0x100>;
reg-shift = <2>;
interrupts = <3>;
/* set clock-frequency in board dts */
status = "disabled";
};
serial@12100 {
compatible = "ns16550a";
reg = <0x12100 0x100>;
reg-shift = <2>;
interrupts = <4>;
/* set clock-frequency in board dts */
status = "disabled";
};
spi@10600 {
compatible = "marvell,orion-spi";
#address-cells = <1>;
#size-cells = <0>;
cell-index = <0>;
reg = <0x10600 0x28>;
status = "disabled";
};
wdt@20300 {
compatible = "marvell,orion-wdt";
reg = <0x20300 0x28>;
status = "okay";
};
sata@80000 {
compatible = "marvell,orion-sata";
reg = <0x80000 0x5000>;
interrupts = <29>;
status = "disabled";
};
i2c@11000 {
compatible = "marvell,mv64xxx-i2c";
reg = <0x11000 0x20>;
#address-cells = <1>;
#size-cells = <0>;
interrupts = <5>;
clock-frequency = <100000>;
status = "disabled";
};
crypto@90000 {
compatible = "marvell,orion-crypto";
reg = <0x90000 0x10000>,
<0xf2200000 0x800>;
reg-names = "regs", "sram";
interrupts = <22>;
status = "okay";
};
};
};

View File

@ -8,11 +8,19 @@ CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_DOVE=y CONFIG_ARCH_DOVE=y
CONFIG_MACH_DOVE_DB=y CONFIG_MACH_DOVE_DB=y
CONFIG_MACH_CM_A510=y
CONFIG_MACH_DOVE_DT=y
CONFIG_NO_HZ=y CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y CONFIG_HIGH_RES_TIMERS=y
CONFIG_AEABI=y CONFIG_AEABI=y
CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_HIGHMEM=y
CONFIG_USE_OF=y
CONFIG_ATAGS=y
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
CONFIG_VFP=y CONFIG_VFP=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
@ -62,6 +70,9 @@ CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_PCI is not set # CONFIG_SERIAL_8250_PCI is not set
CONFIG_SERIAL_8250_RUNTIME_UARTS=2 CONFIG_SERIAL_8250_RUNTIME_UARTS=2
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_OF_PLATFORM=y
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_I2C=y CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y CONFIG_I2C_CHARDEV=y
@ -74,6 +85,18 @@ CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_DOVE=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_RTC_CLASS=y CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_MV=y CONFIG_RTC_DRV_MV=y
CONFIG_DMADEVICES=y CONFIG_DMADEVICES=y
@ -122,6 +145,7 @@ CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_ANSI_CPRNG is not set # CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_DEV_MV_CESA=y
CONFIG_CRC_CCITT=y CONFIG_CRC_CCITT=y
CONFIG_CRC16=y CONFIG_CRC16=y
CONFIG_LIBCRC32C=y CONFIG_LIBCRC32C=y

View File

@ -27,6 +27,14 @@ CONFIG_MACH_GOFLEXNET_DT=y
CONFIG_MACH_LSXL_DT=y CONFIG_MACH_LSXL_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_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_MINI_V2_DT=y
CONFIG_MACH_OPENBLOCKS_A6_DT=y
CONFIG_MACH_TOPKICK_DT=y
CONFIG_MACH_TS219=y CONFIG_MACH_TS219=y
CONFIG_MACH_TS41X=y CONFIG_MACH_TS41X=y
CONFIG_MACH_DOCKSTAR=y CONFIG_MACH_DOCKSTAR=y
@ -40,6 +48,7 @@ CONFIG_MACH_D2NET_V2=y
CONFIG_MACH_NET2BIG_V2=y CONFIG_MACH_NET2BIG_V2=y
CONFIG_MACH_NET5BIG_V2=y CONFIG_MACH_NET5BIG_V2=y
CONFIG_MACH_T5325=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

View File

@ -1,7 +1,8 @@
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_EXPERT=y CONFIG_EXPERT=y
# CONFIG_SLUB_DEBUG is not set # CONFIG_SLUB_DEBUG is not set
CONFIG_PROFILING=y CONFIG_PROFILING=y
@ -10,6 +11,8 @@ CONFIG_KPROBES=y
CONFIG_MODULES=y 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_PARTITION_ADVANCED=y
CONFIG_BSD_DISKLABEL=y
CONFIG_ARCH_ORION5X=y CONFIG_ARCH_ORION5X=y
CONFIG_MACH_DB88F5281=y CONFIG_MACH_DB88F5281=y
CONFIG_MACH_RD88F5182=y CONFIG_MACH_RD88F5182=y
@ -24,7 +27,7 @@ CONFIG_MACH_TS409=y
CONFIG_MACH_WRT350N_V2=y CONFIG_MACH_WRT350N_V2=y
CONFIG_MACH_TS78XX=y CONFIG_MACH_TS78XX=y
CONFIG_MACH_MV2120=y CONFIG_MACH_MV2120=y
CONFIG_MACH_EDMINI_V2=y CONFIG_MACH_EDMINI_V2_DT=y
CONFIG_MACH_D2NET=y CONFIG_MACH_D2NET=y
CONFIG_MACH_BIGDISK=y CONFIG_MACH_BIGDISK=y
CONFIG_MACH_NET2BIG=y CONFIG_MACH_NET2BIG=y
@ -33,17 +36,13 @@ CONFIG_MACH_WNR854T=y
CONFIG_MACH_RD88F5181L_GE=y CONFIG_MACH_RD88F5181L_GE=y
CONFIG_MACH_RD88F5181L_FXO=y CONFIG_MACH_RD88F5181L_FXO=y
CONFIG_MACH_RD88F6183AP_GE=y CONFIG_MACH_RD88F6183AP_GE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
CONFIG_AEABI=y CONFIG_AEABI=y
CONFIG_LEDS=y
CONFIG_LEDS_CPU=y
CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_ARM_APPENDED_DTB=y
CONFIG_FPE_NWFPE=y CONFIG_FPE_NWFPE=y
CONFIG_VFP=y CONFIG_VFP=y
# CONFIG_SUSPEND is not set
CONFIG_NET=y CONFIG_NET=y
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_UNIX=y CONFIG_UNIX=y
@ -54,13 +53,10 @@ CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_BOOTP=y
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
CONFIG_NET_DSA_MV88E6131=y
CONFIG_NET_DSA_MV88E6123_61_65=y
CONFIG_NET_PKTGEN=m CONFIG_NET_PKTGEN=m
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# CONFIG_FIRMWARE_IN_KERNEL is not set # CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y CONFIG_MTD_BLOCK=y
@ -82,12 +78,11 @@ CONFIG_CHR_DEV_SG=m
CONFIG_ATA=y CONFIG_ATA=y
CONFIG_SATA_MV=y CONFIG_SATA_MV=y
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_MARVELL_PHY=y
CONFIG_NET_ETHERNET=y
CONFIG_MII=y CONFIG_MII=y
CONFIG_NET_PCI=y CONFIG_NET_DSA_MV88E6131=y
CONFIG_NET_DSA_MV88E6123_61_65=y
CONFIG_MV643XX_ETH=y CONFIG_MV643XX_ETH=y
# CONFIG_NETDEV_10000 is not set CONFIG_MARVELL_PHY=y
# CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_MOUSEDEV is not set
CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVDEV=y
# CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_ATKBD is not set
@ -95,11 +90,12 @@ CONFIG_KEYBOARD_GPIO=y
# CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO is not set # CONFIG_SERIO is not set
# CONFIG_VT is not set # CONFIG_VT is not set
CONFIG_LEGACY_PTY_COUNT=16
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_PCI is not set # CONFIG_SERIAL_8250_PCI is not set
CONFIG_SERIAL_8250_RUNTIME_UARTS=2 CONFIG_SERIAL_8250_RUNTIME_UARTS=2
CONFIG_LEGACY_PTY_COUNT=16 CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_HW_RANDOM_TIMERIOMEM=m CONFIG_HW_RANDOM_TIMERIOMEM=m
CONFIG_I2C=y CONFIG_I2C=y
# CONFIG_I2C_COMPAT is not set # CONFIG_I2C_COMPAT is not set
@ -109,10 +105,8 @@ CONFIG_GPIO_SYSFS=y
CONFIG_SENSORS_LM75=y CONFIG_SENSORS_LM75=y
# CONFIG_VGA_ARB is not set # CONFIG_VGA_ARB is not set
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_PRINTER=y CONFIG_USB_PRINTER=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y
CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_DATAFAB=y
@ -140,7 +134,6 @@ CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set # CONFIG_EXT3_FS_XATTR is not set
CONFIG_EXT4_FS=m CONFIG_EXT4_FS=m
CONFIG_INOTIFY=y
CONFIG_ISO9660_FS=m CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y CONFIG_JOLIET=y
CONFIG_UDF_FS=m CONFIG_UDF_FS=m
@ -150,25 +143,18 @@ CONFIG_TMPFS=y
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_CRAMFS=y CONFIG_CRAMFS=y
CONFIG_NFS_FS=y CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y CONFIG_ROOT_NFS=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_BSD_DISKLABEL=y
CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_850=y CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y CONFIG_NLS_ISO8859_2=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
CONFIG_LATENCYTOP=y CONFIG_LATENCYTOP=y
CONFIG_SYSCTL_SYSCALL_CHECK=y
# CONFIG_FTRACE is not set # CONFIG_FTRACE is not set
CONFIG_DEBUG_USER=y CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y CONFIG_DEBUG_LL=y
CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_ECB=m

View File

@ -130,6 +130,63 @@ 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
bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
Internet Space v2 NAS, using Flattened Device Tree.
config MACH_MPLCEC4_DT
bool "MPL CEC4 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
MPL CEC4 (Flattened Device Tree).
config MACH_NETSPACE_V2_DT
bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
Network Space v2 NAS, using Flattened Device Tree.
config MACH_NETSPACE_MAX_V2_DT
bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
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
bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the LaCie
Network Space Mini v2 NAS (aka SafeBox), using Flattened
Device Tree.
config MACH_OPENBLOCKS_A6_DT
bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
Plat'Home OpenBlocks A6 (Flattened Device Tree).
config MACH_TOPKICK_DT
bool "USI Topkick (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
USI Topkick, using Flattened Device Tree
config MACH_TS219 config MACH_TS219
bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
help help
@ -216,6 +273,14 @@ config MACH_T5325
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. HP t5325 Thin Client.
config MACH_NSA310_DT
bool "ZyXEL NSA-310 (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
select ARM_ATAG_DTB_COMPAT
help
Say 'Y' here if you want your kernel to support the
ZyXEL NSA-310 board (Flattened Device Tree).
endmenu endmenu
endif endif

View File

@ -31,3 +31,12 @@ obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o
obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.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_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_MINI_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NSA310_DT) += board-nsa310.o
obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o

View File

@ -30,6 +30,8 @@ struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL), OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL),
OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0", OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0",
NULL), NULL),
OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011100, "mv64xxx_i2c.1",
NULL),
OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL), OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL),
OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL), OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL),
OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL), OF_DEV_AUXDATA("marvell,orion-nand", 0xf4000000, "orion_nand", NULL),
@ -94,6 +96,25 @@ 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") ||
of_machine_is_compatible("lacie,netspace_v2") ||
of_machine_is_compatible("lacie,netspace_max_v2") ||
of_machine_is_compatible("lacie,netspace_lite_v2") ||
of_machine_is_compatible("lacie,netspace_mini_v2"))
ns2_init();
if (of_machine_is_compatible("mpl,cec4"))
mplcec4_init();
if (of_machine_is_compatible("plathome,openblocks-a6"))
openblocks_a6_init();
if (of_machine_is_compatible("usi,topkick"))
usi_topkick_init();
if (of_machine_is_compatible("zyxel,nsa310"))
nsa310_init();
of_platform_populate(NULL, kirkwood_dt_match_table, of_platform_populate(NULL, kirkwood_dt_match_table,
kirkwood_auxdata_lookup, NULL); kirkwood_auxdata_lookup, NULL);
} }
@ -110,6 +131,15 @@ static const char *kirkwood_dt_board_compat[] = {
"buffalo,lsxl", "buffalo,lsxl",
"iom,ix2-200", "iom,ix2-200",
"keymile,km_kirkwood", "keymile,km_kirkwood",
"lacie,inetspace_v2",
"lacie,netspace_max_v2",
"lacie,netspace_v2",
"lacie,netspace_lite_v2",
"lacie,netspace_mini_v2",
"mpl,cec4",
"plathome,openblocks-a6",
"usi,topkick",
"zyxel,nsa310",
NULL NULL
}; };

View File

@ -20,11 +20,6 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio-fan.h>
#include <linux/input.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/kirkwood.h>
#include "common.h" #include "common.h"
#include "mpp.h" #include "mpp.h"
@ -53,51 +48,6 @@ static unsigned int lsxl_mpp_config[] __initdata = {
0 0
}; };
#define LSXL_GPIO_FAN_HIGH 18
#define LSXL_GPIO_FAN_LOW 19
#define LSXL_GPIO_FAN_LOCK 40
static struct gpio_fan_alarm lsxl_alarm = {
.gpio = LSXL_GPIO_FAN_LOCK,
};
static struct gpio_fan_speed lsxl_speeds[] = {
{
.rpm = 0,
.ctrl_val = 3,
}, {
.rpm = 1500,
.ctrl_val = 1,
}, {
.rpm = 3250,
.ctrl_val = 2,
}, {
.rpm = 5000,
.ctrl_val = 0,
}
};
static int lsxl_gpio_list[] = {
LSXL_GPIO_FAN_HIGH, LSXL_GPIO_FAN_LOW,
};
static struct gpio_fan_platform_data lsxl_fan_data = {
.num_ctrl = ARRAY_SIZE(lsxl_gpio_list),
.ctrl = lsxl_gpio_list,
.alarm = &lsxl_alarm,
.num_speed = ARRAY_SIZE(lsxl_speeds),
.speed = lsxl_speeds,
};
static struct platform_device lsxl_fan_device = {
.name = "gpio-fan",
.id = -1,
.num_resources = 0,
.dev = {
.platform_data = &lsxl_fan_data,
},
};
/* /*
* On the LS-XHL/LS-CHLv2, the shutdown process is following: * On the LS-XHL/LS-CHLv2, the shutdown process is following:
* - Userland monitors key events until the power switch goes to off position * - Userland monitors key events until the power switch goes to off position
@ -128,7 +78,6 @@ void __init lsxl_init(void)
kirkwood_ehci_init(); kirkwood_ehci_init();
kirkwood_ge00_init(&lsxl_ge00_data); kirkwood_ge00_init(&lsxl_ge00_data);
kirkwood_ge01_init(&lsxl_ge01_data); kirkwood_ge01_init(&lsxl_ge01_data);
platform_device_register(&lsxl_fan_device);
/* register power-off method */ /* register power-off method */
pm_power_off = lsxl_power_off; pm_power_off = lsxl_power_off;

View File

@ -0,0 +1,80 @@
/*
* Copyright (C) 2012 MPL AG, Switzerland
* Stefan Peter <s.peter@mpl.ch>
*
* arch/arm/mach-kirkwood/board-mplcec4.c
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/mv643xx_eth.h>
#include <linux/platform_data/mmc-mvsdio.h>
#include "common.h"
#include "mpp.h"
static struct mv643xx_eth_platform_data mplcec4_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(1),
};
static struct mv643xx_eth_platform_data mplcec4_ge01_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(2),
};
static unsigned int mplcec4_mpp_config[] __initdata = {
MPP0_NF_IO2,
MPP1_NF_IO3,
MPP2_NF_IO4,
MPP3_NF_IO5,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP7_GPO, /* Status LED Green High Active */
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP12_SD_CLK,
MPP13_SD_CMD, /* Alt UART1_TXD */
MPP14_SD_D0, /* Alt UART1_RXD */
MPP15_SD_D1,
MPP16_SD_D2,
MPP17_SD_D3,
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP28_GPIO, /* Input SYS_POR_DET (active High) */
MPP29_GPIO, /* Input SYS_RTC_INT (active High) */
MPP34_SATA1_ACTn,
MPP35_SATA0_ACTn,
MPP40_GPIO, /* LED User1 orange */
MPP41_GPIO, /* LED User1 green */
MPP44_GPIO, /* LED User0 orange */
MPP45_GPIO, /* LED User0 green */
MPP46_GPIO, /* Status LED Yellow High Active */
MPP47_GPIO, /* SD_CD# (in/IRQ)*/
0
};
static struct mvsdio_platform_data mplcec4_mvsdio_data = {
.gpio_card_detect = 47, /* MPP47 used as SD card detect */
};
void __init mplcec4_init(void)
{
/*
* Basic setup. Needs to be called early.
*/
kirkwood_mpp_conf(mplcec4_mpp_config);
kirkwood_ehci_init();
kirkwood_ge00_init(&mplcec4_ge00_data);
kirkwood_ge01_init(&mplcec4_ge01_data);
kirkwood_sdio_init(&mplcec4_mvsdio_data);
kirkwood_pcie_init(KW_PCIE0);
}

View File

@ -0,0 +1,87 @@
/*
* Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
*
* arch/arm/mach-kirkwood/board-ns2.c
*
* LaCie Network Space v2 board (and parents) initialization for drivers
* not converted to flattened device tree yet.
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/mv643xx_eth.h>
#include <linux/gpio.h>
#include <linux/of.h>
#include "common.h"
#include "mpp.h"
static struct mv643xx_eth_platform_data ns2_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(8),
};
static unsigned int ns2_mpp_config[] __initdata = {
MPP0_SPI_SCn,
MPP1_SPI_MOSI,
MPP2_SPI_SCK,
MPP3_SPI_MISO,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP7_GPO, /* Fan speed (bit 1) */
MPP8_TW0_SDA,
MPP9_TW0_SCK,
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP12_GPO, /* Red led */
MPP14_GPIO, /* USB fuse */
MPP16_GPIO, /* SATA 0 power */
MPP17_GPIO, /* SATA 1 power */
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP20_SATA1_ACTn,
MPP21_SATA0_ACTn,
MPP22_GPIO, /* Fan speed (bit 0) */
MPP23_GPIO, /* Fan power */
MPP24_GPIO, /* USB mode select */
MPP25_GPIO, /* Fan rotation fail */
MPP26_GPIO, /* USB device vbus */
MPP28_GPIO, /* USB enable host vbus */
MPP29_GPIO, /* Blue led (slow register) */
MPP30_GPIO, /* Blue led (command register) */
MPP31_GPIO, /* Board power off */
MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */
MPP33_GPO, /* Fan speed (bit 2) */
0
};
#define NS2_GPIO_POWER_OFF 31
static void ns2_power_off(void)
{
gpio_set_value(NS2_GPIO_POWER_OFF, 1);
}
void __init ns2_init(void)
{
/*
* Basic setup. Needs to be called early.
*/
kirkwood_mpp_conf(ns2_mpp_config);
kirkwood_ehci_init();
if (of_machine_is_compatible("lacie,netspace_lite_v2") ||
of_machine_is_compatible("lacie,netspace_mini_v2"))
ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
kirkwood_ge00_init(&ns2_ge00_data);
if (gpio_request(NS2_GPIO_POWER_OFF, "power-off") == 0 &&
gpio_direction_output(NS2_GPIO_POWER_OFF, 0) == 0)
pm_power_off = ns2_power_off;
else
pr_err("ns2: failed to configure power-off GPIO\n");
}

View File

@ -0,0 +1,105 @@
/*
* arch/arm/mach-kirkwood/nsa-310-setup.c
*
* ZyXEL NSA-310 Setup
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/kirkwood.h>
#include "common.h"
#include "mpp.h"
#define NSA310_GPIO_USB_POWER_OFF 21
#define NSA310_GPIO_POWER_OFF 48
static unsigned int nsa310_mpp_config[] __initdata = {
MPP12_GPIO, /* led esata green */
MPP13_GPIO, /* led esata red */
MPP15_GPIO, /* led usb green */
MPP16_GPIO, /* led usb red */
MPP21_GPIO, /* control usb power off */
MPP28_GPIO, /* led sys green */
MPP29_GPIO, /* led sys red */
MPP36_GPIO, /* key reset */
MPP37_GPIO, /* key copy */
MPP39_GPIO, /* led copy green */
MPP40_GPIO, /* led copy red */
MPP41_GPIO, /* led hdd green */
MPP42_GPIO, /* led hdd red */
MPP44_GPIO, /* ?? */
MPP46_GPIO, /* key power */
MPP48_GPIO, /* control power off */
0
};
static struct i2c_board_info __initdata nsa310_i2c_info[] = {
{ I2C_BOARD_INFO("adt7476", 0x2e) },
};
static void nsa310_power_off(void)
{
gpio_set_value(NSA310_GPIO_POWER_OFF, 1);
}
static int __init nsa310_gpio_request(unsigned int gpio, unsigned long flags,
const char *label)
{
int err;
err = gpio_request_one(gpio, flags, label);
if (err)
pr_err("NSA-310: can't setup GPIO%u (%s), err=%d\n",
gpio, label, err);
return err;
}
static void __init nsa310_gpio_init(void)
{
int err;
err = nsa310_gpio_request(NSA310_GPIO_POWER_OFF, GPIOF_OUT_INIT_LOW,
"Power Off");
if (!err)
pm_power_off = nsa310_power_off;
nsa310_gpio_request(NSA310_GPIO_USB_POWER_OFF, GPIOF_OUT_INIT_LOW,
"USB Power Off");
}
void __init nsa310_init(void)
{
u32 dev, rev;
kirkwood_mpp_conf(nsa310_mpp_config);
nsa310_gpio_init();
/* this can be removed once the mainline kirkwood.dtsi gets
* the ehci configuration by default */
kirkwood_ehci_init();
kirkwood_pcie_id(&dev, &rev);
i2c_register_board_info(0, ARRAY_AND_SIZE(nsa310_i2c_info));
}
static int __init nsa310_pci_init(void)
{
if (of_machine_is_compatible("zyxel,nsa310"))
kirkwood_pcie_init(KW_PCIE0);
return 0;
}
subsys_initcall(nsa310_pci_init);

View File

@ -0,0 +1,71 @@
/*
* Copyright 2012 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
*
* arch/arm/mach-kirkwood/board-openblocks_a6.c
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/mv643xx_eth.h>
#include <linux/clk.h>
#include <linux/clk-private.h>
#include "common.h"
#include "mpp.h"
static struct mv643xx_eth_platform_data openblocks_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
};
static unsigned int openblocks_a6_mpp_config[] __initdata = {
MPP0_NF_IO2,
MPP1_NF_IO3,
MPP2_NF_IO4,
MPP3_NF_IO5,
MPP4_NF_IO6,
MPP5_NF_IO7,
MPP6_SYSRST_OUTn,
MPP8_UART1_RTS,
MPP9_UART1_CTS,
MPP10_UART0_TXD,
MPP11_UART0_RXD,
MPP13_UART1_TXD,
MPP14_UART1_RXD,
MPP15_UART0_RTS,
MPP16_UART0_CTS,
MPP18_NF_IO0,
MPP19_NF_IO1,
MPP20_GPIO, /* DIP SW0 */
MPP21_GPIO, /* DIP SW1 */
MPP22_GPIO, /* DIP SW2 */
MPP23_GPIO, /* DIP SW3 */
MPP24_GPIO, /* GPIO 0 */
MPP25_GPIO, /* GPIO 1 */
MPP26_GPIO, /* GPIO 2 */
MPP27_GPIO, /* GPIO 3 */
MPP28_GPIO, /* GPIO 4 */
MPP29_GPIO, /* GPIO 5 */
MPP30_GPIO, /* GPIO 6 */
MPP31_GPIO, /* GPIO 7 */
MPP36_TW1_SDA,
MPP37_TW1_SCK,
MPP38_GPIO, /* INIT */
MPP39_GPIO, /* USB OC */
MPP41_GPIO, /* LED: Red */
MPP42_GPIO, /* LED: Yellow */
MPP43_GPIO, /* LED: Green */
0,
};
void __init openblocks_a6_init(void)
{
/*
* Basic setup. Needs to be called early.
*/
kirkwood_mpp_conf(openblocks_a6_mpp_config);
kirkwood_ehci_init();
kirkwood_ge00_init(&openblocks_ge00_data);
}

View File

@ -0,0 +1,82 @@
/*
* Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net>
*
* arch/arm/mach-kirkwood/board-usi_topkick.c
*
* USI Topkick Init for drivers not converted to flattened device tree yet.
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/mv643xx_eth.h>
#include <linux/gpio.h>
#include <linux/platform_data/mmc-mvsdio.h>
#include "common.h"
#include "mpp.h"
static struct mv643xx_eth_platform_data topkick_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
};
static struct mvsdio_platform_data topkick_mvsdio_data = {
/* unfortunately the CD signal has not been connected */
};
/*
* GPIO LED layout
*
* /-SYS_LED(2)
* |
* | /-DISK_LED
* | |
* | | /-WLAN_LED(2)
* | | |
* [SW] [*] [*] [*]
*/
/*
* Switch positions
*
* /-SW_LEFT
* |
* | /-SW_IDLE
* | |
* | | /-SW_RIGHT
* | | |
* PS [L] [I] [R] LEDS
*/
static unsigned int topkick_mpp_config[] __initdata = {
MPP21_GPIO, /* DISK_LED (low active) - yellow */
MPP36_GPIO, /* SATA0 power enable (high active) */
MPP37_GPIO, /* SYS_LED2 (low active) - red */
MPP38_GPIO, /* SYS_LED (low active) - blue */
MPP39_GPIO, /* WLAN_LED (low active) - green */
MPP43_GPIO, /* SW_LEFT (low active) */
MPP44_GPIO, /* SW_RIGHT (low active) */
MPP45_GPIO, /* SW_IDLE (low active) */
MPP46_GPIO, /* SW_LEFT (low active) */
MPP48_GPIO, /* WLAN_LED2 (low active) - yellow */
0
};
#define TOPKICK_SATA0_PWR_ENABLE 36
void __init usi_topkick_init(void)
{
/*
* Basic setup. Needs to be called early.
*/
kirkwood_mpp_conf(topkick_mpp_config);
/* SATA0 power enable */
gpio_set_value(TOPKICK_SATA0_PWR_ENABLE, 1);
kirkwood_ehci_init();
kirkwood_ge00_init(&topkick_ge00_data);
kirkwood_sdio_init(&topkick_mvsdio_data);
}

View File

@ -266,6 +266,7 @@ void __init kirkwood_clk_init(void)
orion_clkdev_add("1", "pcie", pex1); orion_clkdev_add("1", "pcie", pex1);
orion_clkdev_add(NULL, "kirkwood-i2s", audio); orion_clkdev_add(NULL, "kirkwood-i2s", audio);
orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", runit); orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", runit);
orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".1", runit);
/* Marvell says runit is used by SPI, UART, NAND, TWSI, ..., /* Marvell says runit is used by SPI, UART, NAND, TWSI, ...,
* so should never be gated. * so should never be gated.

View File

@ -112,6 +112,40 @@ void km_kirkwood_init(void);
static inline void km_kirkwood_init(void) {}; static inline void km_kirkwood_init(void) {};
#endif #endif
#ifdef CONFIG_MACH_MPLCEC4_DT
void mplcec4_init(void);
#else
static inline void mplcec4_init(void) {};
#endif
#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
defined(CONFIG_MACH_NETSPACE_V2_DT) || \
defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \
defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \
defined(CONFIG_MACH_NETSPACE_MINI_V2_DT)
void ns2_init(void);
#else
static inline void ns2_init(void) {};
#endif
#ifdef CONFIG_MACH_NSA310_DT
void nsa310_init(void);
#else
static inline void nsa310_init(void) {};
#endif
#ifdef CONFIG_MACH_OPENBLOCKS_A6_DT
void openblocks_a6_init(void);
#else
static inline void openblocks_a6_init(void) {};
#endif
#ifdef CONFIG_MACH_TOPKICK_DT
void usi_topkick_init(void);
#else
static inline void usi_topkick_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);

View File

@ -2,6 +2,13 @@ if ARCH_ORION5X
menu "Orion Implementations" menu "Orion Implementations"
config ARCH_ORION5X_DT
bool "Marvell Orion5x Flattened Device Tree"
select USE_OF
help
Say 'Y' here if you want your kernel to support the
Marvell Orion5x using flattened device tree.
config MACH_DB88F5281 config MACH_DB88F5281
bool "Marvell Orion-2 Development Board" bool "Marvell Orion-2 Development Board"
select I2C_BOARDINFO select I2C_BOARDINFO
@ -96,12 +103,13 @@ config MACH_MV2120
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
HP Media Vault mv2120 or mv5100. HP Media Vault mv2120 or mv5100.
config MACH_EDMINI_V2 config MACH_EDMINI_V2_DT
bool "LaCie Ethernet Disk mini V2" bool "LaCie Ethernet Disk mini V2 (Flattened Device Tree)"
select I2C_BOARDINFO select I2C_BOARDINFO
select ARCH_ORION5X_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 Ethernet Disk mini V2. LaCie Ethernet Disk mini V2 (Flattened Device Tree).
config MACH_D2NET config MACH_D2NET
bool "LaCie d2 Network" bool "LaCie d2 Network"

View File

@ -12,7 +12,6 @@ obj-$(CONFIG_MACH_TS409) += ts409-setup.o tsx09-common.o
obj-$(CONFIG_MACH_WRT350N_V2) += wrt350n-v2-setup.o obj-$(CONFIG_MACH_WRT350N_V2) += wrt350n-v2-setup.o
obj-$(CONFIG_MACH_TS78XX) += ts78xx-setup.o obj-$(CONFIG_MACH_TS78XX) += ts78xx-setup.o
obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o obj-$(CONFIG_MACH_MV2120) += mv2120-setup.o
obj-$(CONFIG_MACH_EDMINI_V2) += edmini_v2-setup.o
obj-$(CONFIG_MACH_D2NET) += d2net-setup.o obj-$(CONFIG_MACH_D2NET) += d2net-setup.o
obj-$(CONFIG_MACH_BIGDISK) += d2net-setup.o obj-$(CONFIG_MACH_BIGDISK) += d2net-setup.o
obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o
@ -22,3 +21,6 @@ obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o
obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o
obj-$(CONFIG_MACH_EDMINI_V2_DT) += edmini_v2-setup.o

View File

@ -0,0 +1,79 @@
/*
* Copyright 2012 (C), Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* arch/arm/mach-orion5x/board-dt.c
*
* Flattened Device Tree board initialization
*
* 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 <linux/kernel.h>
#include <linux/init.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <asm/system_misc.h>
#include <asm/mach/arch.h>
#include <mach/orion5x.h>
#include <plat/irq.h>
#include "common.h"
struct of_dev_auxdata orion5x_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL),
OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0",
NULL),
OF_DEV_AUXDATA("marvell,orion-wdt", 0xf1020300, "orion_wdt", NULL),
OF_DEV_AUXDATA("marvell,orion-sata", 0xf1080000, "sata_mv.0", NULL),
OF_DEV_AUXDATA("marvell,orion-crypto", 0xf1090000, "mv_crypto", NULL),
{},
};
static void __init orion5x_dt_init(void)
{
char *dev_name;
u32 dev, rev;
orion5x_id(&dev, &rev, &dev_name);
printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
/*
* Setup Orion address map
*/
orion5x_setup_cpu_mbus_bridge();
/* Setup root of clk tree */
clk_init();
/*
* Don't issue "Wait for Interrupt" instruction if we are
* running on D0 5281 silicon.
*/
if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) {
printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n");
disable_hlt();
}
if (of_machine_is_compatible("lacie,ethernet-disk-mini-v2"))
edmini_v2_init();
of_platform_populate(NULL, of_default_bus_match_table,
orion5x_auxdata_lookup, NULL);
}
static const char *orion5x_dt_compat[] = {
"marvell,orion5x",
NULL,
};
DT_MACHINE_START(ORION5X_DT, "Marvell Orion5x (Flattened Device Tree)")
/* Maintainer: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> */
.map_io = orion5x_map_io,
.init_early = orion5x_init_early,
.init_irq = orion_dt_init_irq,
.timer = &orion5x_timer,
.init_machine = orion5x_dt_init,
.restart = orion5x_restart,
.dt_compat = orion5x_dt_compat,
MACHINE_END

View File

@ -65,7 +65,7 @@ void __init orion5x_map_io(void)
****************************************************************************/ ****************************************************************************/
static struct clk *tclk; static struct clk *tclk;
static void __init clk_init(void) void __init clk_init(void)
{ {
tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT, tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
orion5x_tclk); orion5x_tclk);
@ -236,7 +236,7 @@ struct sys_timer orion5x_timer = {
/* /*
* Identify device ID and rev from PCIe configuration header space '0'. * Identify device ID and rev from PCIe configuration header space '0'.
*/ */
static void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name) void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name)
{ {
orion5x_pcie_id(dev, rev); orion5x_pcie_id(dev, rev);

View File

@ -12,6 +12,8 @@ void orion5x_map_io(void);
void orion5x_init_early(void); void orion5x_init_early(void);
void orion5x_init_irq(void); void orion5x_init_irq(void);
void orion5x_init(void); void orion5x_init(void);
void orion5x_id(u32 *dev, u32 *rev, char **dev_name);
void clk_init(void);
extern int orion5x_tclk; extern int orion5x_tclk;
extern struct sys_timer orion5x_timer; extern struct sys_timer orion5x_timer;
@ -54,6 +56,13 @@ int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys); struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys);
int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
/* board init functions for boards not fully converted to fdt */
#ifdef CONFIG_MACH_EDMINI_V2_DT
void edmini_v2_init(void);
#else
static inline void edmini_v2_init(void) {};
#endif
struct meminfo; struct meminfo;
struct tag; struct tag;
extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *); extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *);

View File

@ -114,69 +114,6 @@ static struct i2c_board_info __initdata edmini_v2_i2c_rtc = {
.irq = 0, .irq = 0,
}; };
/*****************************************************************************
* Sata
****************************************************************************/
static struct mv_sata_platform_data edmini_v2_sata_data = {
.n_ports = 2,
};
/*****************************************************************************
* GPIO LED (simple - doesn't use hardware blinking support)
****************************************************************************/
#define EDMINI_V2_GPIO_LED_POWER 16
static struct gpio_led edmini_v2_leds[] = {
{
.name = "power:blue",
.gpio = EDMINI_V2_GPIO_LED_POWER,
.active_low = 1,
},
};
static struct gpio_led_platform_data edmini_v2_led_data = {
.num_leds = ARRAY_SIZE(edmini_v2_leds),
.leds = edmini_v2_leds,
};
static struct platform_device edmini_v2_gpio_leds = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = &edmini_v2_led_data,
},
};
/****************************************************************************
* GPIO key
****************************************************************************/
#define EDMINI_V2_GPIO_KEY_POWER 18
static struct gpio_keys_button edmini_v2_buttons[] = {
{
.code = KEY_POWER,
.gpio = EDMINI_V2_GPIO_KEY_POWER,
.desc = "Power Button",
.active_low = 0,
},
};
static struct gpio_keys_platform_data edmini_v2_button_data = {
.buttons = edmini_v2_buttons,
.nbuttons = ARRAY_SIZE(edmini_v2_buttons),
};
static struct platform_device edmini_v2_gpio_buttons = {
.name = "gpio-keys",
.id = -1,
.dev = {
.platform_data = &edmini_v2_button_data,
},
};
/***************************************************************************** /*****************************************************************************
* General Setup * General Setup
****************************************************************************/ ****************************************************************************/
@ -207,13 +144,8 @@ static unsigned int edminiv2_mpp_modes[] __initdata = {
0, 0,
}; };
static void __init edmini_v2_init(void) void __init edmini_v2_init(void)
{ {
/*
* Setup basic Orion functions. Need to be called early.
*/
orion5x_init();
orion5x_mpp_conf(edminiv2_mpp_modes); orion5x_mpp_conf(edminiv2_mpp_modes);
/* /*
@ -221,15 +153,10 @@ static void __init edmini_v2_init(void)
*/ */
orion5x_ehci0_init(); orion5x_ehci0_init();
orion5x_eth_init(&edmini_v2_eth_data); orion5x_eth_init(&edmini_v2_eth_data);
orion5x_i2c_init();
orion5x_sata_init(&edmini_v2_sata_data);
orion5x_uart0_init();
orion5x_setup_dev_boot_win(EDMINI_V2_NOR_BOOT_BASE, orion5x_setup_dev_boot_win(EDMINI_V2_NOR_BOOT_BASE,
EDMINI_V2_NOR_BOOT_SIZE); EDMINI_V2_NOR_BOOT_SIZE);
platform_device_register(&edmini_v2_nor_flash); platform_device_register(&edmini_v2_nor_flash);
platform_device_register(&edmini_v2_gpio_leds);
platform_device_register(&edmini_v2_gpio_buttons);
pr_notice("edmini_v2: USB device port, flash write and power-off " pr_notice("edmini_v2: USB device port, flash write and power-off "
"are not yet supported.\n"); "are not yet supported.\n");
@ -247,16 +174,3 @@ static void __init edmini_v2_init(void)
i2c_register_board_info(0, &edmini_v2_i2c_rtc, 1); i2c_register_board_info(0, &edmini_v2_i2c_rtc, 1);
} }
/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
MACHINE_START(EDMINI_V2, "LaCie Ethernet Disk mini V2")
/* Maintainer: Christopher Moore <moore@free.fr> */
.atag_offset = 0x100,
.init_machine = edmini_v2_init,
.map_io = orion5x_map_io,
.init_early = orion5x_init_early,
.init_irq = orion5x_init_irq,
.timer = &orion5x_timer,
.fixup = tag_fixup_mem32,
.restart = orion5x_restart,
MACHINE_END

View File

@ -379,7 +379,9 @@ config LEDS_NS2
tristate "LED support for Network Space v2 GPIO LEDs" tristate "LED support for Network Space v2 GPIO LEDs"
depends on LEDS_CLASS depends on LEDS_CLASS
depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \ depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || \
MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 MACH_NETSPACE_MAX_V2 || MACH_D2NET_V2 || \
MACH_NETSPACE_V2_DT || MACH_INETSPACE_V2_DT || \
MACH_NETSPACE_MAX_V2_DT || MACH_NETSPACE_MINI_V2_DT
default y default y
help help
This option enable support for the dual-GPIO LED found on the This option enable support for the dual-GPIO LED found on the

View File

@ -30,6 +30,7 @@
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_data/leds-kirkwood-ns2.h> #include <linux/platform_data/leds-kirkwood-ns2.h>
#include <linux/of_gpio.h>
/* /*
* The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in * The Network Space v2 dual-GPIO LED is wired to a CPLD and can blink in
@ -263,6 +264,62 @@ static void delete_ns2_led(struct ns2_led_data *led_dat)
gpio_free(led_dat->slow); gpio_free(led_dat->slow);
} }
#ifdef CONFIG_OF_GPIO
/*
* Translate OpenFirmware node properties into platform_data.
*/
static int __devinit
ns2_leds_get_of_pdata(struct device *dev, struct ns2_led_platform_data *pdata)
{
struct device_node *np = dev->of_node;
struct device_node *child;
struct ns2_led *leds;
int num_leds = 0;
int i = 0;
num_leds = of_get_child_count(np);
if (!num_leds)
return -ENODEV;
leds = devm_kzalloc(dev, num_leds * sizeof(struct ns2_led),
GFP_KERNEL);
if (!leds)
return -ENOMEM;
for_each_child_of_node(np, child) {
const char *string;
int ret;
ret = of_get_named_gpio(child, "cmd-gpio", 0);
if (ret < 0)
return ret;
leds[i].cmd = ret;
ret = of_get_named_gpio(child, "slow-gpio", 0);
if (ret < 0)
return ret;
leds[i].slow = ret;
ret = of_property_read_string(child, "label", &string);
leds[i].name = (ret == 0) ? string : child->name;
ret = of_property_read_string(child, "linux,default-trigger",
&string);
if (ret == 0)
leds[i].default_trigger = string;
i++;
}
pdata->leds = leds;
pdata->num_leds = num_leds;
return 0;
}
static const struct of_device_id of_ns2_leds_match[] = {
{ .compatible = "lacie,ns2-leds", },
{},
};
#endif /* CONFIG_OF_GPIO */
static int __devinit ns2_led_probe(struct platform_device *pdev) static int __devinit ns2_led_probe(struct platform_device *pdev)
{ {
struct ns2_led_platform_data *pdata = pdev->dev.platform_data; struct ns2_led_platform_data *pdata = pdev->dev.platform_data;
@ -270,8 +327,22 @@ static int __devinit ns2_led_probe(struct platform_device *pdev)
int i; int i;
int ret; int ret;
#ifdef CONFIG_OF_GPIO
if (!pdata) {
pdata = devm_kzalloc(&pdev->dev,
sizeof(struct ns2_led_platform_data),
GFP_KERNEL);
if (!pdata)
return -ENOMEM;
ret = ns2_leds_get_of_pdata(&pdev->dev, pdata);
if (ret)
return ret;
}
#else
if (!pdata) if (!pdata)
return -EINVAL; return -EINVAL;
#endif /* CONFIG_OF_GPIO */
leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) * leds_data = devm_kzalloc(&pdev->dev, sizeof(struct ns2_led_data) *
pdata->num_leds, GFP_KERNEL); pdata->num_leds, GFP_KERNEL);
@ -314,6 +385,7 @@ static struct platform_driver ns2_led_driver = {
.driver = { .driver = {
.name = "leds-ns2", .name = "leds-ns2",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = of_match_ptr(of_ns2_leds_match),
}, },
}; };