diff --git a/0001-arm-imx-Switch-Wandboard-to-use-config_distro_bootcm.patch b/0001-arm-imx-Switch-Wandboard-to-use-config_distro_bootcm.patch new file mode 100644 index 0000000..706f5b7 --- /dev/null +++ b/0001-arm-imx-Switch-Wandboard-to-use-config_distro_bootcm.patch @@ -0,0 +1,143 @@ +From acc6bb569390f7e51127d76464db67a434a5d379 Mon Sep 17 00:00:00 2001 +From: Vagrant Cascadian +Date: Tue, 27 Oct 2015 12:49:40 -0700 +Subject: [PATCH 022/104] arm: imx: Switch Wandboard to use + config_distro_bootcmd.h. + +This allows for more flexible and standardized boot across multiple +platforms. + +Remove redundant legacy boot environment. + +Signed-off-by: Vagrant Cascadian +--- + include/configs/wandboard.h | 82 +++++++++++---------------------------------- + 1 file changed, 19 insertions(+), 63 deletions(-) + +diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h +index 6e8aec2..6408b5e 100644 +--- a/include/configs/wandboard.h ++++ b/include/configs/wandboard.h +@@ -88,19 +88,15 @@ + + #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG + #define CONFIG_EXTRA_ENV_SETTINGS \ +- "script=boot.scr\0" \ +- "image=zImage\0" \ +- "console=ttymxc0\0" \ ++ "console=ttymxc0,115200\0" \ + "splashpos=m,m\0" \ + "fdtfile=undefined\0" \ + "fdt_high=0xffffffff\0" \ + "initrd_high=0xffffffff\0" \ ++ "fdt_addr_r=0x18000000\0" \ + "fdt_addr=0x18000000\0" \ +- "boot_fdt=try\0" \ + "ip_dyn=yes\0" \ + "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \ +- "mmcpart=1\0" \ +- "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \ + "update_sd_firmware_filename=u-boot.imx\0" \ + "update_sd_firmware=" \ + "if test ${ip_dyn} = yes; then " \ +@@ -115,8 +111,6 @@ + "mmc write ${loadaddr} 0x2 ${fw_sz}; " \ + "fi; " \ + "fi\0" \ +- "mmcargs=setenv bootargs console=${console},${baudrate} " \ +- "root=${mmcroot}; run videoargs\0" \ + "videoargs=" \ + "setenv nextcon 0; " \ + "if hdmidet; then " \ +@@ -143,51 +137,6 @@ + "echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \ + "fi; " \ + "setenv bootargs ${bootargs} ${fbmem}\0" \ +- "loadbootscript=" \ +- "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ +- "bootscript=echo Running bootscript from mmc ...; " \ +- "source\0" \ +- "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ +- "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdtfile}\0" \ +- "mmcboot=echo Booting from mmc ...; " \ +- "run mmcargs; " \ +- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ +- "if run loadfdt; then " \ +- "bootz ${loadaddr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = try; then " \ +- "bootz; " \ +- "else " \ +- "echo WARN: Cannot load the DT; " \ +- "fi; " \ +- "fi; " \ +- "else " \ +- "bootz; " \ +- "fi;\0" \ +- "netargs=setenv bootargs console=${console},${baudrate} " \ +- "root=/dev/nfs " \ +- "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ +- "netboot=echo Booting from net ...; " \ +- "run netargs; " \ +- "if test ${ip_dyn} = yes; then " \ +- "setenv get_cmd dhcp; " \ +- "else " \ +- "setenv get_cmd tftp; " \ +- "fi; " \ +- "${get_cmd} ${image}; " \ +- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ +- "if ${get_cmd} ${fdt_addr} ${fdtfile}; then " \ +- "bootz ${loadaddr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = try; then " \ +- "bootz; " \ +- "else " \ +- "echo WARN: Cannot load the DT; " \ +- "fi; " \ +- "fi; " \ +- "else " \ +- "bootz; " \ +- "fi;\0" \ + "findfdt="\ + "if test $board_name = C1 && test $board_rev = MX6Q ; then " \ + "setenv fdtfile imx6q-wandboard.dtb; fi; " \ +@@ -199,19 +148,26 @@ + "setenv fdtfile imx6dl-wandboard-revb1.dtb; fi; " \ + "if test $fdtfile = undefined; then " \ + "echo WARNING: Could not determine dtb to use; fi; \0" \ ++ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ ++ "pxe_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ ++ "ramdisk_addr_r=0x13000000\0" \ ++ "ramdiskaddr=0x13000000\0" \ ++ "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ ++ BOOTENV ++ ++#define BOOT_TARGET_DEVICES(func) \ ++ func(MMC, mmc, 0) \ ++ func(MMC, mmc, 1) \ ++ func(USB, usb, 0) \ ++ func(PXE, pxe, na) \ ++ func(DHCP, dhcp, na) + + #define CONFIG_BOOTCOMMAND \ + "run findfdt; " \ +- "mmc dev ${mmcdev}; if mmc rescan; then " \ +- "if run loadbootscript; then " \ +- "run bootscript; " \ +- "else " \ +- "if run loadimage; then " \ +- "run mmcboot; " \ +- "else run netboot; " \ +- "fi; " \ +- "fi; " \ +- "else run netboot; fi" ++ "run distro_bootcmd" ++ ++#include ++#include + + /* Physical Memory Map */ + #define CONFIG_NR_DRAM_BANKS 1 +-- +2.5.0 + diff --git a/0002-fastboot-Implement-OEM-format-only-when-we-have-MMC-.patch b/0002-fastboot-Implement-OEM-format-only-when-we-have-MMC-.patch new file mode 100644 index 0000000..143adb2 --- /dev/null +++ b/0002-fastboot-Implement-OEM-format-only-when-we-have-MMC-.patch @@ -0,0 +1,37 @@ +From 4adef27013f76c03596e4fd65193b936943aa50a Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:04 +0200 +Subject: [PATCH 002/600] fastboot: Implement OEM format only when we have MMC + support + +The current fastboot support assumes that CONFIG_FASTBOOT_FLASH implies +that we have an MMC in our system, which might not be the case if we have +some other storage device. + +Change the configuration option protecting that call to +FASTBOOT_FLASH_MMC_DEV, that makes much more sense. + +Signed-off-by: Maxime Ripard +Reviewed-by: Tom Rini +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + drivers/usb/gadget/f_fastboot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c +index ca01a01..ece48e6 100644 +--- a/drivers/usb/gadget/f_fastboot.c ++++ b/drivers/usb/gadget/f_fastboot.c +@@ -554,7 +554,7 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req) + static void cb_oem(struct usb_ep *ep, struct usb_request *req) + { + char *cmd = req->buf; +-#ifdef CONFIG_FASTBOOT_FLASH ++#ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV + if (strncmp("format", cmd + 4, 6) == 0) { + char cmdbuf[32]; + sprintf(cmdbuf, "gpt write mmc %x $partitions", +-- +2.5.0 + diff --git a/0003-mmc-Add-generic-Kconfig-option.patch b/0003-mmc-Add-generic-Kconfig-option.patch new file mode 100644 index 0000000..b1bc75e --- /dev/null +++ b/0003-mmc-Add-generic-Kconfig-option.patch @@ -0,0 +1,38 @@ +From 7a777f6d6f358b8ab97baae82be03ab704d1bd1c Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:05 +0200 +Subject: [PATCH 003/600] mmc: Add generic Kconfig option + +Add a generic Kconfig option for the CONFIG_MMC option that was used before +in the configuration headers. + +Since all the architectures need to be converted to that first, depend on +an non-existent config option that will be extended with architectures that +use that option. + +Signed-off-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + drivers/mmc/Kconfig | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig +index 6277f92..d3d7d91 100644 +--- a/drivers/mmc/Kconfig ++++ b/drivers/mmc/Kconfig +@@ -1,5 +1,11 @@ + menu "MMC Host controller Support" + ++config MMC ++ bool "Enable MMC support" ++ depends on UNUSED ++ help ++ TODO: Move all architectures to use this option ++ + config DM_MMC + bool "Enable MMC controllers using Driver Model" + depends on DM +-- +2.5.0 + diff --git a/0004-sunxi-board-Only-try-to-use-the-MMC-related-function.patch b/0004-sunxi-board-Only-try-to-use-the-MMC-related-function.patch new file mode 100644 index 0000000..41d3f32 --- /dev/null +++ b/0004-sunxi-board-Only-try-to-use-the-MMC-related-function.patch @@ -0,0 +1,61 @@ +From f7d6b3cc1686f2fc6ea4c28590710c89bedd3a55 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:06 +0200 +Subject: [PATCH 004/600] sunxi: board: Only try to use the MMC related + functions if enabled + +So far, even if CONFIG_MMC was not enabled the board code was trying to use +the MMC-related functions, resulting in linker errors. + +Protect those calls by an ifdef. + +Signed-off-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + arch/arm/cpu/armv7/sunxi/board.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c +index 1d79ba1..4785ac6 100644 +--- a/arch/arm/cpu/armv7/sunxi/board.c ++++ b/arch/arm/cpu/armv7/sunxi/board.c +@@ -136,7 +136,7 @@ DECLARE_GLOBAL_DATA_PTR; + */ + u32 spl_boot_device(void) + { +- struct mmc *mmc0, *mmc1; ++ __maybe_unused struct mmc *mmc0, *mmc1; + /* + * When booting from the SD card or NAND memory, the "eGON.BT0" + * signature is expected to be found in memory at the address 0x0004 +@@ -157,15 +157,18 @@ u32 spl_boot_device(void) + return BOOT_DEVICE_BOARD; + + /* The BROM will try to boot from mmc0 first, so try that first. */ ++#ifdef CONFIG_MMC + mmc_initialize(gd->bd); + mmc0 = find_mmc_device(0); + if (sunxi_mmc_has_egon_boot_signature(mmc0)) + return BOOT_DEVICE_MMC1; ++#endif + + /* Fallback to booting NAND if enabled. */ + if (IS_ENABLED(CONFIG_SPL_NAND_SUPPORT)) + return BOOT_DEVICE_NAND; + ++#ifdef CONFIG_MMC + if (CONFIG_MMC_SUNXI_SLOT_EXTRA == 2) { + mmc1 = find_mmc_device(1); + if (sunxi_mmc_has_egon_boot_signature(mmc1)) { +@@ -179,6 +182,7 @@ u32 spl_boot_device(void) + return BOOT_DEVICE_MMC2; + } + } ++#endif + + panic("Could not determine boot source\n"); + return -1; /* Never reached */ +-- +2.5.0 + diff --git a/0005-sunxi-Use-Kconfig-CONFIG_MMC.patch b/0005-sunxi-Use-Kconfig-CONFIG_MMC.patch new file mode 100644 index 0000000..68cf6b1 --- /dev/null +++ b/0005-sunxi-Use-Kconfig-CONFIG_MMC.patch @@ -0,0 +1,84 @@ +From 44c798799f667310ce29ce264be5c4bff7a21cf2 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:07 +0200 +Subject: [PATCH 005/600] sunxi: Use Kconfig CONFIG_MMC + +Not all sunxi boards have an MMC embedded. Switching to the Kconfig option +will allow to enable or disable the support in each boards' defconfig. + +Signed-off-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + board/sunxi/Kconfig | 4 ++++ + drivers/mmc/Kconfig | 2 +- + include/configs/sunxi-common.h | 8 +++++--- + 3 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig +index b336777..f6f2a60 100644 +--- a/board/sunxi/Kconfig ++++ b/board/sunxi/Kconfig +@@ -227,6 +227,10 @@ config OLD_SUNXI_KERNEL_COMPAT + Set this to enable various workarounds for old kernels, this results in + sub-optimal settings for newer kernels, only enable if needed. + ++config MMC ++ depends on !UART0_PORT_F ++ default y if ARCH_SUNXI ++ + config MMC0_CD_PIN + string "Card detect pin for mmc0" + default "" +diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig +index d3d7d91..ceae7bc 100644 +--- a/drivers/mmc/Kconfig ++++ b/drivers/mmc/Kconfig +@@ -2,7 +2,7 @@ menu "MMC Host controller Support" + + config MMC + bool "Enable MMC support" +- depends on UNUSED ++ depends on ARCH_SUNXI + help + TODO: Move all architectures to use this option + +diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h +index 072934d..ddcfe94 100644 +--- a/include/configs/sunxi-common.h ++++ b/include/configs/sunxi-common.h +@@ -140,8 +140,7 @@ + #endif + + /* mmc config */ +-#if !defined(CONFIG_UART0_PORT_F) +-#define CONFIG_MMC ++#ifdef CONFIG_MMC + #define CONFIG_GENERIC_MMC + #define CONFIG_CMD_MMC + #define CONFIG_MMC_SUNXI +@@ -197,7 +196,7 @@ + + #define CONFIG_SPL_LIBDISK_SUPPORT + +-#if !defined(CONFIG_UART0_PORT_F) ++#ifdef CONFIG_MMC + #define CONFIG_SPL_MMC_SUPPORT + #endif + +@@ -355,9 +354,12 @@ extern int soft_i2c_gpio_scl; + #define CONFIG_ANDROID_BOOT_IMAGE + + #define CONFIG_FASTBOOT_FLASH ++ ++#ifdef CONFIG_MMC + #define CONFIG_FASTBOOT_FLASH_MMC_DEV 0 + #define CONFIG_EFI_PARTITION + #endif ++#endif + + #ifdef CONFIG_USB_FUNCTION_MASS_STORAGE + #define CONFIG_CMD_USB_MASS_STORAGE +-- +2.5.0 + diff --git a/0006-sun5i-Sync-the-DTSI-with-the-kernel.patch b/0006-sun5i-Sync-the-DTSI-with-the-kernel.patch new file mode 100644 index 0000000..d085ea5 --- /dev/null +++ b/0006-sun5i-Sync-the-DTSI-with-the-kernel.patch @@ -0,0 +1,274 @@ +From f0e8e8dacf60e8f44e77402102b6d67ae8f347c8 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:08 +0200 +Subject: [PATCH 006/600] sun5i: Sync the DTSI with the kernel + +Add the latest kernel changes to the sun5i family DTSI. + +Signed-off-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + arch/arm/dts/sun5i-a10s.dtsi | 47 ++++++++++++++++++++++++++++------- + arch/arm/dts/sun5i-a13.dtsi | 28 ++++++++++++++++++++- + arch/arm/dts/sun5i-r8.dtsi | 59 ++++++++++++++++++++++++++++++++++++++++++++ + arch/arm/dts/sun5i.dtsi | 22 +++++++++++++++++ + 4 files changed, 146 insertions(+), 10 deletions(-) + create mode 100644 arch/arm/dts/sun5i-r8.dtsi + +diff --git a/arch/arm/dts/sun5i-a10s.dtsi b/arch/arm/dts/sun5i-a10s.dtsi +index 4173e1e..bddd0de 100644 +--- a/arch/arm/dts/sun5i-a10s.dtsi ++++ b/arch/arm/dts/sun5i-a10s.dtsi +@@ -77,6 +77,15 @@ + clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; + status = "disabled"; + }; ++ ++ framebuffer@2 { ++ compatible = "allwinner,simple-framebuffer", ++ "simple-framebuffer"; ++ allwinner,pipeline = "de_be0-lcd0-tve0"; ++ clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, ++ <&ahb_gates 44>; ++ status = "disabled"; ++ }; + }; + + clocks { +@@ -85,6 +94,17 @@ + compatible = "allwinner,sun5i-a10s-ahb-gates-clk"; + reg = <0x01c20060 0x8>; + clocks = <&ahb>; ++ clock-indices = <0>, <1>, ++ <2>, <5>, <6>, ++ <7>, <8>, <9>, ++ <10>, <13>, ++ <14>, <17>, <18>, ++ <20>, <21>, <22>, ++ <26>, <28>, <32>, ++ <34>, <36>, <40>, ++ <43>, <44>, ++ <46>, <51>, ++ <52>; + clock-output-names = "ahb_usbotg", "ahb_ehci", + "ahb_ohci", "ahb_ss", "ahb_dma", + "ahb_bist", "ahb_mmc0", "ahb_mmc1", +@@ -103,6 +123,9 @@ + compatible = "allwinner,sun5i-a10s-apb0-gates-clk"; + reg = <0x01c20068 0x4>; + clocks = <&apb0>; ++ clock-indices = <0>, <3>, ++ <5>, <6>, ++ <10>; + clock-output-names = "apb0_codec", "apb0_iis", + "apb0_pio", "apb0_ir", + "apb0_keypad"; +@@ -113,9 +136,14 @@ + compatible = "allwinner,sun5i-a10s-apb1-gates-clk"; + reg = <0x01c2006c 0x4>; + clocks = <&apb1>; ++ clock-indices = <0>, <1>, ++ <2>, <16>, ++ <17>, <18>, ++ <19>; + clock-output-names = "apb1_i2c0", "apb1_i2c1", +- "apb1_i2c2", "apb1_uart0", "apb1_uart1", +- "apb1_uart2", "apb1_uart3"; ++ "apb1_i2c2", "apb1_uart0", ++ "apb1_uart1", "apb1_uart2", ++ "apb1_uart3"; + }; + }; + +@@ -137,6 +165,14 @@ + #size-cells = <0>; + }; + ++ pwm: pwm@01c20e00 { ++ compatible = "allwinner,sun5i-a10s-pwm"; ++ reg = <0x01c20e00 0xc>; ++ clocks = <&osc24M>; ++ #pwm-cells = <3>; ++ status = "disabled"; ++ }; ++ + uart0: serial@01c28000 { + compatible = "snps,dw-apb-uart"; + reg = <0x01c28000 0x400>; +@@ -176,13 +212,6 @@ + allwinner,pull = ; + }; + +- uart3_pins_a: uart3@0 { +- allwinner,pins = "PG9", "PG10"; +- allwinner,function = "uart3"; +- allwinner,drive = ; +- allwinner,pull = ; +- }; +- + emac_pins_a: emac0@0 { + allwinner,pins = "PA0", "PA1", "PA2", + "PA3", "PA4", "PA5", "PA6", +diff --git a/arch/arm/dts/sun5i-a13.dtsi b/arch/arm/dts/sun5i-a13.dtsi +index 976d4fa..d910d3a 100644 +--- a/arch/arm/dts/sun5i-a13.dtsi ++++ b/arch/arm/dts/sun5i-a13.dtsi +@@ -104,6 +104,16 @@ + compatible = "allwinner,sun5i-a13-ahb-gates-clk"; + reg = <0x01c20060 0x8>; + clocks = <&ahb>; ++ clock-indices = <0>, <1>, ++ <2>, <5>, <6>, ++ <7>, <8>, <9>, ++ <10>, <13>, ++ <14>, <20>, ++ <21>, <22>, ++ <28>, <32>, <36>, ++ <40>, <44>, ++ <46>, <51>, ++ <52>; + clock-output-names = "ahb_usbotg", "ahb_ehci", + "ahb_ohci", "ahb_ss", "ahb_dma", + "ahb_bist", "ahb_mmc0", "ahb_mmc1", +@@ -121,6 +131,8 @@ + compatible = "allwinner,sun5i-a13-apb0-gates-clk"; + reg = <0x01c20068 0x4>; + clocks = <&apb0>; ++ clock-indices = <0>, <5>, ++ <6>; + clock-output-names = "apb0_codec", "apb0_pio", + "apb0_ir"; + }; +@@ -130,8 +142,22 @@ + compatible = "allwinner,sun5i-a13-apb1-gates-clk"; + reg = <0x01c2006c 0x4>; + clocks = <&apb1>; ++ clock-indices = <0>, <1>, ++ <2>, <17>, ++ <19>; + clock-output-names = "apb1_i2c0", "apb1_i2c1", +- "apb1_i2c2", "apb1_uart1", "apb1_uart3"; ++ "apb1_i2c2", "apb1_uart1", ++ "apb1_uart3"; ++ }; ++ }; ++ ++ soc@01c00000 { ++ pwm: pwm@01c20e00 { ++ compatible = "allwinner,sun5i-a13-pwm"; ++ reg = <0x01c20e00 0xc>; ++ clocks = <&osc24M>; ++ #pwm-cells = <3>; ++ status = "disabled"; + }; + }; + }; +diff --git a/arch/arm/dts/sun5i-r8.dtsi b/arch/arm/dts/sun5i-r8.dtsi +new file mode 100644 +index 0000000..0ef8656 +--- /dev/null ++++ b/arch/arm/dts/sun5i-r8.dtsi +@@ -0,0 +1,59 @@ ++/* ++ * Copyright 2015 Free Electrons ++ * Copyright 2015 NextThing Co ++ * ++ * Maxime Ripard ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#include "sun5i-a13.dtsi" ++ ++/ { ++ chosen { ++ framebuffer@1 { ++ compatible = "allwinner,simple-framebuffer", ++ "simple-framebuffer"; ++ allwinner,pipeline = "de_be0-lcd0-tve0"; ++ clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, ++ <&ahb_gates 44>; ++ status = "disabled"; ++ }; ++ }; ++}; +diff --git a/arch/arm/dts/sun5i.dtsi b/arch/arm/dts/sun5i.dtsi +index 759117d..9ffee9b 100644 +--- a/arch/arm/dts/sun5i.dtsi ++++ b/arch/arm/dts/sun5i.dtsi +@@ -178,6 +178,7 @@ + compatible = "allwinner,sun4i-a10-axi-gates-clk"; + reg = <0x01c2005c 0x4>; + clocks = <&axi>; ++ clock-indices = <0>; + clock-output-names = "axi_dram"; + }; + +@@ -528,6 +529,27 @@ + allwinner,drive = ; + allwinner,pull = ; + }; ++ ++ uart3_pins_a: uart3@0 { ++ allwinner,pins = "PG9", "PG10"; ++ allwinner,function = "uart3"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++ ++ uart3_pins_cts_rts_a: uart3-cts-rts@0 { ++ allwinner,pins = "PG11", "PG12"; ++ allwinner,function = "uart3"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++ ++ pwm0_pins: pwm0 { ++ allwinner,pins = "PB2"; ++ allwinner,function = "pwm"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; + }; + + timer@01c20c00 { +-- +2.5.0 + diff --git a/0007-axp209-Sync-the-DTSI-with-the-kernel.patch b/0007-axp209-Sync-the-DTSI-with-the-kernel.patch new file mode 100644 index 0000000..b0e7163 --- /dev/null +++ b/0007-axp209-Sync-the-DTSI-with-the-kernel.patch @@ -0,0 +1,31 @@ +From 862ba7ed32a16a79ca06d7613e4de7794a20a883 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:09 +0200 +Subject: [PATCH 007/600] axp209: Sync the DTSI with the kernel + +Linux had a number of changes to the AXP209 DTSI. Sync ours. + +Signed-off-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + arch/arm/dts/axp209.dtsi | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm/dts/axp209.dtsi b/arch/arm/dts/axp209.dtsi +index 24c935c..051ab3b 100644 +--- a/arch/arm/dts/axp209.dtsi ++++ b/arch/arm/dts/axp209.dtsi +@@ -89,4 +89,9 @@ + regulator-name = "ldo5"; + }; + }; ++ ++ usb_power_supply: usb_power_supply { ++ compatible = "x-powers,axp202-usb-power-supply"; ++ status = "disabled"; ++ }; + }; +-- +2.5.0 + diff --git a/0008-sunxi-Add-CHIP-support.patch b/0008-sunxi-Add-CHIP-support.patch new file mode 100644 index 0000000..c900843 --- /dev/null +++ b/0008-sunxi-Add-CHIP-support.patch @@ -0,0 +1,293 @@ +From fd8133b725198978865ead730ff20d3991e05f20 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Thu, 15 Oct 2015 22:04:10 +0200 +Subject: [PATCH 008/600] sunxi: Add CHIP support + +The C.H.I.P. is a small SBC with an Allwinner R8, 8GB of NAND, 512MB of +RAM, USB host and OTG, a wifi / bluetooth combo chip, an audio/video jack +and two connectors to plug additional boards on top of it. + +The DT is identical to the DT submitted to the upstream kernel. + +Signed-off-by: Maxime Ripard +Reviewed-by: Tom Rini +Reviewed-by: Hans de Goede +Signed-off-by: Hans de Goede +--- + arch/arm/dts/Makefile | 3 +- + arch/arm/dts/sun5i-r8-chip.dts | 214 +++++++++++++++++++++++++++++++++++++++++ + board/sunxi/MAINTAINERS | 1 + + configs/CHIP_defconfig | 14 +++ + 4 files changed, 231 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/sun5i-r8-chip.dts + create mode 100644 configs/CHIP_defconfig + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 8cd282b..8b656e9 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -113,7 +113,8 @@ dtb-$(CONFIG_MACH_SUN5I) += \ + sun5i-a13-olinuxino.dtb \ + sun5i-a13-olinuxino-micro.dtb \ + sun5i-a13-q8-tablet.dtb \ +- sun5i-a13-utoo-p66.dtb ++ sun5i-a13-utoo-p66.dtb \ ++ sun5i-r8-chip.dtb + dtb-$(CONFIG_MACH_SUN6I) += \ + sun6i-a31-app4-evb1.dtb \ + sun6i-a31-colombus.dtb \ +diff --git a/arch/arm/dts/sun5i-r8-chip.dts b/arch/arm/dts/sun5i-r8-chip.dts +new file mode 100644 +index 0000000..abf3ccb +--- /dev/null ++++ b/arch/arm/dts/sun5i-r8-chip.dts +@@ -0,0 +1,214 @@ ++/* ++ * Copyright 2015 Free Electrons ++ * Copyright 2015 NextThing Co ++ * ++ * Maxime Ripard ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++#include "sun5i-r8.dtsi" ++#include "sunxi-common-regulators.dtsi" ++ ++#include ++#include ++ ++/ { ++ model = "NextThing C.H.I.P."; ++ compatible = "nextthing,chip", "allwinner,sun5i-r8"; ++ ++ aliases { ++ i2c0 = &i2c0; ++ i2c2 = &i2c2; ++ serial0 = &uart1; ++ serial1 = &uart3; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c0_pins_a>; ++ status = "okay"; ++ ++ axp209: pmic@34 { ++ reg = <0x34>; ++ ++ /* ++ * The interrupt is routed through the "External Fast ++ * Interrupt Request" pin (ball G13 of the module) ++ * directly to the main interrupt controller, without ++ * any other controller interfering. ++ */ ++ interrupts = <0>; ++ }; ++}; ++ ++#include "axp209.dtsi" ++ ++&i2c2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c2_pins_a>; ++ status = "okay"; ++ ++ xio: gpio@38 { ++ compatible = "nxp,pcf8574a"; ++ reg = <0x38>; ++ ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ interrupt-parent = <&pio>; ++ interrupts = <6 0 IRQ_TYPE_EDGE_FALLING>; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ }; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_a>; ++ vmmc-supply = <®_vcc3v3>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&otg_sram { ++ status = "okay"; ++}; ++ ++&pio { ++ chip_vbus_pin: chip_vbus_pin@0 { ++ allwinner,pins = "PB10"; ++ allwinner,function = "gpio_out"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++ ++ chip_id_det_pin: chip_id_det_pin@0 { ++ allwinner,pins = "PG2"; ++ allwinner,function = "gpio_in"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++}; ++ ++®_dcdc2 { ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1400000>; ++ regulator-name = "cpuvdd"; ++ regulator-always-on; ++}; ++ ++®_dcdc3 { ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-name = "corevdd"; ++ regulator-always-on; ++}; ++ ++®_ldo1 { ++ regulator-name = "rtcvdd"; ++}; ++ ++®_ldo2 { ++ regulator-min-microvolt = <2700000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "avcc"; ++ regulator-always-on; ++}; ++ ++®_ldo5 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-1v8"; ++}; ++ ++®_usb0_vbus { ++ pinctrl-0 = <&chip_vbus_pin>; ++ vin-supply = <®_vcc5v0>; ++ gpio = <&pio 1 10 GPIO_ACTIVE_HIGH>; /* PB10 */ ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins_b>; ++ status = "okay"; ++}; ++ ++&uart3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3_pins_a>, ++ <&uart3_pins_cts_rts_a>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usb_power_supply { ++ status = "okay"; ++}; ++ ++&usbphy { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&chip_id_det_pin>; ++ status = "okay"; ++ ++ usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ usb0_vbus-supply = <®_usb0_vbus>; ++ usb1_vbus-supply = <®_vcc5v0>; ++}; +diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS +index 99f29d3..96c4f3a 100644 +--- a/board/sunxi/MAINTAINERS ++++ b/board/sunxi/MAINTAINERS +@@ -24,6 +24,7 @@ F: configs/A13-OLinuXino_defconfig + F: configs/A13-OLinuXinoM_defconfig + F: configs/Auxtek-T003_defconfig + F: configs/Auxtek-T004_defconfig ++F: configs/CHIP_defconfig + F: configs/inet98v_rev2_defconfig + F: configs/mk802_a10s_defconfig + F: configs/q8_a13_tablet_defconfig +diff --git a/configs/CHIP_defconfig b/configs/CHIP_defconfig +new file mode 100644 +index 0000000..c4e8079 +--- /dev/null ++++ b/configs/CHIP_defconfig +@@ -0,0 +1,14 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN5I=y ++CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y ++# CONFIG_MMC is not set ++CONFIG_USB0_VBUS_PIN="PB10" ++CONFIG_DEFAULT_DEVICE_TREE="sun5i-r8-chip" ++CONFIG_SPL=y ++CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2" ++# CONFIG_CMD_IMLS is not set ++CONFIG_AXP_DCDC2_VOLT=1300 ++CONFIG_AXP_ALDO3_VOLT=3300 ++CONFIG_AXP_ALDO4_VOLT=3300 ++CONFIG_USB_MUSB_GADGET=y +-- +2.5.0 + diff --git a/U-Boot-board-ti-am335x-add-support-for-BeagleBone-Green.patch b/U-Boot-board-ti-am335x-add-support-for-BeagleBone-Green.patch new file mode 100644 index 0000000..5383775 --- /dev/null +++ b/U-Boot-board-ti-am335x-add-support-for-BeagleBone-Green.patch @@ -0,0 +1,76 @@ +From patchwork Wed Nov 11 15:10:52 2015 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot] board/ti/am335x: add support for BeagleBone Green +From: robertcnelson@gmail.com +X-Patchwork-Id: 542919 +Message-Id: <1447254652-19150-1-git-send-email-robertcnelson@gmail.com> +To: u-boot@lists.denx.de +Cc: Jason Kridner , Tom Rini +Date: Wed, 11 Nov 2015 09:10:52 -0600 + +SeeedStudio BeagleBone Green (BBG) is clone of the BeagleBone Black (BBB) minus +the HDMI port and addition of two Grove connectors (i2c2 and usart2). + +This board can be identified by the 1A value after A335BNLT (BBB) in the at24 eeprom: +1A: [aa 55 33 ee 41 33 33 35 42 4e 4c 54 1a 00 00 00 |.U3.A335BNLT....|] + +http://beagleboard.org/green +http://www.seeedstudio.com/wiki/Beaglebone_green + +In Mainline Kernel as of: +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=79a4e64c679d8a0b1037da174e4aea578c80c4e6 + +Patch tested on BeagleBone Black (rev C) and BeagleBone Green (production model) + +Signed-off-by: Robert Nelson +CC: Tom Rini +CC: Jason Kridner +Reviewed-by: Tom Rini +--- + board/ti/am335x/board.c | 12 +++++++++--- + include/configs/am335x_evm.h | 7 ++++++- + 2 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c +index f0cb1e2..f56d17e 100644 +--- a/board/ti/am335x/board.c ++++ b/board/ti/am335x/board.c +@@ -507,9 +507,15 @@ int board_late_init(void) + safe_string[sizeof(header.name)] = 0; + setenv("board_name", safe_string); + +- strncpy(safe_string, (char *)header.version, sizeof(header.version)); +- safe_string[sizeof(header.version)] = 0; +- setenv("board_rev", safe_string); ++ /* BeagleBone Green eeprom, board_rev: 0x1a 0x00 0x00 0x00 */ ++ if ( (header.version[0] == 0x1a) && (header.version[1] == 0x00) && ++ (header.version[2] == 0x00) && (header.version[3] == 0x00) ) { ++ setenv("board_rev", "BBG1"); ++ } else { ++ strncpy(safe_string, (char *)header.version, sizeof(header.version)); ++ safe_string[sizeof(header.version)] = 0; ++ setenv("board_rev", safe_string); ++ } + #endif + + return 0; +diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h +index d58816d..ed3fd34 100644 +--- a/include/configs/am335x_evm.h ++++ b/include/configs/am335x_evm.h +@@ -186,7 +186,12 @@ + "if test $board_name = A335BONE; then " \ + "setenv fdtfile am335x-bone.dtb; fi; " \ + "if test $board_name = A335BNLT; then " \ +- "setenv fdtfile am335x-boneblack.dtb; fi; " \ ++ "if test $board_rev = BBG1; then " \ ++ "setenv fdtfile am335x-bonegreen.dtb; " \ ++ "else " \ ++ "setenv fdtfile am335x-boneblack.dtb; " \ ++ "fi; " \ ++ "fi; " \ + "if test $board_name = A33515BB; then " \ + "setenv fdtfile am335x-evm.dtb; fi; " \ + "if test $board_name = A335X_SK; then " \ diff --git a/armv7-boards b/armv7-boards index c5d3831..30dea69 100644 --- a/armv7-boards +++ b/armv7-boards @@ -15,6 +15,8 @@ ba10_tv_box Bananapi Bananapro beagle_x15 +CHIP +chromebook_jerry Chuwi_V7_CW0825 cm_fx6 Colombus @@ -23,6 +25,7 @@ Cubieboard Cubieboard2 Cubietruck db-mv784mp-gp +firefly-rk3288 forfun_q88db highbank Hummingbird_A31 @@ -69,11 +72,14 @@ q8_a23_tablet_800x480 q8_a33_tablet_1024x600 q8_a33_tablet_800x480 paz00 +peach-pi +peach-pit r7-tv-dongle riotboard rpi_2 smdkv310 snow +spring sunxi_Gemei_G9 trimslice TZX-Q8-713B7 diff --git a/uboot-tools.spec b/uboot-tools.spec index fa9bfd3..daf80de 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2015.10 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Release: 3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities Group: Development/Tools @@ -11,13 +11,23 @@ URL: http://www.denx.de/wiki/U-Boot Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: armv7-boards -Patch1: 0001-wandboard-add-support-for-generic-distro-boot.patch +Patch1: 0001-arm-imx-Switch-Wandboard-to-use-config_distro_bootcm.patch Patch2: 0002-am33xx-add-support-for-generic-distro-boot.patch Patch3: 0003-Switch-omap4-boards-to-use-config_distro_defaults-an.patch Patch4: 0004-Add-BOOTENV_INIT_COMMAND-for-commands-that-may-be-ne.patch Patch5: 0005-port-utilite-to-distro-generic-boot-commands.patch Patch6: fix-beaglex15-usb-xhci.patch Patch7: 0001-image.c-Fix-non-Android-booting-with-ramdisk-and-or-.patch +Patch8: U-Boot-board-ti-am335x-add-support-for-BeagleBone-Green.patch + +Patch10: 0002-fastboot-Implement-OEM-format-only-when-we-have-MMC-.patch +Patch11: 0003-mmc-Add-generic-Kconfig-option.patch +Patch12: 0004-sunxi-board-Only-try-to-use-the-MMC-related-function.patch +Patch13: 0005-sunxi-Use-Kconfig-CONFIG_MMC.patch +Patch14: 0006-sun5i-Sync-the-DTSI-with-the-kernel.patch +Patch15: 0007-axp209-Sync-the-DTSI-with-the-kernel.patch +Patch16: 0008-sunxi-Add-CHIP-support.patch + BuildRequires: bc BuildRequires: dtc @@ -167,7 +177,14 @@ install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir} %endif %changelog -* Tue Nov 2 2015 Peter Robinson 2015.10-2 +* Sat Nov 14 2015 Peter Robinson 2015.10-3 +- Use upstream Wanboard distro boot patch +- Add support for BeagleBone Green +- Add initial support for C.H.I.P. +- Enable Rockchips: Firefly, Jerry devices +- Enable Exynos: Peach Pit/Pi, Sprint devices + +* Tue Nov 3 2015 Peter Robinson 2015.10-2 - Fix boot on some devices * Tue Oct 20 2015 Peter Robinson 2015.10-1