-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ebbba2c
commit 00a0910
Showing
16 changed files
with
8,965 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
From b0383806e04f3ec9bb8c54e1ff142b03fc16ef3c Mon Sep 17 00:00:00 2001 | ||
From: Willy Tarreau <w@xxxxxx> | ||
Date: Sun, 2 Dec 2012 19:59:28 +0100 | ||
Subject: [PATCH 1/9] ARM: atags: add support for Marvell's u-boot | ||
|
||
Marvell uses a specific atag in its u-boot which includes among other | ||
information the MAC addresses for up to 4 network interfaces. | ||
|
||
Signed-off-by: Willy Tarreau <w@xxxxxx> | ||
--- | ||
arch/arm/include/uapi/asm/setup.h | 17 +++++++++++++++++ | ||
1 file changed, 17 insertions(+) | ||
|
||
diff --git a/arch/arm/include/uapi/asm/setup.h b/arch/arm/include/uapi/asm/setup.h | ||
index 6b335a9ff8c8..614150b53643 100644 | ||
--- a/arch/arm/include/uapi/asm/setup.h | ||
+++ b/arch/arm/include/uapi/asm/setup.h | ||
@@ -144,6 +144,18 @@ struct tag_memclk { | ||
__u32 fmemclk; | ||
}; | ||
|
||
+/* Marvell uboot parameters */ | ||
+#define ATAG_MV_UBOOT 0x41000403 | ||
+struct tag_mv_uboot { | ||
+ __u32 uboot_version; | ||
+ __u32 tclk; | ||
+ __u32 sysclk; | ||
+ __u32 isUsbHost; | ||
+ __u8 macAddr[4][6]; | ||
+ __u16 mtu[4]; | ||
+ __u32 nand_ecc; | ||
+}; | ||
+ | ||
struct tag { | ||
struct tag_header hdr; | ||
union { | ||
@@ -166,6 +178,11 @@ struct tag { | ||
* DC21285 specific | ||
*/ | ||
struct tag_memclk memclk; | ||
+ | ||
+ /* | ||
+ * Marvell specific | ||
+ */ | ||
+ struct tag_mv_uboot mv_uboot; | ||
} u; | ||
}; | ||
|
||
-- | ||
2.19.2 | ||
|
47 changes: 47 additions & 0 deletions
47
0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
From 79a223586f088505b766e86b5762fb3399ab6f76 Mon Sep 17 00:00:00 2001 | ||
From: Willy Tarreau <w@xxxxxx> | ||
Date: Sun, 2 Dec 2012 19:56:58 +0100 | ||
Subject: [PATCH 2/9] ARM: atags/fdt: retrieve MAC addresses from Marvell boot | ||
loader | ||
|
||
The atags are parsed and if a Marvell atag is found, up to 4 MAC | ||
addresses are extracted there and assigned to node aliases eth0..3 | ||
with the name "mac-address". | ||
|
||
This was tested on my Mirabox and the two NICs had their correct | ||
address set. | ||
|
||
Signed-off-by: Willy Tarreau <w@xxxxxx> | ||
--- | ||
arch/arm/boot/compressed/atags_to_fdt.c | 8 +++++++- | ||
1 file changed, 7 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c | ||
index 41fa7316c52b..807ed160a4b9 100644 | ||
--- a/arch/arm/boot/compressed/atags_to_fdt.c | ||
+++ b/arch/arm/boot/compressed/atags_to_fdt.c | ||
@@ -19,7 +19,7 @@ static int node_offset(void *fdt, const char *node_path) | ||
} | ||
|
||
static int setprop(void *fdt, const char *node_path, const char *property, | ||
- uint32_t *val_array, int size) | ||
+ void *val_array, int size) | ||
{ | ||
int offset = node_offset(fdt, node_path); | ||
if (offset < 0) | ||
@@ -180,6 +180,12 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space) | ||
initrd_start); | ||
setprop_cell(fdt, "/chosen", "linux,initrd-end", | ||
initrd_start + initrd_size); | ||
+ } else if (atag->hdr.tag == ATAG_MV_UBOOT) { | ||
+ /* This ATAG provides up to 4 MAC addresses */ | ||
+ setprop(fdt, "eth0", "mac-address", atag->u.mv_uboot.macAddr[0], 6); | ||
+ setprop(fdt, "eth1", "mac-address", atag->u.mv_uboot.macAddr[1], 6); | ||
+ setprop(fdt, "eth2", "mac-address", atag->u.mv_uboot.macAddr[2], 6); | ||
+ setprop(fdt, "eth3", "mac-address", atag->u.mv_uboot.macAddr[3], 6); | ||
} | ||
} | ||
|
||
-- | ||
2.19.2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
From f1ec970d7f0ae471a18f23ce33ab00619f198d19 Mon Sep 17 00:00:00 2001 | ||
From: Kevin Mihelich <[email protected]> | ||
Date: Fri, 5 Sep 2014 15:41:19 -0600 | ||
Subject: [PATCH 3/9] SMILE Plug device tree file | ||
|
||
This adds a dts file for the SMILE Plug, which only differs from the Mirabox | ||
dts with the LED definitions. | ||
|
||
Signed-off-by: Kevin Mihelich <[email protected]> | ||
--- | ||
arch/arm/boot/dts/Makefile | 1 + | ||
arch/arm/boot/dts/armada-370-smileplug.dts | 173 +++++++++++++++++++++ | ||
2 files changed, 174 insertions(+) | ||
create mode 100644 arch/arm/boot/dts/armada-370-smileplug.dts | ||
|
||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile | ||
index b0e966d625b9..5f63975495e0 100644 | ||
--- a/arch/arm/boot/dts/Makefile | ||
+++ b/arch/arm/boot/dts/Makefile | ||
@@ -1149,6 +1149,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \ | ||
armada-370-db.dtb \ | ||
armada-370-dlink-dns327l.dtb \ | ||
armada-370-mirabox.dtb \ | ||
+ armada-370-smileplug.dtb \ | ||
armada-370-netgear-rn102.dtb \ | ||
armada-370-netgear-rn104.dtb \ | ||
armada-370-rd.dtb \ | ||
diff --git a/arch/arm/boot/dts/armada-370-smileplug.dts b/arch/arm/boot/dts/armada-370-smileplug.dts | ||
new file mode 100644 | ||
index 000000000000..d01308ab848b | ||
--- /dev/null | ||
+++ b/arch/arm/boot/dts/armada-370-smileplug.dts | ||
@@ -0,0 +1,173 @@ | ||
+/* | ||
+ * Device Tree file for Marvell SMILE Plug | ||
+ * | ||
+ * Kevin Mihelich <[email protected]> | ||
+ * Gregory CLEMENT <[email protected]> | ||
+ * | ||
+ * 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 <dt-bindings/gpio/gpio.h> | ||
+#include "armada-370.dtsi" | ||
+ | ||
+/ { | ||
+ model = "Marvell SMILE Plug"; | ||
+ compatible = "marvell,smileplug", "marvell,armada370", "marvell,armada-370-xp"; | ||
+ | ||
+ chosen { | ||
+ bootargs = "console=ttyS0,115200 earlyprintk"; | ||
+ }; | ||
+ | ||
+ memory { | ||
+ device_type = "memory"; | ||
+ reg = <0x00000000 0x20000000>; /* 512 MB */ | ||
+ }; | ||
+ | ||
+ soc { | ||
+ ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000 | ||
+ MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>; | ||
+ | ||
+ pcie-controller { | ||
+ status = "okay"; | ||
+ | ||
+ /* Internal mini-PCIe connector */ | ||
+ pcie@1,0 { | ||
+ /* Port 0, Lane 0 */ | ||
+ status = "okay"; | ||
+ }; | ||
+ | ||
+ /* Connected on the PCB to a USB 3.0 XHCI controller */ | ||
+ pcie@2,0 { | ||
+ /* Port 1, Lane 0 */ | ||
+ status = "okay"; | ||
+ }; | ||
+ }; | ||
+ | ||
+ internal-regs { | ||
+ serial@12000 { | ||
+ status = "okay"; | ||
+ }; | ||
+ timer@20300 { | ||
+ clock-frequency = <600000000>; | ||
+ status = "okay"; | ||
+ }; | ||
+ | ||
+ gpio_leds { | ||
+ compatible = "gpio-leds"; | ||
+ pinctrl-names = "default"; | ||
+ pinctrl-0 = <&smile_led_pins>; | ||
+ | ||
+ red_eyes_led { | ||
+ label = "smileplug:red:eyes"; | ||
+ gpios = <&gpio1 31 0>; | ||
+ default-state = "off"; | ||
+ }; | ||
+ | ||
+ green_eyes_led { | ||
+ label = "smileplug:green:eyes"; | ||
+ gpios = <&gpio2 0 0>; | ||
+ linux,default-trigger = "default-on"; | ||
+ }; | ||
+ | ||
+ red_smile_led { | ||
+ label = "smileplug:red:smile"; | ||
+ gpios = <&gpio1 15 0>; | ||
+ default-state = "off"; | ||
+ }; | ||
+ | ||
+ green_smile_led { | ||
+ label = "smileplug:green:smile"; | ||
+ gpios = <&gpio1 27 0>; | ||
+ linux,default-trigger = "default-on"; | ||
+ }; | ||
+ }; | ||
+ | ||
+ mdio { | ||
+ pinctrl-0 = <&mdio_pins>; | ||
+ pinctrl-names = "default"; | ||
+ phy0: ethernet-phy@0 { | ||
+ reg = <0>; | ||
+ }; | ||
+ | ||
+ phy1: ethernet-phy@1 { | ||
+ reg = <1>; | ||
+ }; | ||
+ }; | ||
+ ethernet@70000 { | ||
+ pinctrl-0 = <&ge0_rgmii_pins>; | ||
+ pinctrl-names = "default"; | ||
+ status = "okay"; | ||
+ phy = <&phy0>; | ||
+ phy-mode = "rgmii-id"; | ||
+ }; | ||
+ ethernet@74000 { | ||
+ pinctrl-0 = <&ge1_rgmii_pins>; | ||
+ pinctrl-names = "default"; | ||
+ status = "okay"; | ||
+ phy = <&phy1>; | ||
+ phy-mode = "rgmii-id"; | ||
+ }; | ||
+ | ||
+ mvsdio@d4000 { | ||
+ pinctrl-0 = <&sdio_pins3>; | ||
+ pinctrl-names = "default"; | ||
+ status = "okay"; | ||
+ /* | ||
+ * No CD or WP GPIOs: SDIO interface used for | ||
+ * Wifi/Bluetooth chip | ||
+ */ | ||
+ broken-cd; | ||
+ }; | ||
+ | ||
+ usb@50000 { | ||
+ status = "okay"; | ||
+ }; | ||
+ | ||
+ usb@51000 { | ||
+ status = "okay"; | ||
+ }; | ||
+ | ||
+ i2c@11000 { | ||
+ status = "okay"; | ||
+ clock-frequency = <100000>; | ||
+ pca9505: pca9505@25 { | ||
+ compatible = "nxp,pca9505"; | ||
+ gpio-controller; | ||
+ #gpio-cells = <2>; | ||
+ reg = <0x25>; | ||
+ }; | ||
+ }; | ||
+ | ||
+ nand@d0000 { | ||
+ status = "okay"; | ||
+ num-cs = <1>; | ||
+ marvell,nand-keep-config; | ||
+ marvell,nand-enable-arbiter; | ||
+ nand-on-flash-bbt; | ||
+ | ||
+ partition@0 { | ||
+ label = "U-Boot"; | ||
+ reg = <0 0x400000>; | ||
+ }; | ||
+ partition@400000 { | ||
+ label = "Linux"; | ||
+ reg = <0x400000 0x400000>; | ||
+ }; | ||
+ partition@800000 { | ||
+ label = "Filesystem"; | ||
+ reg = <0x800000 0x3f800000>; | ||
+ }; | ||
+ }; | ||
+ }; | ||
+ }; | ||
+}; | ||
+ | ||
+&pinctrl { | ||
+ smile_led_pins: smile-led-pins { | ||
+ marvell,pins = "mpp63", "mpp64", "mpp47", "mpp59"; | ||
+ marvell,function = "gpio"; | ||
+ }; | ||
+}; | ||
-- | ||
2.19.2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
From 659ffdc3f28c87dc54d3ee4d4d597f07ea4f0221 Mon Sep 17 00:00:00 2001 | ||
From: Kevin Mihelich <[email protected]> | ||
Date: Fri, 5 Sep 2014 15:43:56 -0600 | ||
Subject: [PATCH 4/9] fix mvsdio eMMC timing | ||
|
||
These changes from Globalscale change the MMC timing to allow the eMMC versions | ||
of the Mirabox and SMILE Plug to work. | ||
|
||
Signed-off-by: Kevin Mihelich <[email protected]> | ||
--- | ||
drivers/mmc/host/mvsdio.c | 4 +++- | ||
1 file changed, 3 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c | ||
index e22bbff89c8d..6b30c850ce07 100644 | ||
--- a/drivers/mmc/host/mvsdio.c | ||
+++ b/drivers/mmc/host/mvsdio.c | ||
@@ -93,7 +93,7 @@ static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data) | ||
tmout_index = fls(tmout - 1) - 12; | ||
if (tmout_index < 0) | ||
tmout_index = 0; | ||
- if (tmout_index > MVSD_HOST_CTRL_TMOUT_MAX) | ||
+// if (tmout_index > MVSD_HOST_CTRL_TMOUT_MAX) //by steven, try to setup the timeout to maximum value | ||
tmout_index = MVSD_HOST_CTRL_TMOUT_MAX; | ||
|
||
dev_dbg(host->dev, "data %s at 0x%08x: blocks=%d blksz=%d tmout=%u (%d)\n", | ||
@@ -616,6 +616,8 @@ static void mvsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | ||
u32 m = DIV_ROUND_UP(host->base_clock, ios->clock) - 1; | ||
if (m > MVSD_BASE_DIV_MAX) | ||
m = MVSD_BASE_DIV_MAX; | ||
+ if(ios->clock==50000000 ) //by steven | ||
+ m=1; | ||
mvsd_write(MVSD_CLK_DIV, m); | ||
host->clock = ios->clock; | ||
host->ns_per_clk = 1000000000 / (host->base_clock / (m+1)); | ||
-- | ||
2.19.2 | ||
|
Oops, something went wrong.