diff options
Diffstat (limited to 'libre')
10 files changed, 930 insertions, 3 deletions
diff --git a/libre/linux-libre-dtb/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/libre/linux-libre-dtb/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch new file mode 100644 index 000000000..2f1f0f02e --- /dev/null +++ b/libre/linux-libre-dtb/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch @@ -0,0 +1,50 @@ +From c3378026429b3ff9f2236fe0700db7eb7e450a46 Mon Sep 17 00:00:00 2001 +From: Willy Tarreau <w@xxxxxx> +Date: Sun, 2 Dec 2012 19:59:28 +0100 +Subject: [PATCH 1/8] 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 979ff40..d1d0c19 100644 +--- a/arch/arm/include/uapi/asm/setup.h ++++ b/arch/arm/include/uapi/asm/setup.h +@@ -143,6 +143,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 { +@@ -165,6 +177,11 @@ struct tag { + * DC21285 specific + */ + struct tag_memclk memclk; ++ ++ /* ++ * Marvell specific ++ */ ++ struct tag_mv_uboot mv_uboot; + } u; + }; + +-- +2.4.4 diff --git a/libre/linux-libre-dtb/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/libre/linux-libre-dtb/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch new file mode 100644 index 000000000..61d60c889 --- /dev/null +++ b/libre/linux-libre-dtb/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch @@ -0,0 +1,46 @@ +From 8e6e2743ebdc2f46f59190391db3d2f37290047f Mon Sep 17 00:00:00 2001 +From: Willy Tarreau <w@xxxxxx> +Date: Sun, 2 Dec 2012 19:56:58 +0100 +Subject: [PATCH 2/8] 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 9448aa0..ac7b6ae 100644 +--- a/arch/arm/boot/compressed/atags_to_fdt.c ++++ b/arch/arm/boot/compressed/atags_to_fdt.c +@@ -18,7 +18,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) +@@ -179,6 +179,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.4.4 diff --git a/libre/linux-libre-dtb/0003-SMILE-Plug-device-tree-file.patch b/libre/linux-libre-dtb/0003-SMILE-Plug-device-tree-file.patch new file mode 100644 index 000000000..3e5faf6b5 --- /dev/null +++ b/libre/linux-libre-dtb/0003-SMILE-Plug-device-tree-file.patch @@ -0,0 +1,208 @@ +From 67570590136361a2bb0ed62beef15151dc1a4572 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich <kevin@archlinuxarm.org> +Date: Fri, 5 Sep 2014 15:41:19 -0600 +Subject: [PATCH 3/8] 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 <kevin@archlinuxarm.org> +--- + 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 992736b..2373ab3 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -625,6 +625,7 @@ dtb-$(CONFIG_ARCH_ZYNQ) += \ + dtb-$(CONFIG_MACH_ARMADA_370) += \ + armada-370-db.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 0000000..d01308a +--- /dev/null ++++ b/arch/arm/boot/dts/armada-370-smileplug.dts +@@ -0,0 +1,173 @@ ++/* ++ * Device Tree file for Marvell SMILE Plug ++ * ++ * Kevin Mihelich <kevin@archlinuxarm.org> ++ * Gregory CLEMENT <gregory.clement@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 <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.4.4 diff --git a/libre/linux-libre-dtb/0004-fix-mvsdio-eMMC-timing.patch b/libre/linux-libre-dtb/0004-fix-mvsdio-eMMC-timing.patch new file mode 100644 index 000000000..a147f3bc0 --- /dev/null +++ b/libre/linux-libre-dtb/0004-fix-mvsdio-eMMC-timing.patch @@ -0,0 +1,37 @@ +From 3fe82206833efc04b2625c60eb7f3ea6972d5a53 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich <kevin@archlinuxarm.org> +Date: Fri, 5 Sep 2014 15:43:56 -0600 +Subject: [PATCH 4/8] 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 <kevin@archlinuxarm.org> +--- + 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 a448498..14441a6 100644 +--- a/drivers/mmc/host/mvsdio.c ++++ b/drivers/mmc/host/mvsdio.c +@@ -96,7 +96,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", +@@ -618,6 +618,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.4.4 diff --git a/libre/linux-libre-dtb/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/libre/linux-libre-dtb/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch new file mode 100644 index 000000000..961e49c51 --- /dev/null +++ b/libre/linux-libre-dtb/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch @@ -0,0 +1,94 @@ +From 0cca0b90853cd9e03a5c6d2018d1fb5c790dce59 Mon Sep 17 00:00:00 2001 +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 18 Feb 2014 01:43:50 -0300 +Subject: [PATCH 5/8] net/smsc95xx: Allow mac address to be set as a parameter + +--- + drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c +index 26423ad..e29a323 100644 +--- a/drivers/net/usb/smsc95xx.c ++++ b/drivers/net/usb/smsc95xx.c +@@ -59,6 +59,7 @@ + #define SUSPEND_SUSPEND3 (0x08) + #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ + SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3) ++#define MAC_ADDR_LEN (6) + + struct smsc95xx_priv { + u32 mac_cr; +@@ -74,6 +75,10 @@ static bool turbo_mode = true; + module_param(turbo_mode, bool, 0644); + MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); + ++static char *macaddr = ":"; ++module_param(macaddr, charp, 0); ++MODULE_PARM_DESC(macaddr, "MAC address"); ++ + static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, + u32 *data, int in_pm) + { +@@ -763,8 +768,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) + return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); + } + ++/* Check the macaddr module parameter for a MAC address */ ++static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac) ++{ ++ int i, j, got_num, num; ++ u8 mtbl[MAC_ADDR_LEN]; ++ ++ if (macaddr[0] == ':') ++ return 0; ++ ++ i = 0; ++ j = 0; ++ num = 0; ++ got_num = 0; ++ while (j < MAC_ADDR_LEN) { ++ if (macaddr[i] && macaddr[i] != ':') { ++ got_num++; ++ if ('0' <= macaddr[i] && macaddr[i] <= '9') ++ num = num * 16 + macaddr[i] - '0'; ++ else if ('A' <= macaddr[i] && macaddr[i] <= 'F') ++ num = num * 16 + 10 + macaddr[i] - 'A'; ++ else if ('a' <= macaddr[i] && macaddr[i] <= 'f') ++ num = num * 16 + 10 + macaddr[i] - 'a'; ++ else ++ break; ++ i++; ++ } else if (got_num == 2) { ++ mtbl[j++] = (u8) num; ++ num = 0; ++ got_num = 0; ++ i++; ++ } else { ++ break; ++ } ++ } ++ ++ if (j == MAC_ADDR_LEN) { ++ netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: " ++ "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2], ++ mtbl[3], mtbl[4], mtbl[5]); ++ for (i = 0; i < MAC_ADDR_LEN; i++) ++ dev_mac[i] = mtbl[i]; ++ return 1; ++ } else { ++ return 0; ++ } ++} ++ + static void smsc95xx_init_mac_address(struct usbnet *dev) + { ++ /* Check module parameters */ ++ if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr)) ++ return; ++ + /* try reading mac address from EEPROM */ + if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, + dev->net->dev_addr) == 0) { +-- +2.4.4 diff --git a/libre/linux-libre-dtb/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch b/libre/linux-libre-dtb/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch new file mode 100644 index 000000000..6ca1f4b74 --- /dev/null +++ b/libre/linux-libre-dtb/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch @@ -0,0 +1,50 @@ +From 493b50d16cd287231bbe11da07f82184d80ceba2 Mon Sep 17 00:00:00 2001 +From: dobatog <dobatog@gmail.com> +Date: Thu, 26 Feb 2015 12:32:27 +0100 +Subject: [PATCH 6/8] ARM: TLV320AIC23 SoC Audio Codec: Fix errors reported + related to input routing signals. + +The following patch, based on stable v3.19, corrects the errors that are reported in the boot trace in reference to the Input Signals of the audio codec TLV320AIC23: + +tlv320aic23-codec 1-001a: Control not supported for path LLINEIN -> [NULL] -> Line Input +tlv320aic23-codec 1-001a: ASoC: no dapm match for LLINEIN --> NULL --> Line Input +tlv320aic23-codec 1-001a: ASoC: Failed to add route LLINEIN -> NULL -> Line Input +tlv320aic23-codec 1-001a: Control not supported for path RLINEIN -> [NULL] -> Line Input +tlv320aic23-codec 1-001a: ASoC: no dapm match for RLINEIN --> NULL --> Line Input +tlv320aic23-codec 1-001a: ASoC: Failed to add route RLINEIN -> NULL -> Line Input +tlv320aic23-codec 1-001a: Control not supported for path MICIN -> [NULL] -> Mic Input +tlv320aic23-codec 1-001a: ASoC: no dapm match for MICIN --> NULL --> Mic Input +tlv320aic23-codec 1-001a: ASoC: Failed to add route MICIN -> NULL -> Mic Input + +I am trying to set the sound system in a CM-510 (Compulab - SoM) based board with DT, using Simple-Card-Audio and the TLV320AIC23 audio codec included in the SoM . I faced this problem and thanks to the help of Sebastian Hesselbarth who noticed the possible error located in the structure snd_soc_dapm_route tlv320aic23_intercon[] , now errors are not reported. + +Tested on CM-510 (Compulab SoM Board). + +Signed-off-by: dobatog <dobatog@gmail.com> +Tested-by: Max Filippov <jcmvbkbc@gmail.com> +--- + sound/soc/codecs/tlv320aic23.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c +index cc17e7e..891f3aa 100644 +--- a/sound/soc/codecs/tlv320aic23.c ++++ b/sound/soc/codecs/tlv320aic23.c +@@ -174,10 +174,10 @@ static const struct snd_soc_dapm_route tlv320aic23_intercon[] = { + {"ROUT", NULL, "Output Mixer"}, + + /* Inputs */ +- {"Line Input", "NULL", "LLINEIN"}, +- {"Line Input", "NULL", "RLINEIN"}, ++ {"Line Input", NULL, "LLINEIN"}, ++ {"Line Input", NULL, "RLINEIN"}, + +- {"Mic Input", "NULL", "MICIN"}, ++ {"Mic Input", NULL, "MICIN"}, + + /* input mux */ + {"Capture Source", "Line", "Line Input"}, +-- +2.4.4 + + diff --git a/libre/linux-libre-dtb/0007-set-default-cubietruck-led-triggers.patch b/libre/linux-libre-dtb/0007-set-default-cubietruck-led-triggers.patch new file mode 100644 index 000000000..38c0482a3 --- /dev/null +++ b/libre/linux-libre-dtb/0007-set-default-cubietruck-led-triggers.patch @@ -0,0 +1,32 @@ +From b9c28f3bd758d09374fe35e86d5d5d4aeb7c6a0a Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich <kevin@archlinuxarm.org> +Date: Sun, 14 Jun 2015 13:20:25 -0600 +Subject: [PATCH 7/8] set default cubietruck led triggers + +Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org> +--- + arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +index 8f74a64..1161296 100644 +--- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts ++++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +@@ -205,6 +205,7 @@ + blue { + label = "cubietruck:blue:usr"; + gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; + }; + + orange { +@@ -220,6 +221,7 @@ + green { + label = "cubietruck:green:usr"; + gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "mmc0"; + }; + }; + +-- +2.4.4 diff --git a/libre/linux-libre-dtb/0008-USB-armory-support.patch b/libre/linux-libre-dtb/0008-USB-armory-support.patch new file mode 100644 index 000000000..eccf0bb62 --- /dev/null +++ b/libre/linux-libre-dtb/0008-USB-armory-support.patch @@ -0,0 +1,328 @@ +From 163421a4fef11bea6cf4bdb4ad9de67fb340bb90 Mon Sep 17 00:00:00 2001 +From: Kevin Mihelich <kevin@archlinuxarm.org> +Date: Sat, 7 Mar 2015 16:51:15 -0700 +Subject: [PATCH 8/8] USB armory support + +--- + arch/arm/boot/dts/Makefile | 3 + + arch/arm/boot/dts/imx53-usbarmory-common.dtsi | 209 ++++++++++++++++++++++++++ + arch/arm/boot/dts/imx53-usbarmory-gpio.dts | 26 ++++ + arch/arm/boot/dts/imx53-usbarmory-host.dts | 18 +++ + arch/arm/boot/dts/imx53-usbarmory.dts | 18 +++ + 5 files changed, 274 insertions(+) + create mode 100644 arch/arm/boot/dts/imx53-usbarmory-common.dtsi + create mode 100644 arch/arm/boot/dts/imx53-usbarmory-gpio.dts + create mode 100644 arch/arm/boot/dts/imx53-usbarmory-host.dts + create mode 100644 arch/arm/boot/dts/imx53-usbarmory.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 2373ab3..27728dd 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -252,6 +252,9 @@ dtb-$(CONFIG_SOC_IMX53) += \ + imx53-smd.dtb \ + imx53-tx53-x03x.dtb \ + imx53-tx53-x13x.dtb \ ++ imx53-usbarmory.dtb \ ++ imx53-usbarmory-gpio.dtb \ ++ imx53-usbarmory-host.dtb \ + imx53-voipac-bsb.dtb + dtb-$(CONFIG_SOC_IMX6Q) += \ + imx6dl-aristainetos_4.dtb \ +diff --git a/arch/arm/boot/dts/imx53-usbarmory-common.dtsi b/arch/arm/boot/dts/imx53-usbarmory-common.dtsi +new file mode 100644 +index 0000000..c7cbd84 +--- /dev/null ++++ b/arch/arm/boot/dts/imx53-usbarmory-common.dtsi +@@ -0,0 +1,209 @@ ++/* ++ * USB armory MkI device tree include file ++ * http://inversepath.com/usbarmory ++ * ++ * Copyright (C) 2015, Inverse Path ++ * Andrej Rosano <andrej@inversepath.com> ++ * ++ * Licensed under GPLv2 ++ */ ++ ++#include "imx53.dtsi" ++ ++/ { ++ model = "Inverse Path USB armory"; ++ compatible = "inversepath,imx53-usbarmory", "fsl,imx53"; ++}; ++ ++/ { ++ chosen { ++ stdout-path = &uart1; ++ }; ++ ++ memory { ++ reg = <0x70000000 0x20000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&led_pin_gpio4_27>; ++ ++ user { ++ label = "LED"; ++ gpios = <&gpio4 27 0>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ ++ soc { ++ aips@60000000 { ++ sahara: crypto@63ff8000 { ++ compatible = "fsl,imx53-sahara"; ++ reg = <0x63ff8000 0x4000>; ++ interrupts = <19 20>; ++ clocks = <&clks IMX5_CLK_SAHARA_IPG_GATE>, ++ <&clks IMX5_CLK_SAHARA_IPG_GATE>; ++ clock-names = "ipg", "ahb"; ++ }; ++ }; ++ }; ++}; ++ ++&cpu0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a8"; ++ reg = <0x0>; ++ clocks = <&clks IMX5_CLK_ARM>; ++ clock-latency = <61036>; ++ voltage-tolerance = <5>; ++ operating-points = < ++ /* kHz */ ++ 166666 850000 ++ 400000 900000 ++ 800000 1050000 ++ >; ++}; ++ ++&esdhc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_esdhc1>; ++ status = "okay"; ++}; ++ ++&iomuxc { ++ pinctrl-names = "default"; ++ ++ imx53-usbarmory { ++ pinctrl_pinheader: pinheadergrp { ++ fsl,pins = < ++ MX53_PAD_CSI0_DAT8__GPIO5_26 0xc0 ++ MX53_PAD_CSI0_DAT9__GPIO5_27 0xc0 ++ MX53_PAD_CSI0_DAT10__GPIO5_28 0xc0 ++ MX53_PAD_CSI0_DAT11__GPIO5_29 0xc0 ++ MX53_PAD_CSI0_DAT12__GPIO5_30 0xc0 ++ >; ++ }; ++ ++ led_pin_gpio4_27: led_gpio4_27@0 { ++ fsl,pins = < ++ MX53_PAD_DISP0_DAT6__GPIO4_27 0x80000000 ++ >; ++ }; ++ ++ pinctrl_esdhc1: esdhc1grp { ++ fsl,pins = < ++ MX53_PAD_SD1_DATA0__ESDHC1_DAT0 0x1d5 ++ MX53_PAD_SD1_DATA1__ESDHC1_DAT1 0x1d5 ++ MX53_PAD_SD1_DATA2__ESDHC1_DAT2 0x1d5 ++ MX53_PAD_SD1_DATA3__ESDHC1_DAT3 0x1d5 ++ MX53_PAD_SD1_CMD__ESDHC1_CMD 0x1d5 ++ MX53_PAD_SD1_CLK__ESDHC1_CLK 0x1d5 ++ >; ++ }; ++ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX53_PAD_CSI0_DAT8__I2C1_SDA 0xc0000000 ++ MX53_PAD_CSI0_DAT9__I2C1_SCL 0xc0000000 ++ >; ++ }; ++ ++ pinctrl_uart1: uart1grp { ++ fsl,pins = < ++ MX53_PAD_CSI0_DAT10__UART1_TXD_MUX 0x1e4 ++ MX53_PAD_CSI0_DAT11__UART1_RXD_MUX 0x1e4 ++ >; ++ }; ++ pinctrl_gpio5: gpio5grp { ++ fsl,pins = < ++ MX53_PAD_CSI0_DAT8__GPIO5_26 0xc0 ++ MX53_PAD_CSI0_DAT9__GPIO5_27 0xc0 ++ MX53_PAD_CSI0_DAT10__GPIO5_28 0xc0 ++ MX53_PAD_CSI0_DAT11__GPIO5_29 0xc0 ++ MX53_PAD_CSI0_DAT12__GPIO5_30 0xc0 ++ >; ++ }; ++ }; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart1>; ++ status = "okay"; ++}; ++ ++&vpu { ++ status = "okay"; ++}; ++ ++&i2c1 { ++ ltc3589: pmic@34 { ++ compatible = "lltc,ltc3589-2"; ++ reg = <0x34>; ++ ++ regulators { ++ sw1_reg: sw1 { ++ regulator-min-microvolt = <591930>; ++ regulator-max-microvolt = <1224671>; ++ lltc,fb-voltage-divider = <100000 158000>; ++ regulator-ramp-delay = <7000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw2_reg: sw2 { ++ regulator-min-microvolt = <704123>; ++ regulator-max-microvolt = <1456803>; ++ lltc,fb-voltage-divider = <180000 191000>; ++ regulator-ramp-delay = <7000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw3_reg: sw3 { ++ regulator-min-microvolt = <1341250>; ++ regulator-max-microvolt = <2775000>; ++ lltc,fb-voltage-divider = <270000 100000>; ++ regulator-ramp-delay = <7000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ bb_out_reg: bb-out { ++ regulator-min-microvolt = <3387341>; ++ regulator-max-microvolt = <3387341>; ++ lltc,fb-voltage-divider = <511000 158000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ldo1_reg: ldo1 { ++ regulator-min-microvolt = <1306329>; ++ regulator-max-microvolt = <1306329>; ++ lltc,fb-voltage-divider = <100000 158000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ ldo2_reg: ldo2 { ++ regulator-min-microvolt = <704123>; ++ regulator-max-microvolt = <1456806>; ++ lltc,fb-voltage-divider = <180000 191000>; ++ regulator-ramp-delay = <7000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ ldo3_reg: ldo3 { ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-boot-on; ++ }; ++ ++ ldo4_reg: ldo4 { ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <3200000>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx53-usbarmory-gpio.dts b/arch/arm/boot/dts/imx53-usbarmory-gpio.dts +new file mode 100644 +index 0000000..bf85ffa +--- /dev/null ++++ b/arch/arm/boot/dts/imx53-usbarmory-gpio.dts +@@ -0,0 +1,26 @@ ++/* ++ * USB armory MkI device mode device tree file ++ * http://inversepath.com/usbarmory ++ * ++ * Copyright (C) 2015, Inverse Path ++ * Andrej Rosano <andrej@inversepath.com> ++ * ++ * Licensed under GPLv2 ++ */ ++ ++/dts-v1/; ++ ++#include "imx53-usbarmory-common.dtsi" ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&iomuxc { ++ pinctrl-0 = <&pinctrl_pinheader>; ++}; ++ ++&uart1 { ++ status = "disabled"; ++}; +diff --git a/arch/arm/boot/dts/imx53-usbarmory-host.dts b/arch/arm/boot/dts/imx53-usbarmory-host.dts +new file mode 100644 +index 0000000..ea2ea45 +--- /dev/null ++++ b/arch/arm/boot/dts/imx53-usbarmory-host.dts +@@ -0,0 +1,18 @@ ++/* ++ * USB armory MkI host mode device tree file ++ * http://inversepath.com/usbarmory ++ * ++ * Copyright (C) 2015, Inverse Path ++ * Andrej Rosano <andrej@inversepath.com> ++ * ++ * Licensed under GPLv2 ++ */ ++ ++/dts-v1/; ++ ++#include "imx53-usbarmory-common.dtsi" ++ ++&usbotg { ++ dr_mode = "host"; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/imx53-usbarmory.dts b/arch/arm/boot/dts/imx53-usbarmory.dts +new file mode 100644 +index 0000000..902a73b +--- /dev/null ++++ b/arch/arm/boot/dts/imx53-usbarmory.dts +@@ -0,0 +1,18 @@ ++/* ++ * USB armory MkI device mode device tree file ++ * http://inversepath.com/usbarmory ++ * ++ * Copyright (C) 2015, Inverse Path ++ * Andrej Rosano <andrej@inversepath.com> ++ * ++ * Licensed under GPLv2 ++ */ ++ ++/dts-v1/; ++ ++#include "imx53-usbarmory-common.dtsi" ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; +-- +2.4.4 diff --git a/libre/linux-libre-dtb/PKGBUILD b/libre/linux-libre-dtb/PKGBUILD new file mode 100644 index 000000000..d7af00bb6 --- /dev/null +++ b/libre/linux-libre-dtb/PKGBUILD @@ -0,0 +1,81 @@ +# Maintainer: André Silva <emulatorman@parabola.nu> + +pkgname=linux-libre-dtb +_pkgbasever=4.1-gnu +_pkgver=4.1.6-gnu + +_srcname=linux-${_pkgbasever%-*} +pkgver=${_pkgver//-/_} +pkgrel=1 +rcnrel=armv7-x2 +pkgdesc='dtb files for Linux-libre' +arch=('armv7h') +url=('http://linux-libre.fsfla.org/') +license=('GPL2') +source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz" + "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz.sign" + "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz" + "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz.sign" + "https://repo.parabola.nu/other/rcn-libre/patches/${_pkgver%-*}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch" + "https://repo.parabola.nu/other/rcn-libre/patches/${_pkgver%-*}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch.sig" + '0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch' + '0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch' + '0003-SMILE-Plug-device-tree-file.patch' + '0004-fix-mvsdio-eMMC-timing.patch' + '0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch' + '0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch' + '0007-set-default-cubietruck-led-triggers.patch' + '0008-USB-armory-support.patch') +sha256sums=('48b2e5ea077d0a0bdcb205e67178e8eb5b2867db3b2364b701dbc801d9755324' + 'SKIP' + '335d3e07319ddf393c69e047c27bc5d28ee9e6126282619e3364db56a4331d34' + 'SKIP' + 'b06ab02787e6a61227d91faeaa3f230a3807f6426c388129a1d89150374e8b5b' + 'SKIP' + '203b07cc241f2374d1e18583fc9940cc69da134f992bff65a8b376c717aa7ea7' + '28fb8c937c2a0dc824ea755efba26ac5a4555f9a97d79f4e31f24b23c5eae59c' + '39bfd7f6e2df0b87b52488462edb2fbcfaf9e3eb2a974fc7b3bc22147352fece' + '59444ed7dce62697f1c35be340b740899e1d71398b334c419ad07cea838c6ed6' + '90cff98e43322e79c8d8b1c6456a328650f6af3ebf018086a82ab690a688da5d' + 'ed6cf79434d3b1c10e0e141ab6bdc2aa9abfe7e7df6bbb24b2097c0e0d62ac17' + '2c3df3d9a3d8fe11fefc485167a81c6fc53635b04ba0312bef144505dc0a6ce4' + '0f6b0146096ee7a04938d39a013c23cfd8719f3bef0956b5c88a33e7d7ecafdc') +validpgpkeys=( + '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva + 'C92BAA713B8D53D3CAE63FC9E6974752F9704456' # André Silva +) + +prepare() { + cd "${srcdir}/${_srcname}" + + # add upstream patch + if [ "${_pkgbasever}" != "${_pkgver}" ]; then + patch -p1 -i "${srcdir}/patch-${_pkgbasever}-${_pkgver}" + fi + + # RCN patch (CM3 firmware deblobbed) + patch -p1 -i "${srcdir}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch" + + # ALARM patches + patch -p1 -i "${srcdir}/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch" + patch -p1 -i "${srcdir}/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch" + patch -p1 -i "${srcdir}/0003-SMILE-Plug-device-tree-file.patch" + patch -p1 -i "${srcdir}/0004-fix-mvsdio-eMMC-timing.patch" + patch -p1 -i "${srcdir}/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch" + patch -p1 -i "${srcdir}/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch" + patch -p1 -i "${srcdir}/0007-set-default-cubietruck-led-triggers.patch" + patch -p1 -i "${srcdir}/0008-USB-armory-support.patch" +} + +build() { + cd "${srcdir}/${_srcname}" + + make ${MAKEFLAGS} dtbs +} + +package() { + cd "${srcdir}/${_srcname}" + + mkdir -p "${pkgdir}"/boot/dtbs + cp arch/arm/boot/dts/*.dtb "${pkgdir}/boot/dtbs" +} diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index 655c8c651..b1665d2c7 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -107,7 +107,7 @@ prepare() { patch -p1 -i "${srcdir}/patch-${_pkgbasever}-${_pkgver}" fi - if [ "${CARCH}" == "armv7h" ]; then + if [ "${CARCH}" = "armv7h" ]; then # RCN patch (CM3 firmware deblobbed) patch -p1 -i "${srcdir}/rcn-libre-${_pkgver%-*}-${rcnrel}.patch" @@ -170,7 +170,7 @@ build() { if [ "${CARCH}" != "armv7h" ]; then make ${MAKEFLAGS} LOCALVERSION= bzImage modules else - make ${MAKEFLAGS} LOCALVERSION= zImage modules dtbs + make ${MAKEFLAGS} LOCALVERSION= zImage modules fi } @@ -180,6 +180,8 @@ _package() { depends=('coreutils' 'linux-libre-firmware' 'kmod') if [ "${CARCH}" != "armv7h" ]; then depends+=('mkinitcpio>=0.7') + else + depends+=("linux-libre-dtb=${pkgver}") fi optdepends=('crda: to set the correct wireless channels of your country') provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}") @@ -206,7 +208,6 @@ _package() { cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}" else cp arch/$KARCH/boot/zImage "${pkgdir}/boot/vmlinuz-${pkgbase}" - cp arch/$KARCH/boot/dts/*.dtb "${pkgdir}/boot/dtbs" for _arm in armada-{370-smileplug,370-mirabox,xp-openblocks-ax3-4} dove-{d3plug,cubox}; do cat arch/$KARCH/boot/zImage arch/$KARCH/boot/dts/${_arm}.dtb > myimage-${_arm} |