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]

 



Hello Sascha,

Am Tue, Mar 21, 2023 at 09:58:48AM +0100 schrieb Sascha Hauer:
> 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?

I can not speak for this particular board, but for others with the
same SoC (AT91SAM9G20).  The vendor approach is to setup the SDRAM
(and maybe more) in at91bootstrap, however those old SoCs are not
supported in recent version 4.x of that anymore, 3.x should work, I
never tried that for sam9g20 (we still use 1.x for those SoCs).
at91bootstrap then usually loads U-Boot from flash to SDRAM and starts
U-Boot.

You can do the same init in U-Boot SPL as well without the "real"
at91bootstrap, I think I saw that for other boards with similar SoCs.
And from what I saw here, barebox has the concept of multiple stages
as well, right?  So SDRAM must be initialized there in the very first
stage after ROM code running from (tiny) internal SRAM, equivalent to
what at91bootstrap does, before relocating to SDRAM.  There's no magic
thing the ROM code can do for you on that platform.

HTH & Greets
Alex

> 
> 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