Re: [PATCH 0/3] mtd: nand: atmel: legacy: fix boot on USB-A9G20

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Wolfram,

Nice to hear from you here ;)

On Sun, Mar 19, 2023 at 10:28:07PM +0100, Wolfram Sang wrote:
> Hi Sam,
> 
> > It is only a few weeks ago I argued that there was no users of the older
> > at91sam* boards, and then you prove me wrong here.
> 
> At your service ;)
> 
> > I will try to remember that you may be able to test should someone
> > decide to move the barebox support for qil_a9g20 to DT and add PBL
> > support in the process.
> 
> I am still new to at91 and barebox, but AFAICS the PBL support is only
> for MCI currently?

As of 4e410f3e68280 PBL is always used on AT91.

I have no idea how the SDRAM setup is done on the USB-A9G20. There seems
to be SDRAM setup code for the USB-A9263, but not for the USB-A9G20. Is
there some AT91Bootstrap required?

Anyway, what's really missing is DT support. I scribbled a patch to get
you started in case you are motivated. Basically it's: Compile in the
device tree, throw away all the device registration from the board code,
see where it gets you and fix the fallout ;)

Regards,
 Sascha


---------------------------8<---------------------------

>From 9aa1026fd4a713e958e83fa3cad6875b8ce14474 Mon Sep 17 00:00:00 2001
From: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
Date: Tue, 21 Mar 2023 09:45:41 +0100
Subject: [PATCH] usb-a9g20-dt-wip

Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
---
 arch/arm/boards/usb-a926x/init.c              | 416 +-----------------
 .../arm/boards/usb-a926x/usb_a9260_lowlevel.c |   8 +-
 .../arm/boards/usb-a926x/usb_a9263_lowlevel.c |   4 +-
 arch/arm/configs/usb_a9g20_defconfig          |  11 +-
 arch/arm/dts/Makefile                         |   3 +
 arch/arm/dts/usb_a9260.dts                    |   1 +
 arch/arm/dts/usb_a9263.dts                    |   1 +
 arch/arm/dts/usb_a9g20.dts                    |   1 +
 8 files changed, 20 insertions(+), 425 deletions(-)
 create mode 100644 arch/arm/dts/usb_a9260.dts
 create mode 100644 arch/arm/dts/usb_a9263.dts
 create mode 100644 arch/arm/dts/usb_a9g20.dts

diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c
index f91a6b1454..7735edf8aa 100644
--- a/arch/arm/boards/usb-a926x/init.c
+++ b/arch/arm/boards/usb-a926x/init.c
@@ -5,422 +5,8 @@
 #include <net.h>
 #include <init.h>
 #include <environment.h>
-#include <asm/armlinux.h>
-#include <generated/mach-types.h>
-#include <fs.h>
-#include <fcntl.h>
-#include <io.h>
-#include <envfs.h>
-#include <mach/at91/hardware.h>
-#include <mach/at91/at91sam926x.h>
-#include <nand.h>
-#include <linux/sizes.h>
-#include <linux/mtd/nand.h>
-#include <linux/mtd/rawnand.h>
-#include <linux/clk.h>
-#include <mach/at91/board.h>
-#include <mach/at91/at91sam9_smc.h>
-#include <mach/at91/at91sam9_sdramc.h>
-#include <gpio.h>
-#include <led.h>
-#include <mach/at91/iomux.h>
-#include <mach/at91/at91_pmc.h>
-#include <mach/at91/at91_rstc.h>
-#include <gpio_keys.h>
-#include <readkey.h>
-#include <spi/spi.h>
 #include <input/input.h>
-
-static void usb_a9260_set_board_type(void)
-{
-	if (machine_is_usb_a9g20())
-		armlinux_set_architecture(MACH_TYPE_USB_A9G20);
-	else if (machine_is_usb_a9263())
-		armlinux_set_architecture(MACH_TYPE_USB_A9263);
-	else
-		armlinux_set_architecture(MACH_TYPE_USB_A9260);
-}
-
-#if defined(CONFIG_NAND_ATMEL)
-static struct atmel_nand_data nand_pdata = {
-	.ale		= 21,
-	.cle		= 22,
-	.det_pin	= -EINVAL,
-	.rdy_pin	= AT91_PIN_PC13,
-	.enable_pin	= AT91_PIN_PC14,
-	.ecc_mode	= NAND_ECC_SOFT,
-	.on_flash_bbt	= 1,
-};
-
-static struct sam9_smc_config usb_a9260_nand_smc_config = {
-	.ncs_read_setup		= 0,
-	.nrd_setup		= 1,
-	.ncs_write_setup	= 0,
-	.nwe_setup		= 1,
-
-	.ncs_read_pulse		= 3,
-	.nrd_pulse		= 3,
-	.ncs_write_pulse	= 3,
-	.nwe_pulse		= 3,
-
-	.read_cycle		= 5,
-	.write_cycle		= 5,
-
-	.mode			= AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
-	.tdf_cycles		= 2,
-};
-
-static struct sam9_smc_config usb_a9g20_nand_smc_config = {
-	.ncs_read_setup		= 0,
-	.nrd_setup		= 2,
-	.ncs_write_setup	= 0,
-	.nwe_setup		= 2,
-
-	.ncs_read_pulse		= 4,
-	.nrd_pulse		= 4,
-	.ncs_write_pulse	= 4,
-	.nwe_pulse		= 4,
-
-	.read_cycle		= 7,
-	.write_cycle		= 7,
-
-	.mode			= AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
-	.tdf_cycles		= 3,
-};
-
-static void usb_a9260_add_device_nand(void)
-{
-	/* configure chip-select 3 (NAND) */
-	if (machine_is_usb_a9g20())
-		sam9_smc_configure(0, 3, &usb_a9g20_nand_smc_config);
-	else
-		sam9_smc_configure(0, 3, &usb_a9260_nand_smc_config);
-
-	if (machine_is_usb_a9263()) {
-		nand_pdata.rdy_pin	= AT91_PIN_PA22;
-		nand_pdata.enable_pin	= AT91_PIN_PD15;
-	}
-
-	at91_add_device_nand(&nand_pdata);
-}
-#else
-static void usb_a9260_add_device_nand(void) {}
-#endif
-
-#if defined(CONFIG_DRIVER_NET_MACB)
-static struct macb_platform_data macb_pdata = {
-	.phy_interface	= PHY_INTERFACE_MODE_RMII,
-	.phy_addr	= -1,
-};
-
-static void usb_a9260_phy_reset(void)
-{
-	at91_set_gpio_input(AT91_PIN_PA14, 0);
-	at91_set_gpio_input(AT91_PIN_PA15, 0);
-	at91_set_gpio_input(AT91_PIN_PA17, 0);
-	at91_set_gpio_input(AT91_PIN_PA25, 0);
-	at91_set_gpio_input(AT91_PIN_PA26, 0);
-	at91_set_gpio_input(AT91_PIN_PA28, 0);
-
-	/* same address for the different supported SoCs */
-	at91sam_phy_reset(IOMEM(AT91SAM926X_BASE_RSTC));
-}
-
-static void usb_a9260_add_device_eth(void)
-{
-	usb_a9260_phy_reset();
-	at91_add_device_eth(0, &macb_pdata);
-}
-#else
-static void usb_a9260_add_device_eth(void) {}
-#endif
-
-#if defined(CONFIG_DRIVER_SPI_ATMEL)
-static const struct spi_board_info usb_a9263_spi_devices[] = {
-	{
-		.name		= "mtd_dataflash",
-		.chip_select	= 0,
-		.max_speed_hz	= 15 * 1000 * 1000,
-		.bus_num	= 0,
-	}
-};
-
-static const struct spi_board_info usb_a9g20_spi_devices[] = {
-	{
-		.name		= "spi_mci",
-		.chip_select	= 0,
-		.max_speed_hz	= 25 * 1000 * 1000,
-		.bus_num	= 1,
-	}
-};
-
-static unsigned spi0_standard_cs_a9263[] = { AT91_PIN_PA5 };
-static struct at91_spi_platform_data spi_a9263_pdata = {
-	.chipselect = spi0_standard_cs_a9263,
-	.num_chipselect = ARRAY_SIZE(spi0_standard_cs_a9263),
-};
-
-static unsigned spi0_standard_cs_a9g20[] = { AT91_PIN_PB3 };
-static struct at91_spi_platform_data spi_a9g20_pdata = {
-	.chipselect = spi0_standard_cs_a9g20,
-	.num_chipselect = ARRAY_SIZE(spi0_standard_cs_a9g20),
-};
-
-static void usb_a9260_add_spi(void)
-{
-	if (machine_is_usb_a9263()) {
-		spi_register_board_info(usb_a9263_spi_devices,
-				ARRAY_SIZE(usb_a9263_spi_devices));
-		at91_add_device_spi(0, &spi_a9263_pdata);
-	} else if (machine_is_usb_a9g20() && at91sam9260_is_low_power_sdram()) {
-		spi_register_board_info(usb_a9g20_spi_devices,
-				ARRAY_SIZE(usb_a9g20_spi_devices));
-		at91_add_device_spi(1, &spi_a9g20_pdata);
-	}
-}
-#else
-static void usb_a9260_add_spi(void) {}
-#endif
-
-#if defined(CONFIG_MCI_ATMEL)
-static struct atmel_mci_platform_data __initdata usb_a9260_mci_data = {
-	.bus_width	= 4,
-	.detect_pin     = -EINVAL,
-	.wp_pin		= -EINVAL,
-};
-
-static void usb_a9260_add_device_mci(void)
-{
-	at91_add_device_mci(0, &usb_a9260_mci_data);
-}
-#else
-static void usb_a9260_add_device_mci(void) {}
-#endif
-
-#if defined(CONFIG_USB_OHCI)
-static struct at91_usbh_data ek_usbh_data = {
-	.ports		= 2,
-	.vbus_pin	= { -EINVAL, -EINVAL },
-};
-
-static void usb_a9260_add_device_usb(void)
-{
-	at91_add_device_usbh_ohci(&ek_usbh_data);
-}
-#else
-static void usb_a9260_add_device_usb(void) {}
-#endif
-
-#ifdef CONFIG_USB_GADGET_DRIVER_AT91
-/*
- * USB Device port
- */
-static struct at91_udc_data __initdata ek_udc_data = {
-	.vbus_pin	= AT91_PIN_PB11,
-	.pullup_pin	= -EINVAL,		/* pull-up driven by UDC */
-};
-
-static void __init ek_add_device_udc(void)
-{
-	if (machine_is_usb_a9260() || machine_is_usb_a9g20())
-		ek_udc_data.vbus_pin = AT91_PIN_PC5;
-
-	at91_add_device_udc(&ek_udc_data);
-}
-#else
-static void __init ek_add_device_udc(void) {}
-#endif
-
-#ifdef CONFIG_LED_GPIO
-struct gpio_led led = {
-	.gpio = AT91_PIN_PB21,
-	.led = {
-		.name = "user_led",
-	},
-};
-
-static void __init ek_add_led(void)
-{
-	if (machine_is_usb_a9263())
-		led.active_low = 1;
-
-	at91_set_gpio_output(led.gpio, led.active_low);
-	led_gpio_register(&led);
-}
-#else
-static void ek_add_led(void) {}
-#endif
-
-static int usb_a9260_mem_init(void)
-{
-	at91_add_device_sdram(0);
-
-	return 0;
-}
-mem_initcall(usb_a9260_mem_init);
-
-static void __init ek_add_device_button(void)
-{
-	at91_set_GPIO_periph(AT91_PIN_PB10, 1);	/* user push button, pull up enabled */
-	at91_set_deglitch(AT91_PIN_PB10, 1);
-
-	export_env_ull("dfu_button", AT91_PIN_PB10);
-}
-
-#ifdef CONFIG_CALAO_DAB_MMX
-struct gpio_led dab_mmx_leds[] = {
-	{
-		.gpio = AT91_PIN_PB20,
-		.led = {
-			.name = "user_led1",
-		},
-	}, {
-		.gpio = AT91_PIN_PB21,
-		.led = {
-			.name = "user_led2",
-		},
-	}, {
-		.gpio = AT91_PIN_PB22,
-		.led = {
-			.name = "user_led3",
-		},
-	}, {
-		.gpio = AT91_PIN_PB23,
-		.led = {
-			.name = "user_led4",
-		},
-	}, {
-		.gpio = AT91_PIN_PB24,
-		.led = {
-			.name = "red",
-		},
-	}, {
-		.gpio = AT91_PIN_PB30,
-		.led = {
-			.name = "orange",
-		},
-	}, {
-		.gpio = AT91_PIN_PB31,
-		.led = {
-			.name = "green",
-		},
-	},
-};
-
-#ifdef CONFIG_KEYBOARD_GPIO
-struct gpio_keys_button keys[] = {
-	{
-		.code = KEY_UP,
-		.gpio = AT91_PIN_PB25,
-	}, {
-		.code = KEY_HOME,
-		.gpio = AT91_PIN_PB13,
-	}, {
-		.code = KEY_DOWN,
-		.gpio = AT91_PIN_PA26,
-	}, {
-		.code = KEY_ENTER,
-		.gpio = AT91_PIN_PC9,
-	},
-};
-
-struct gpio_keys_platform_data gk_pdata = {
-	.buttons = keys,
-	.nbuttons = ARRAY_SIZE(keys),
-};
-
-static void usb_a9260_keyboard_device_dab_mmx(void)
-{
-	int i;
-
-	for (i = 0; i < gk_pdata.nbuttons; i++) {
-		/* user push button, pull up enabled */
-		keys[i].active_low = 1;
-		at91_set_GPIO_periph(keys[i].gpio, keys[i].active_low);
-		at91_set_deglitch(keys[i].gpio, 1);
-	}
-
-	add_gpio_keys_device(DEVICE_ID_DYNAMIC, &gk_pdata);
-}
-#else
-static void usb_a9260_keyboard_device_dab_mmx(void) {}
-#endif
-
-static void usb_a9260_device_dab_mmx(void)
-{
-	int i;
-
-	usb_a9260_keyboard_device_dab_mmx();
-
-	for (i = 0; i < ARRAY_SIZE(dab_mmx_leds); i++) {
-		dab_mmx_leds[i].active_low = 1;
-		at91_set_gpio_output(dab_mmx_leds[i].gpio, dab_mmx_leds[i].active_low);
-		led_gpio_register(&dab_mmx_leds[i]);
-	}
-}
-#else
-static void usb_a9260_device_dab_mmx(void) {}
-#endif
-
-static int usb_a9260_devices_init(void)
-{
-	usb_a9260_add_device_nand();
-	usb_a9260_add_device_mci();
-	usb_a9260_add_device_eth();
-	usb_a9260_add_spi();
-	usb_a9260_add_device_usb();
-	ek_add_device_udc();
-	ek_add_led();
-	ek_add_device_button();
-	usb_a9260_device_dab_mmx();
-
-	usb_a9260_set_board_type();
-
-	devfs_add_partition("nand0", 0x00000, SZ_128K, DEVFS_PARTITION_FIXED, "at91bootstrap_raw");
-	dev_add_bb_dev("at91bootstrap_raw", "at91bootstrap");
-	devfs_add_partition("nand0", SZ_128K, SZ_256K, DEVFS_PARTITION_FIXED, "self_raw");
-	dev_add_bb_dev("self_raw", "self0");
-	devfs_add_partition("nand0", SZ_256K + SZ_128K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw");
-	dev_add_bb_dev("env_raw", "env0");
-	devfs_add_partition("nand0", SZ_512K, SZ_128K, DEVFS_PARTITION_FIXED, "env_raw1");
-	dev_add_bb_dev("env_raw1", "env1");
-
-	if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC))
-		defaultenv_append_directory(defaultenv_usb_a926x);
-
-	return 0;
-}
-device_initcall(usb_a9260_devices_init);
-
-#ifndef CONFIG_CONSOLE_NONE
-static int usb_a9260_console_init(void)
-{
-	struct device *dev;
-
-	if (machine_is_usb_a9260()) {
-		barebox_set_model("Calao USB-A9260");
-		barebox_set_hostname("usb-a9260");
-	} else if (machine_is_usb_a9g20()) {
-		barebox_set_model("Calao USB-A9G20");
-		barebox_set_hostname("usb-a9g20");
-	} else {
-		barebox_set_model("Calao USB-A9263");
-		barebox_set_hostname("usb-a9263");
-	}
-
-	at91_register_uart(0, 0);
-
-	if (IS_ENABLED(CONFIG_CALAO_DAB_MMX)) {
-		at91_register_uart(2, 0);
-
-		dev = at91_register_uart(4, 0);
-		dev_set_param(dev, "active", "");
-	}
-
-	return 0;
-}
-console_initcall(usb_a9260_console_init);
-#endif
+#include <mach/at91/board.h>
 
 static int usb_a9260_main_clock(void)
 {
diff --git a/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c b/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
index 66753669d6..dd521f2131 100644
--- a/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
+++ b/arch/arm/boards/usb-a926x/usb_a9260_lowlevel.c
@@ -12,6 +12,8 @@
 #include <mach/at91/at91sam9260.h>
 #include <mach/at91/hardware.h>
 
+extern char __dtb_usb_a9260_start[];
+
 AT91_ENTRY_FUNCTION(start_usb_a9260, r0, r1, r2)
 {
 	arm_cpu_lowlevel_init();
@@ -20,9 +22,11 @@ AT91_ENTRY_FUNCTION(start_usb_a9260, r0, r1, r2)
 
 	barebox_arm_entry(AT91_CHIPSELECT_1,
 			  at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
-			  NULL);
+			  __dtb_usb_a9260_start);
 }
 
+extern char __dtb_usb_a9g20_start[];
+
 AT91_ENTRY_FUNCTION(start_usb_a9g20, r0, r1, r2)
 {
 	arm_cpu_lowlevel_init();
@@ -31,5 +35,5 @@ AT91_ENTRY_FUNCTION(start_usb_a9g20, r0, r1, r2)
 
 	barebox_arm_entry(AT91_CHIPSELECT_1,
 			  at91_get_sdram_size(IOMEM(AT91SAM9260_BASE_SDRAMC)),
-			  NULL);
+			  __dtb_usb_a9g20_start);
 }
diff --git a/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c b/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
index eda534c68e..2adf80dfb5 100644
--- a/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
+++ b/arch/arm/boards/usb-a926x/usb_a9263_lowlevel.c
@@ -105,6 +105,8 @@ static void __bare_init usb_a9263_board_config(struct at91sam926x_board_cfg *cfg
 		AT91_RSTC_RSTTYP_WATCHDOG;
 }
 
+extern char __dtb_usb_a9263_start[];
+
 static void __bare_init usb_a9263_init(bool has_mem_128m)
 {
 	struct at91sam926x_board_cfg cfg;
@@ -118,7 +120,7 @@ static void __bare_init usb_a9263_init(bool has_mem_128m)
 	at91sam9263_board_init(&cfg);
 
 	barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc),
-	                  NULL);
+	                  __dtb_usb_a9263_start);
 }
 
 AT91_ENTRY_FUNCTION(start_usb_a9263, r0, r1, r2)
diff --git a/arch/arm/configs/usb_a9g20_defconfig b/arch/arm/configs/usb_a9g20_defconfig
index cca8ee6097..93566bac15 100644
--- a/arch/arm/configs/usb_a9g20_defconfig
+++ b/arch/arm/configs/usb_a9g20_defconfig
@@ -1,15 +1,13 @@
 CONFIG_ARCH_AT91=y
 CONFIG_ARCH_AT91SAM9G20=y
 CONFIG_MACH_USB_A9G20=y
-CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x40000
 CONFIG_AEABI=y
 CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
-CONFIG_PBL_IMAGE=y
 CONFIG_MMU=y
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x40000
 CONFIG_EXPERIMENTAL=y
 CONFIG_MALLOC_TLSF=y
 CONFIG_PROMPT="USB-9G20:"
-CONFIG_GLOB=y
 CONFIG_PROMPT_HUSH_PS2="y"
 CONFIG_HUSH_FANCY_PROMPT=y
 CONFIG_CMDLINE_EDITING=y
@@ -20,7 +18,7 @@ CONFIG_BOOTM_VERBOSE=y
 CONFIG_BOOTM_INITRD=y
 CONFIG_BOOTM_OFTREE=y
 CONFIG_BOOTM_OFTREE_UIMAGE=y
-CONFIG_CONSOLE_ACTIVATE_ALL=y
+CONFIG_CONSOLE_ACTIVATE_NONE=y
 CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y
 # CONFIG_CMD_ARM_CPUINFO is not set
 CONFIG_LONGHELP=y
@@ -58,14 +56,13 @@ CONFIG_NET=y
 CONFIG_NET_NFS=y
 CONFIG_NET_NETCONSOLE=y
 CONFIG_NET_RESOLV=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_BAREBOX_DRIVERS=y
 CONFIG_DRIVER_NET_MACB=y
 CONFIG_DRIVER_SPI_ATMEL=y
 CONFIG_MTD=y
 # CONFIG_MTD_OOB_DEVICE is not set
 CONFIG_NAND=y
-# CONFIG_NAND_ECC_HW is not set
-# CONFIG_NAND_ECC_HW_SYNDROME is not set
-# CONFIG_NAND_ECC_HW_NONE is not set
 CONFIG_NAND_ATMEL=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DFU=y
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 0a7cceb461..66432ec7ac 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -171,6 +171,9 @@ lwl-$(CONFIG_MACH_WARP7) += imx7s-warp.dtb.o
 lwl-$(CONFIG_MACH_VF610_TWR) += vf610-twr.dtb.o
 lwl-$(CONFIG_MACH_WEBASTO_CCBV2) += imx6ul-webasto-ccbv2.dtb.o
 lwl-$(CONFIG_MACH_WEBASTO_CCBV2) += imx6ul-webasto-marvel.dtb.o
+lwl-$(CONFIG_MACH_USB_A9G20) += usb_a9g20.dtb.o
+lwl-$(CONFIG_MACH_USB_A9260) += usb_a9260.dtb.o
+lwl-$(CONFIG_MACH_USB_A9263) += usb_a9263.dtb.o
 lwl-$(CONFIG_MACH_ZII_RDU1) +=	\
 	imx51-zii-rdu1.dtb.o		\
 	imx51-zii-scu2-mezz.dtb.o	\
diff --git a/arch/arm/dts/usb_a9260.dts b/arch/arm/dts/usb_a9260.dts
new file mode 100644
index 0000000000..c034bb6544
--- /dev/null
+++ b/arch/arm/dts/usb_a9260.dts
@@ -0,0 +1 @@
+#include <arm/usb_a9260.dts>
diff --git a/arch/arm/dts/usb_a9263.dts b/arch/arm/dts/usb_a9263.dts
new file mode 100644
index 0000000000..5455a6e916
--- /dev/null
+++ b/arch/arm/dts/usb_a9263.dts
@@ -0,0 +1 @@
+#include <arm/usb_a9263.dts>
diff --git a/arch/arm/dts/usb_a9g20.dts b/arch/arm/dts/usb_a9g20.dts
new file mode 100644
index 0000000000..2989f423d8
--- /dev/null
+++ b/arch/arm/dts/usb_a9g20.dts
@@ -0,0 +1 @@
+#include <arm/usb_a9g20.dts>
-- 
2.30.2


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux