* [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
[not found] <I come back to this patch in the process of collecting things that has been left on the mailing-list.>
@ 2011-08-25 14:08 ` Nicolas Ferre
0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2011-08-25 14:08 UTC (permalink / raw)
To: linux-arm-kernel
Cc: linux-kernel, plagnioj, Nico Erfurth, Nicolas Ferre, Gregory Hermant
From: Nico Erfurth <ne@erfurth.eu>
Merge boards together as they are barely the same.
Signed-off-by: Nico Erfurth <ne@erfurth.eu>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
[nicolas.ferre@atmel.com: updated to new machine_desc structure]
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
---
Hi,
I come back to this patch in the process of collecting things that has been
left on the mailing-list.
Gregory, can you have a loot at it?
v3: update the machine_desc structure to match latest improvements.
v2: update against new common init
we must use it as we can detect the cpu type only after mapping
the system controler.
arch/arm/mach-at91/Makefile | 4 +-
arch/arm/mach-at91/board-usb-a9260.c | 230 --------------------
.../{board-usb-a9263.c => board-usb-a926x.c} | 56 +++++-
3 files changed, 52 insertions(+), 238 deletions(-)
delete mode 100644 arch/arm/mach-at91/board-usb-a9260.c
rename arch/arm/mach-at91/{board-usb-a9263.c => board-usb-a926x.c} (84%)
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index ecd64792..0b1b379 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -42,7 +42,7 @@ obj-$(CONFIG_MACH_RSI_EWS) += board-rsi-ews.o
obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
obj-$(CONFIG_MACH_CAM60) += board-cam60.o
obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o
-obj-$(CONFIG_MACH_USB_A9260) += board-usb-a9260.o
+obj-$(CONFIG_MACH_USB_A9260) += board-usb-a926x.o
obj-$(CONFIG_MACH_QIL_A9260) += board-qil-a9260.o
obj-$(CONFIG_MACH_AFEB9260) += board-afeb-9260v1.o
obj-$(CONFIG_MACH_CPU9260) += board-cpu9krea.o
@@ -54,7 +54,7 @@ obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
# AT91SAM9263 board-specific support
obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
-obj-$(CONFIG_MACH_USB_A9263) += board-usb-a9263.o
+obj-$(CONFIG_MACH_USB_A9263) += board-usb-a926x.o
obj-$(CONFIG_MACH_NEOCORE926) += board-neocore926.o
# AT91SAM9RL board-specific support
diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
deleted file mode 100644
index 8c4c1a0..0000000
--- a/arch/arm/mach-at91/board-usb-a9260.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * linux/arch/arm/mach-at91/board-usb-a9260.c
- *
- * Copyright (C) 2005 SAN People
- * Copyright (C) 2006 Atmel
- * Copyright (C) 2007 Calao-systems
- *
- * This program 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 program 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/spi/spi.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/clk.h>
-
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-
-#include <mach/hardware.h>
-#include <mach/board.h>
-#include <mach/gpio.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_shdwc.h>
-
-#include "sam9_smc.h"
-#include "generic.h"
-
-
-static void __init ek_init_early(void)
-{
- /* Initialize processor: 12.000 MHz crystal */
- at91_initialize(12000000);
-
- /* DBGU on ttyS0. (Rx & Tx only) */
- at91_register_uart(0, 0, 0);
-
- /* set serial console to ttyS0 (ie, DBGU) */
- at91_set_serial_console(0);
-}
-
-/*
- * USB Host port
- */
-static struct at91_usbh_data __initdata ek_usbh_data = {
- .ports = 2,
-};
-
-/*
- * USB Device port
- */
-static struct at91_udc_data __initdata ek_udc_data = {
- .vbus_pin = AT91_PIN_PC5,
- .pullup_pin = 0, /* pull-up driven by UDC */
-};
-
-/*
- * MACB Ethernet device
- */
-static struct at91_eth_data __initdata ek_macb_data = {
- .phy_irq_pin = AT91_PIN_PA31,
- .is_rmii = 1,
-};
-
-/*
- * NAND flash
- */
-static struct mtd_partition __initdata ek_nand_partition[] = {
- {
- .name = "Uboot & Kernel",
- .offset = 0,
- .size = SZ_16M,
- },
- {
- .name = "Root FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- },
- {
- .name = "FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- }
-};
-
-static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-{
- *num_partitions = ARRAY_SIZE(ek_nand_partition);
- return ek_nand_partition;
-}
-
-static struct atmel_nand_data __initdata ek_nand_data = {
- .ale = 21,
- .cle = 22,
-// .det_pin = ... not connected
- .rdy_pin = AT91_PIN_PC13,
- .enable_pin = AT91_PIN_PC14,
- .partition_info = nand_partitions,
-};
-
-static struct sam9_smc_config __initdata ek_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 void __init ek_add_device_nand(void)
-{
- /* configure chip-select 3 (NAND) */
- sam9_smc_configure(3, &ek_nand_smc_config);
-
- at91_add_device_nand(&ek_nand_data);
-}
-
-/*
- * GPIO Buttons
- */
-
-#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-static struct gpio_keys_button ek_buttons[] = {
- { /* USER PUSH BUTTON */
- .code = KEY_ENTER,
- .gpio = AT91_PIN_PB10,
- .active_low = 1,
- .desc = "user_pb",
- .wakeup = 1,
- }
-};
-
-static struct gpio_keys_platform_data ek_button_data = {
- .buttons = ek_buttons,
- .nbuttons = ARRAY_SIZE(ek_buttons),
-};
-
-static struct platform_device ek_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &ek_button_data,
- }
-};
-
-static void __init ek_add_device_buttons(void)
-{
- at91_set_GPIO_periph(AT91_PIN_PB10, 1); /* user push button, pull up enabled */
- at91_set_deglitch(AT91_PIN_PB10, 1);
-
- platform_device_register(&ek_button_device);
-}
-#else
-static void __init ek_add_device_buttons(void) {}
-#endif
-
-/*
- * LEDs
- */
-static struct gpio_led ek_leds[] = {
- { /* user_led (green) */
- .name = "user_led",
- .gpio = AT91_PIN_PB21,
- .active_low = 0,
- .default_trigger = "heartbeat",
- }
-};
-
-static void __init ek_board_init(void)
-{
- /* Serial */
- at91_add_device_serial();
- /* USB Host */
- at91_add_device_usbh(&ek_usbh_data);
- /* USB Device */
- at91_add_device_udc(&ek_udc_data);
- /* NAND */
- ek_add_device_nand();
- /* I2C */
- at91_add_device_i2c(NULL, 0);
- /* Ethernet */
- at91_add_device_eth(&ek_macb_data);
- /* Push Buttons */
- ek_add_device_buttons();
- /* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
- /* shutdown controller, wakeup button (5 msec low) */
- at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
- | AT91_SHDW_RTTWKEN);
-}
-
-MACHINE_START(USB_A9260, "CALAO USB_A9260")
- /* Maintainer: calao-systems */
- .timer = &at91sam926x_timer,
- .map_io = at91_map_io,
- .init_early = ek_init_early,
- .init_irq = at91_init_irq_default,
- .init_machine = ek_board_init,
-MACHINE_END
diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a926x.c
similarity index 84%
rename from arch/arm/mach-at91/board-usb-a9263.c
rename to arch/arm/mach-at91/board-usb-a926x.c
index 25e7937..e29adab 100644
--- a/arch/arm/mach-at91/board-usb-a9263.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -1,5 +1,5 @@
/*
- * linux/arch/arm/mach-at91/board-usb-a9263.c
+ * linux/arch/arm/mach-at91/board-usb-a926x.c
*
* Copyright (C) 2005 SAN People
* Copyright (C) 2007 Atmel Corporation.
@@ -74,6 +74,14 @@ static struct at91_udc_data __initdata ek_udc_data = {
.pullup_pin = 0, /* pull-up driven by UDC */
};
+void ek_add_device_udc(void)
+{
+ if (machine_is_usb_a9260())
+ ek_udc_data.vbus_pin = AT91_PIN_PC5;
+
+ at91_add_device_udc(&ek_udc_data);
+}
+
/*
* SPI devices.
*/
@@ -88,6 +96,12 @@ static struct spi_board_info ek_spi_devices[] = {
#endif
};
+void ek_add_device_spi(void)
+{
+ if (machine_is_usb_a9263())
+ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+}
+
/*
* MACB Ethernet device
*/
@@ -96,12 +110,20 @@ static struct at91_eth_data __initdata ek_macb_data = {
.is_rmii = 1,
};
+void ek_add_device_eth(void)
+{
+ if (machine_is_usb_a9260())
+ ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
+
+ at91_add_device_eth(&ek_macb_data);
+}
+
/*
* NAND flash
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
- .name = "Linux Kernel",
+ .name = "Uboot & Kernel",
.offset = 0,
.size = SZ_16M,
},
@@ -152,6 +174,11 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {
static void __init ek_add_device_nand(void)
{
+ if (machine_is_usb_a9260()) {
+ ek_nand_data.rdy_pin = AT91_PIN_PC13;
+ ek_nand_data.enable_pin = AT91_PIN_PC14;
+ }
+
/* configure chip-select 3 (NAND) */
sam9_smc_configure(3, &ek_nand_smc_config);
@@ -210,6 +237,14 @@ static struct gpio_led ek_leds[] = {
}
};
+void ek_add_device_leds(void)
+{
+ if (machine_is_usb_a9260())
+ ek_leds[0].active_low = 0;
+
+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+}
+
static void __init ek_board_init(void)
{
@@ -218,11 +253,11 @@ static void __init ek_board_init(void)
/* USB Host */
at91_add_device_usbh(&ek_usbh_data);
/* USB Device */
- at91_add_device_udc(&ek_udc_data);
+ ek_add_device_udc();
/* SPI */
- at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+ ek_add_device_spi();
/* Ethernet */
- at91_add_device_eth(&ek_macb_data);
+ ek_add_device_eth();
/* NAND */
ek_add_device_nand();
/* I2C */
@@ -230,7 +265,7 @@ static void __init ek_board_init(void)
/* Push Buttons */
ek_add_device_buttons();
/* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+ ek_add_device_leds();
/* shutdown controller, wakeup button (5 msec low) */
at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
| AT91_SHDW_RTTWKEN);
@@ -244,3 +279,12 @@ MACHINE_START(USB_A9263, "CALAO USB_A9263")
.init_irq = at91_init_irq_default,
.init_machine = ek_board_init,
MACHINE_END
+
+MACHINE_START(USB_A9260, "CALAO USB_A9260")
+ /* Maintainer: calao-systems */
+ .timer = &at91sam926x_timer,
+ .map_io = ek_map_io,
+ .init_early = ek_init_early,
+ .init_irq = at91_init_irq_default,
+ .init_machine = ek_board_init,
+MACHINE_END
--
1.7.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
@ 2011-08-25 14:08 ` Nicolas Ferre
0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2011-08-25 14:08 UTC (permalink / raw)
To: linux-arm-kernel
From: Nico Erfurth <ne@erfurth.eu>
Merge boards together as they are barely the same.
Signed-off-by: Nico Erfurth <ne@erfurth.eu>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
[nicolas.ferre at atmel.com: updated to new machine_desc structure]
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
---
Hi,
I come back to this patch in the process of collecting things that has been
left on the mailing-list.
Gregory, can you have a loot at it?
v3: update the machine_desc structure to match latest improvements.
v2: update against new common init
we must use it as we can detect the cpu type only after mapping
the system controler.
arch/arm/mach-at91/Makefile | 4 +-
arch/arm/mach-at91/board-usb-a9260.c | 230 --------------------
.../{board-usb-a9263.c => board-usb-a926x.c} | 56 +++++-
3 files changed, 52 insertions(+), 238 deletions(-)
delete mode 100644 arch/arm/mach-at91/board-usb-a9260.c
rename arch/arm/mach-at91/{board-usb-a9263.c => board-usb-a926x.c} (84%)
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index ecd64792..0b1b379 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -42,7 +42,7 @@ obj-$(CONFIG_MACH_RSI_EWS) += board-rsi-ews.o
obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
obj-$(CONFIG_MACH_CAM60) += board-cam60.o
obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o
-obj-$(CONFIG_MACH_USB_A9260) += board-usb-a9260.o
+obj-$(CONFIG_MACH_USB_A9260) += board-usb-a926x.o
obj-$(CONFIG_MACH_QIL_A9260) += board-qil-a9260.o
obj-$(CONFIG_MACH_AFEB9260) += board-afeb-9260v1.o
obj-$(CONFIG_MACH_CPU9260) += board-cpu9krea.o
@@ -54,7 +54,7 @@ obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
# AT91SAM9263 board-specific support
obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
-obj-$(CONFIG_MACH_USB_A9263) += board-usb-a9263.o
+obj-$(CONFIG_MACH_USB_A9263) += board-usb-a926x.o
obj-$(CONFIG_MACH_NEOCORE926) += board-neocore926.o
# AT91SAM9RL board-specific support
diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
deleted file mode 100644
index 8c4c1a0..0000000
--- a/arch/arm/mach-at91/board-usb-a9260.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * linux/arch/arm/mach-at91/board-usb-a9260.c
- *
- * Copyright (C) 2005 SAN People
- * Copyright (C) 2006 Atmel
- * Copyright (C) 2007 Calao-systems
- *
- * This program 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 program 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/spi/spi.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/clk.h>
-
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-
-#include <mach/hardware.h>
-#include <mach/board.h>
-#include <mach/gpio.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_shdwc.h>
-
-#include "sam9_smc.h"
-#include "generic.h"
-
-
-static void __init ek_init_early(void)
-{
- /* Initialize processor: 12.000 MHz crystal */
- at91_initialize(12000000);
-
- /* DBGU on ttyS0. (Rx & Tx only) */
- at91_register_uart(0, 0, 0);
-
- /* set serial console to ttyS0 (ie, DBGU) */
- at91_set_serial_console(0);
-}
-
-/*
- * USB Host port
- */
-static struct at91_usbh_data __initdata ek_usbh_data = {
- .ports = 2,
-};
-
-/*
- * USB Device port
- */
-static struct at91_udc_data __initdata ek_udc_data = {
- .vbus_pin = AT91_PIN_PC5,
- .pullup_pin = 0, /* pull-up driven by UDC */
-};
-
-/*
- * MACB Ethernet device
- */
-static struct at91_eth_data __initdata ek_macb_data = {
- .phy_irq_pin = AT91_PIN_PA31,
- .is_rmii = 1,
-};
-
-/*
- * NAND flash
- */
-static struct mtd_partition __initdata ek_nand_partition[] = {
- {
- .name = "Uboot & Kernel",
- .offset = 0,
- .size = SZ_16M,
- },
- {
- .name = "Root FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- },
- {
- .name = "FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- }
-};
-
-static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-{
- *num_partitions = ARRAY_SIZE(ek_nand_partition);
- return ek_nand_partition;
-}
-
-static struct atmel_nand_data __initdata ek_nand_data = {
- .ale = 21,
- .cle = 22,
-// .det_pin = ... not connected
- .rdy_pin = AT91_PIN_PC13,
- .enable_pin = AT91_PIN_PC14,
- .partition_info = nand_partitions,
-};
-
-static struct sam9_smc_config __initdata ek_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 void __init ek_add_device_nand(void)
-{
- /* configure chip-select 3 (NAND) */
- sam9_smc_configure(3, &ek_nand_smc_config);
-
- at91_add_device_nand(&ek_nand_data);
-}
-
-/*
- * GPIO Buttons
- */
-
-#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-static struct gpio_keys_button ek_buttons[] = {
- { /* USER PUSH BUTTON */
- .code = KEY_ENTER,
- .gpio = AT91_PIN_PB10,
- .active_low = 1,
- .desc = "user_pb",
- .wakeup = 1,
- }
-};
-
-static struct gpio_keys_platform_data ek_button_data = {
- .buttons = ek_buttons,
- .nbuttons = ARRAY_SIZE(ek_buttons),
-};
-
-static struct platform_device ek_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &ek_button_data,
- }
-};
-
-static void __init ek_add_device_buttons(void)
-{
- at91_set_GPIO_periph(AT91_PIN_PB10, 1); /* user push button, pull up enabled */
- at91_set_deglitch(AT91_PIN_PB10, 1);
-
- platform_device_register(&ek_button_device);
-}
-#else
-static void __init ek_add_device_buttons(void) {}
-#endif
-
-/*
- * LEDs
- */
-static struct gpio_led ek_leds[] = {
- { /* user_led (green) */
- .name = "user_led",
- .gpio = AT91_PIN_PB21,
- .active_low = 0,
- .default_trigger = "heartbeat",
- }
-};
-
-static void __init ek_board_init(void)
-{
- /* Serial */
- at91_add_device_serial();
- /* USB Host */
- at91_add_device_usbh(&ek_usbh_data);
- /* USB Device */
- at91_add_device_udc(&ek_udc_data);
- /* NAND */
- ek_add_device_nand();
- /* I2C */
- at91_add_device_i2c(NULL, 0);
- /* Ethernet */
- at91_add_device_eth(&ek_macb_data);
- /* Push Buttons */
- ek_add_device_buttons();
- /* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
- /* shutdown controller, wakeup button (5 msec low) */
- at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
- | AT91_SHDW_RTTWKEN);
-}
-
-MACHINE_START(USB_A9260, "CALAO USB_A9260")
- /* Maintainer: calao-systems */
- .timer = &at91sam926x_timer,
- .map_io = at91_map_io,
- .init_early = ek_init_early,
- .init_irq = at91_init_irq_default,
- .init_machine = ek_board_init,
-MACHINE_END
diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a926x.c
similarity index 84%
rename from arch/arm/mach-at91/board-usb-a9263.c
rename to arch/arm/mach-at91/board-usb-a926x.c
index 25e7937..e29adab 100644
--- a/arch/arm/mach-at91/board-usb-a9263.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -1,5 +1,5 @@
/*
- * linux/arch/arm/mach-at91/board-usb-a9263.c
+ * linux/arch/arm/mach-at91/board-usb-a926x.c
*
* Copyright (C) 2005 SAN People
* Copyright (C) 2007 Atmel Corporation.
@@ -74,6 +74,14 @@ static struct at91_udc_data __initdata ek_udc_data = {
.pullup_pin = 0, /* pull-up driven by UDC */
};
+void ek_add_device_udc(void)
+{
+ if (machine_is_usb_a9260())
+ ek_udc_data.vbus_pin = AT91_PIN_PC5;
+
+ at91_add_device_udc(&ek_udc_data);
+}
+
/*
* SPI devices.
*/
@@ -88,6 +96,12 @@ static struct spi_board_info ek_spi_devices[] = {
#endif
};
+void ek_add_device_spi(void)
+{
+ if (machine_is_usb_a9263())
+ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+}
+
/*
* MACB Ethernet device
*/
@@ -96,12 +110,20 @@ static struct at91_eth_data __initdata ek_macb_data = {
.is_rmii = 1,
};
+void ek_add_device_eth(void)
+{
+ if (machine_is_usb_a9260())
+ ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
+
+ at91_add_device_eth(&ek_macb_data);
+}
+
/*
* NAND flash
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
- .name = "Linux Kernel",
+ .name = "Uboot & Kernel",
.offset = 0,
.size = SZ_16M,
},
@@ -152,6 +174,11 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {
static void __init ek_add_device_nand(void)
{
+ if (machine_is_usb_a9260()) {
+ ek_nand_data.rdy_pin = AT91_PIN_PC13;
+ ek_nand_data.enable_pin = AT91_PIN_PC14;
+ }
+
/* configure chip-select 3 (NAND) */
sam9_smc_configure(3, &ek_nand_smc_config);
@@ -210,6 +237,14 @@ static struct gpio_led ek_leds[] = {
}
};
+void ek_add_device_leds(void)
+{
+ if (machine_is_usb_a9260())
+ ek_leds[0].active_low = 0;
+
+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+}
+
static void __init ek_board_init(void)
{
@@ -218,11 +253,11 @@ static void __init ek_board_init(void)
/* USB Host */
at91_add_device_usbh(&ek_usbh_data);
/* USB Device */
- at91_add_device_udc(&ek_udc_data);
+ ek_add_device_udc();
/* SPI */
- at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+ ek_add_device_spi();
/* Ethernet */
- at91_add_device_eth(&ek_macb_data);
+ ek_add_device_eth();
/* NAND */
ek_add_device_nand();
/* I2C */
@@ -230,7 +265,7 @@ static void __init ek_board_init(void)
/* Push Buttons */
ek_add_device_buttons();
/* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+ ek_add_device_leds();
/* shutdown controller, wakeup button (5 msec low) */
at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
| AT91_SHDW_RTTWKEN);
@@ -244,3 +279,12 @@ MACHINE_START(USB_A9263, "CALAO USB_A9263")
.init_irq = at91_init_irq_default,
.init_machine = ek_board_init,
MACHINE_END
+
+MACHINE_START(USB_A9260, "CALAO USB_A9260")
+ /* Maintainer: calao-systems */
+ .timer = &at91sam926x_timer,
+ .map_io = ek_map_io,
+ .init_early = ek_init_early,
+ .init_irq = at91_init_irq_default,
+ .init_machine = ek_board_init,
+MACHINE_END
--
1.7.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
2011-08-25 14:08 ` Nicolas Ferre
@ 2011-08-25 15:55 ` Jean-Christophe PLAGNIOL-VILLARD
-1 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-25 15:55 UTC (permalink / raw)
To: Nicolas Ferre
Cc: linux-arm-kernel, linux-kernel, Nico Erfurth, Gregory Hermant
On 16:08 Thu 25 Aug , Nicolas Ferre wrote:
> From: Nico Erfurth <ne@erfurth.eu>
>
> Merge boards together as they are barely the same.
>
> Signed-off-by: Nico Erfurth <ne@erfurth.eu>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> [nicolas.ferre@atmel.com: updated to new machine_desc structure]
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
> ---
> Hi,
>
> I come back to this patch in the process of collecting things that has been
> left on the mailing-list.
> Gregory, can you have a loot at it?
>
> v3: update the machine_desc structure to match latest improvements.
> v2: update against new common init
> we must use it as we can detect the cpu type only after mapping
> the system controler.
I've the hardware now
I'll re test it myself
I'm adding the usb-a9g20 right now too in the same fime
Best Regards,
J.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
@ 2011-08-25 15:55 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-25 15:55 UTC (permalink / raw)
To: linux-arm-kernel
On 16:08 Thu 25 Aug , Nicolas Ferre wrote:
> From: Nico Erfurth <ne@erfurth.eu>
>
> Merge boards together as they are barely the same.
>
> Signed-off-by: Nico Erfurth <ne@erfurth.eu>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> [nicolas.ferre at atmel.com: updated to new machine_desc structure]
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
> ---
> Hi,
>
> I come back to this patch in the process of collecting things that has been
> left on the mailing-list.
> Gregory, can you have a loot at it?
>
> v3: update the machine_desc structure to match latest improvements.
> v2: update against new common init
> we must use it as we can detect the cpu type only after mapping
> the system controler.
I've the hardware now
I'll re test it myself
I'm adding the usb-a9g20 right now too in the same fime
Best Regards,
J.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
2011-08-25 14:08 ` Nicolas Ferre
@ 2011-08-30 1:36 ` Jean-Christophe PLAGNIOL-VILLARD
-1 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-30 1:36 UTC (permalink / raw)
To: Nicolas Ferre
Cc: linux-arm-kernel, linux-kernel, Nico Erfurth, Gregory Hermant
On 16:08 Thu 25 Aug , Nicolas Ferre wrote:
> From: Nico Erfurth <ne@erfurth.eu>
>
> Merge boards together as they are barely the same.
>
> Signed-off-by: Nico Erfurth <ne@erfurth.eu>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> [nicolas.ferre@atmel.com: updated to new machine_desc structure]
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
Tested
Best Regards,
J.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together
@ 2011-08-30 1:36 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-30 1:36 UTC (permalink / raw)
To: linux-arm-kernel
On 16:08 Thu 25 Aug , Nicolas Ferre wrote:
> From: Nico Erfurth <ne@erfurth.eu>
>
> Merge boards together as they are barely the same.
>
> Signed-off-by: Nico Erfurth <ne@erfurth.eu>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> [nicolas.ferre at atmel.com: updated to new machine_desc structure]
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
Tested
Best Regards,
J.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2 v4] at91: merge board usb-a9260 and usb-a9263 together
2011-08-25 14:08 ` Nicolas Ferre
` (2 preceding siblings ...)
(?)
@ 2011-08-30 16:25 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-31 14:57 ` Nicolas Ferre
-1 siblings, 1 reply; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-30 16:25 UTC (permalink / raw)
To: linux-arm-kernel
From: Nico Erfurth <ne@erfurth.eu>
Merge boards together as they are barely the same.
Signed-off-by: Nico Erfurth <ne@erfurth.eu>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
[nicolas.ferre at atmel.com: updated to new machine_desc structure]
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
---
v4:
fix for 9260
.map_io = at91_map_io
Best Regards,
J.
arch/arm/mach-at91/Makefile | 4 +-
arch/arm/mach-at91/board-usb-a9260.c | 230 --------------------
.../{board-usb-a9263.c => board-usb-a926x.c} | 56 +++++-
3 files changed, 52 insertions(+), 238 deletions(-)
delete mode 100644 arch/arm/mach-at91/board-usb-a9260.c
rename arch/arm/mach-at91/{board-usb-a9263.c => board-usb-a926x.c} (84%)
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index bf57e8b..adcb9a0 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -41,7 +41,7 @@ obj-$(CONFIG_MACH_ECO920) += board-eco920.o
obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
obj-$(CONFIG_MACH_CAM60) += board-cam60.o
obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o
-obj-$(CONFIG_MACH_USB_A9260) += board-usb-a9260.o
+obj-$(CONFIG_MACH_USB_A9260) += board-usb-a926x.o
obj-$(CONFIG_MACH_QIL_A9260) += board-qil-a9260.o
obj-$(CONFIG_MACH_AFEB9260) += board-afeb-9260v1.o
obj-$(CONFIG_MACH_CPU9260) += board-cpu9krea.o
@@ -53,7 +53,7 @@ obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
# AT91SAM9263 board-specific support
obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
-obj-$(CONFIG_MACH_USB_A9263) += board-usb-a9263.o
+obj-$(CONFIG_MACH_USB_A9263) += board-usb-a926x.o
obj-$(CONFIG_MACH_NEOCORE926) += board-neocore926.o
# AT91SAM9RL board-specific support
diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
deleted file mode 100644
index 8c4c1a0..0000000
--- a/arch/arm/mach-at91/board-usb-a9260.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * linux/arch/arm/mach-at91/board-usb-a9260.c
- *
- * Copyright (C) 2005 SAN People
- * Copyright (C) 2006 Atmel
- * Copyright (C) 2007 Calao-systems
- *
- * This program 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 program 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/spi/spi.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/clk.h>
-
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-
-#include <mach/hardware.h>
-#include <mach/board.h>
-#include <mach/gpio.h>
-#include <mach/at91sam9_smc.h>
-#include <mach/at91_shdwc.h>
-
-#include "sam9_smc.h"
-#include "generic.h"
-
-
-static void __init ek_init_early(void)
-{
- /* Initialize processor: 12.000 MHz crystal */
- at91_initialize(12000000);
-
- /* DBGU on ttyS0. (Rx & Tx only) */
- at91_register_uart(0, 0, 0);
-
- /* set serial console to ttyS0 (ie, DBGU) */
- at91_set_serial_console(0);
-}
-
-/*
- * USB Host port
- */
-static struct at91_usbh_data __initdata ek_usbh_data = {
- .ports = 2,
-};
-
-/*
- * USB Device port
- */
-static struct at91_udc_data __initdata ek_udc_data = {
- .vbus_pin = AT91_PIN_PC5,
- .pullup_pin = 0, /* pull-up driven by UDC */
-};
-
-/*
- * MACB Ethernet device
- */
-static struct at91_eth_data __initdata ek_macb_data = {
- .phy_irq_pin = AT91_PIN_PA31,
- .is_rmii = 1,
-};
-
-/*
- * NAND flash
- */
-static struct mtd_partition __initdata ek_nand_partition[] = {
- {
- .name = "Uboot & Kernel",
- .offset = 0,
- .size = SZ_16M,
- },
- {
- .name = "Root FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- },
- {
- .name = "FS",
- .offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- }
-};
-
-static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
-{
- *num_partitions = ARRAY_SIZE(ek_nand_partition);
- return ek_nand_partition;
-}
-
-static struct atmel_nand_data __initdata ek_nand_data = {
- .ale = 21,
- .cle = 22,
-// .det_pin = ... not connected
- .rdy_pin = AT91_PIN_PC13,
- .enable_pin = AT91_PIN_PC14,
- .partition_info = nand_partitions,
-};
-
-static struct sam9_smc_config __initdata ek_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 void __init ek_add_device_nand(void)
-{
- /* configure chip-select 3 (NAND) */
- sam9_smc_configure(3, &ek_nand_smc_config);
-
- at91_add_device_nand(&ek_nand_data);
-}
-
-/*
- * GPIO Buttons
- */
-
-#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-static struct gpio_keys_button ek_buttons[] = {
- { /* USER PUSH BUTTON */
- .code = KEY_ENTER,
- .gpio = AT91_PIN_PB10,
- .active_low = 1,
- .desc = "user_pb",
- .wakeup = 1,
- }
-};
-
-static struct gpio_keys_platform_data ek_button_data = {
- .buttons = ek_buttons,
- .nbuttons = ARRAY_SIZE(ek_buttons),
-};
-
-static struct platform_device ek_button_device = {
- .name = "gpio-keys",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &ek_button_data,
- }
-};
-
-static void __init ek_add_device_buttons(void)
-{
- at91_set_GPIO_periph(AT91_PIN_PB10, 1); /* user push button, pull up enabled */
- at91_set_deglitch(AT91_PIN_PB10, 1);
-
- platform_device_register(&ek_button_device);
-}
-#else
-static void __init ek_add_device_buttons(void) {}
-#endif
-
-/*
- * LEDs
- */
-static struct gpio_led ek_leds[] = {
- { /* user_led (green) */
- .name = "user_led",
- .gpio = AT91_PIN_PB21,
- .active_low = 0,
- .default_trigger = "heartbeat",
- }
-};
-
-static void __init ek_board_init(void)
-{
- /* Serial */
- at91_add_device_serial();
- /* USB Host */
- at91_add_device_usbh(&ek_usbh_data);
- /* USB Device */
- at91_add_device_udc(&ek_udc_data);
- /* NAND */
- ek_add_device_nand();
- /* I2C */
- at91_add_device_i2c(NULL, 0);
- /* Ethernet */
- at91_add_device_eth(&ek_macb_data);
- /* Push Buttons */
- ek_add_device_buttons();
- /* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
- /* shutdown controller, wakeup button (5 msec low) */
- at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
- | AT91_SHDW_RTTWKEN);
-}
-
-MACHINE_START(USB_A9260, "CALAO USB_A9260")
- /* Maintainer: calao-systems */
- .timer = &at91sam926x_timer,
- .map_io = at91_map_io,
- .init_early = ek_init_early,
- .init_irq = at91_init_irq_default,
- .init_machine = ek_board_init,
-MACHINE_END
diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a926x.c
similarity index 84%
rename from arch/arm/mach-at91/board-usb-a9263.c
rename to arch/arm/mach-at91/board-usb-a926x.c
index 25e7937..b9b9847 100644
--- a/arch/arm/mach-at91/board-usb-a9263.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -1,5 +1,5 @@
/*
- * linux/arch/arm/mach-at91/board-usb-a9263.c
+ * linux/arch/arm/mach-at91/board-usb-a926x.c
*
* Copyright (C) 2005 SAN People
* Copyright (C) 2007 Atmel Corporation.
@@ -74,6 +74,14 @@ static struct at91_udc_data __initdata ek_udc_data = {
.pullup_pin = 0, /* pull-up driven by UDC */
};
+void ek_add_device_udc(void)
+{
+ if (machine_is_usb_a9260())
+ ek_udc_data.vbus_pin = AT91_PIN_PC5;
+
+ at91_add_device_udc(&ek_udc_data);
+}
+
/*
* SPI devices.
*/
@@ -88,6 +96,12 @@ static struct spi_board_info ek_spi_devices[] = {
#endif
};
+void ek_add_device_spi(void)
+{
+ if (machine_is_usb_a9263())
+ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+}
+
/*
* MACB Ethernet device
*/
@@ -96,12 +110,20 @@ static struct at91_eth_data __initdata ek_macb_data = {
.is_rmii = 1,
};
+void ek_add_device_eth(void)
+{
+ if (machine_is_usb_a9260())
+ ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
+
+ at91_add_device_eth(&ek_macb_data);
+}
+
/*
* NAND flash
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
- .name = "Linux Kernel",
+ .name = "Uboot & Kernel",
.offset = 0,
.size = SZ_16M,
},
@@ -152,6 +174,11 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {
static void __init ek_add_device_nand(void)
{
+ if (machine_is_usb_a9260()) {
+ ek_nand_data.rdy_pin = AT91_PIN_PC13;
+ ek_nand_data.enable_pin = AT91_PIN_PC14;
+ }
+
/* configure chip-select 3 (NAND) */
sam9_smc_configure(3, &ek_nand_smc_config);
@@ -210,6 +237,14 @@ static struct gpio_led ek_leds[] = {
}
};
+void ek_add_device_leds(void)
+{
+ if (machine_is_usb_a9260())
+ ek_leds[0].active_low = 0;
+
+ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+}
+
static void __init ek_board_init(void)
{
@@ -218,11 +253,11 @@ static void __init ek_board_init(void)
/* USB Host */
at91_add_device_usbh(&ek_usbh_data);
/* USB Device */
- at91_add_device_udc(&ek_udc_data);
+ ek_add_device_udc();
/* SPI */
- at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+ ek_add_device_spi();
/* Ethernet */
- at91_add_device_eth(&ek_macb_data);
+ ek_add_device_eth();
/* NAND */
ek_add_device_nand();
/* I2C */
@@ -230,7 +265,7 @@ static void __init ek_board_init(void)
/* Push Buttons */
ek_add_device_buttons();
/* LEDs */
- at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+ ek_add_device_leds();
/* shutdown controller, wakeup button (5 msec low) */
at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
| AT91_SHDW_RTTWKEN);
@@ -244,3 +279,12 @@ MACHINE_START(USB_A9263, "CALAO USB_A9263")
.init_irq = at91_init_irq_default,
.init_machine = ek_board_init,
MACHINE_END
+
+MACHINE_START(USB_A9260, "CALAO USB_A9260")
+ /* Maintainer: calao-systems */
+ .timer = &at91sam926x_timer,
+ .map_io = at91_map_io,
+ .init_early = ek_init_early,
+ .init_irq = at91_init_irq_default,
+ .init_machine = ek_board_init,
+MACHINE_END
--
1.7.5.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] at91: USB-A9G20 C01 & C11 board support
2011-08-25 14:08 ` Nicolas Ferre
` (3 preceding siblings ...)
(?)
@ 2011-08-30 16:25 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-31 15:13 ` Nicolas Ferre
-1 siblings, 1 reply; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-08-30 16:25 UTC (permalink / raw)
To: linux-arm-kernel
http://www.calao-systems.com
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/mach-at91/Kconfig | 8 ++
arch/arm/mach-at91/Makefile | 1 +
arch/arm/mach-at91/board-usb-a926x.c | 145 +++++++++++++++++++++++++------
arch/arm/mach-at91/include/mach/timex.h | 5 +
4 files changed, 133 insertions(+), 26 deletions(-)
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 2248467..e27d160 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -381,6 +381,14 @@ config MACH_GSIA18S
This enables support for the GS_IA18_S board
produced by GeoSIG Ltd company. This is an internet accelerograph.
<http://www.geosig.com>
+
+config MACH_USB_A9G20
+ bool "CALAO USB-A9G20"
+ depends on ARCH_AT91SAM9G20
+ help
+ Select this if you are using a Calao Systems USB-A9G20.
+ <http://www.calao-systems.com>
+
endif
if (ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index adcb9a0..ff8a283 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -67,6 +67,7 @@ obj-$(CONFIG_MACH_STAMP9G20) += board-stamp9g20.o
obj-$(CONFIG_MACH_PORTUXG20) += board-stamp9g20.o
obj-$(CONFIG_MACH_PCONTROL_G20) += board-pcontrol-g20.o board-stamp9g20.o
obj-$(CONFIG_MACH_GSIA18S) += board-gsia18s.o board-stamp9g20.o
+obj-$(CONFIG_MACH_USB_A9G20) += board-usb-a926x.o
# AT91SAM9260/AT91SAM9G20 board-specific support
obj-$(CONFIG_MACH_SNAPPER_9260) += board-snapper9260.o
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c
index b9b9847..260260b 100644
--- a/arch/arm/mach-at91/board-usb-a926x.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -4,6 +4,7 @@
* Copyright (C) 2005 SAN People
* Copyright (C) 2007 Atmel Corporation.
* Copyright (C) 2007 Calao-systems
+ * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,6 +29,7 @@
#include <linux/spi/spi.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
+#include <linux/spi/mmc_spi.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
@@ -74,18 +76,42 @@ static struct at91_udc_data __initdata ek_udc_data = {
.pullup_pin = 0, /* pull-up driven by UDC */
};
-void ek_add_device_udc(void)
+static void __init ek_add_device_udc(void)
{
- if (machine_is_usb_a9260())
+ if (machine_is_usb_a9260() || machine_is_usb_a9g20())
ek_udc_data.vbus_pin = AT91_PIN_PC5;
at91_add_device_udc(&ek_udc_data);
}
+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
+#define MMC_SPI_CARD_DETECT_INT AT91_PIN_PC4
+static int at91_mmc_spi_init(struct device *dev,
+ irqreturn_t (*detect_int)(int, void *), void *data)
+{
+ /* Configure Interrupt pin as input, no pull-up */
+ at91_set_gpio_input(MMC_SPI_CARD_DETECT_INT, 0);
+ return request_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), detect_int,
+ IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
+ "mmc-spi-detect", data);
+}
+
+static void at91_mmc_spi_exit(struct device *dev, void *data)
+{
+ free_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), data);
+}
+
+static struct mmc_spi_platform_data at91_mmc_spi_pdata = {
+ .init = at91_mmc_spi_init,
+ .exit = at91_mmc_spi_exit,
+ .detect_delay = 100, /* msecs */
+};
+#endif
+
/*
* SPI devices.
*/
-static struct spi_board_info ek_spi_devices[] = {
+static struct spi_board_info usb_a9263_spi_devices[] = {
#if !defined(CONFIG_MMC_AT91)
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
@@ -96,10 +122,25 @@ static struct spi_board_info ek_spi_devices[] = {
#endif
};
-void ek_add_device_spi(void)
+static struct spi_board_info usb_a9g20_spi_devices[] = {
+#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
+ {
+ .modalias = "mmc_spi",
+ .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
+ .bus_num = 1,
+ .chip_select = 0,
+ .platform_data = &at91_mmc_spi_pdata,
+ .mode = SPI_MODE_3,
+ },
+#endif
+};
+
+static void __init ek_add_device_spi(void)
{
if (machine_is_usb_a9263())
- at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
+ at91_add_device_spi(usb_a9263_spi_devices, ARRAY_SIZE(usb_a9263_spi_devices));
+ else if (machine_is_usb_a9g20())
+ at91_add_device_spi(usb_a9g20_spi_devices, ARRAY_SIZE(usb_a9g20_spi_devices));
}
/*
@@ -110,9 +151,9 @@ static struct at91_eth_data __initdata ek_macb_data = {
.is_rmii = 1,
};
-void ek_add_device_eth(void)
+static void __init ek_add_device_eth(void)
{
- if (machine_is_usb_a9260())
+ if (machine_is_usb_a9260() || machine_is_usb_a9g20())
ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
at91_add_device_eth(&ek_macb_data);
@@ -123,19 +164,29 @@ void ek_add_device_eth(void)
*/
static struct mtd_partition __initdata ek_nand_partition[] = {
{
- .name = "Uboot & Kernel",
+ .name = "barebox",
.offset = 0,
- .size = SZ_16M,
- },
- {
- .name = "Root FS",
+ .size = 3 * SZ_128K,
+ }, {
+ .name = "bareboxenv",
.offset = MTDPART_OFS_NXTBLK,
- .size = 120 * SZ_1M,
- },
- {
- .name = "FS",
+ .size = SZ_128K,
+ }, {
+ .name = "bareboxenv2",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = SZ_128K,
+ }, {
+ .name = "kernel",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 4 * SZ_1M,
+ }, {
+ .name = "rootfs",
.offset = MTDPART_OFS_NXTBLK,
.size = 120 * SZ_1M,
+ }, {
+ .name = "data",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = MTDPART_SIZ_FULL,
}
};
@@ -154,7 +205,7 @@ static struct atmel_nand_data __initdata ek_nand_data = {
.partition_info = nand_partitions,
};
-static struct sam9_smc_config __initdata ek_nand_smc_config = {
+static struct sam9_smc_config __initdata usb_a9260_nand_smc_config = {
.ncs_read_setup = 0,
.nrd_setup = 1,
.ncs_write_setup = 0,
@@ -172,15 +223,36 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {
.tdf_cycles = 2,
};
+static struct sam9_smc_config __initdata 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 __init ek_add_device_nand(void)
{
- if (machine_is_usb_a9260()) {
+ if (machine_is_usb_a9260() || machine_is_usb_a9g20()) {
ek_nand_data.rdy_pin = AT91_PIN_PC13;
ek_nand_data.enable_pin = AT91_PIN_PC14;
}
/* configure chip-select 3 (NAND) */
- sam9_smc_configure(3, &ek_nand_smc_config);
+ if (machine_is_usb_a9g20())
+ sam9_smc_configure(3, &usb_a9g20_nand_smc_config);
+ else
+ sam9_smc_configure(3, &usb_a9260_nand_smc_config);
at91_add_device_nand(&ek_nand_data);
}
@@ -237,15 +309,20 @@ static struct gpio_led ek_leds[] = {
}
};
-void ek_add_device_leds(void)
+static struct i2c_board_info __initdata ek_i2c_devices[] = {
+ {
+ I2C_BOARD_INFO("rv3029c2", 0x56),
+ },
+};
+
+static void __init ek_add_device_leds(void)
{
- if (machine_is_usb_a9260())
+ if (machine_is_usb_a9260() || machine_is_usb_a9g20())
ek_leds[0].active_low = 0;
at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
}
-
static void __init ek_board_init(void)
{
/* Serial */
@@ -260,15 +337,22 @@ static void __init ek_board_init(void)
ek_add_device_eth();
/* NAND */
ek_add_device_nand();
- /* I2C */
- at91_add_device_i2c(NULL, 0);
/* Push Buttons */
ek_add_device_buttons();
/* LEDs */
ek_add_device_leds();
- /* shutdown controller, wakeup button (5 msec low) */
- at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
+
+ if (machine_is_usb_a9g20()) {
+ /* I2C */
+ at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
+ } else {
+ /* I2C */
+ at91_add_device_i2c(NULL, 0);
+ /* shutdown controller, wakeup button (5 msec low) */
+ at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10)
+ | AT91_SHDW_WKMODE0_LOW
| AT91_SHDW_RTTWKEN);
+ }
}
MACHINE_START(USB_A9263, "CALAO USB_A9263")
@@ -288,3 +372,12 @@ MACHINE_START(USB_A9260, "CALAO USB_A9260")
.init_irq = at91_init_irq_default,
.init_machine = ek_board_init,
MACHINE_END
+
+MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
+ /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
+ .timer = &at91sam926x_timer,
+ .map_io = at91_map_io,
+ .init_early = ek_init_early,
+ .init_irq = at91_init_irq_default,
+ .init_machine = ek_board_init,
+MACHINE_END
diff --git a/arch/arm/mach-at91/include/mach/timex.h b/arch/arm/mach-at91/include/mach/timex.h
index 31ac2d9..85820ad 100644
--- a/arch/arm/mach-at91/include/mach/timex.h
+++ b/arch/arm/mach-at91/include/mach/timex.h
@@ -64,7 +64,12 @@
#elif defined(CONFIG_ARCH_AT91SAM9G20)
+#if defined(CONFIG_MACH_USB_A9G20)
+#define AT91SAM9_MASTER_CLOCK 133000000
+#else
#define AT91SAM9_MASTER_CLOCK 132096000
+#endif
+
#define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
#elif defined(CONFIG_ARCH_AT91SAM9G45)
--
1.7.5.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 1/2 v4] at91: merge board usb-a9260 and usb-a9263 together
2011-08-30 16:25 ` [PATCH 1/2 v4] " Jean-Christophe PLAGNIOL-VILLARD
@ 2011-08-31 14:57 ` Nicolas Ferre
0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2011-08-31 14:57 UTC (permalink / raw)
To: linux-arm-kernel
Le 30/08/2011 18:25, Jean-Christophe PLAGNIOL-VILLARD :
> From: Nico Erfurth <ne@erfurth.eu>
>
> Merge boards together as they are barely the same.
>
> Signed-off-by: Nico Erfurth <ne@erfurth.eu>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> [nicolas.ferre at atmel.com: updated to new machine_desc structure]
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Gregory Hermant <gregory.hermant@calao-systems.com>
> ---
> v4:
> fix for 9260
> .map_io = at91_map_io
Ok, thanks for correcting this.
BR,
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] at91: USB-A9G20 C01 & C11 board support
2011-08-30 16:25 ` [PATCH 2/2] at91: USB-A9G20 C01 & C11 board support Jean-Christophe PLAGNIOL-VILLARD
@ 2011-08-31 15:13 ` Nicolas Ferre
0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2011-08-31 15:13 UTC (permalink / raw)
To: linux-arm-kernel
Le 30/08/2011 18:25, Jean-Christophe PLAGNIOL-VILLARD :
> http://www.calao-systems.com
Well, it is a bit short. Before submitting to at91-l2, I rephrase it to:
"Add support for Calao USB-A9G20 boards. It will be integrated in
existing support for board of same form factor using at91sam9260 or
at91sam9263."
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> ---
> arch/arm/mach-at91/Kconfig | 8 ++
> arch/arm/mach-at91/Makefile | 1 +
> arch/arm/mach-at91/board-usb-a926x.c | 145 +++++++++++++++++++++++++------
> arch/arm/mach-at91/include/mach/timex.h | 5 +
> 4 files changed, 133 insertions(+), 26 deletions(-)
>
> diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
> index 2248467..e27d160 100644
> --- a/arch/arm/mach-at91/Kconfig
> +++ b/arch/arm/mach-at91/Kconfig
> @@ -381,6 +381,14 @@ config MACH_GSIA18S
> This enables support for the GS_IA18_S board
> produced by GeoSIG Ltd company. This is an internet accelerograph.
> <http://www.geosig.com>
> +
> +config MACH_USB_A9G20
> + bool "CALAO USB-A9G20"
> + depends on ARCH_AT91SAM9G20
> + help
> + Select this if you are using a Calao Systems USB-A9G20.
> + <http://www.calao-systems.com>
> +
> endif
>
> if (ARCH_AT91SAM9260 || ARCH_AT91SAM9G20)
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index adcb9a0..ff8a283 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -67,6 +67,7 @@ obj-$(CONFIG_MACH_STAMP9G20) += board-stamp9g20.o
> obj-$(CONFIG_MACH_PORTUXG20) += board-stamp9g20.o
> obj-$(CONFIG_MACH_PCONTROL_G20) += board-pcontrol-g20.o board-stamp9g20.o
> obj-$(CONFIG_MACH_GSIA18S) += board-gsia18s.o board-stamp9g20.o
> +obj-$(CONFIG_MACH_USB_A9G20) += board-usb-a926x.o
>
> # AT91SAM9260/AT91SAM9G20 board-specific support
> obj-$(CONFIG_MACH_SNAPPER_9260) += board-snapper9260.o
> diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c
> index b9b9847..260260b 100644
> --- a/arch/arm/mach-at91/board-usb-a926x.c
> +++ b/arch/arm/mach-at91/board-usb-a926x.c
> @@ -4,6 +4,7 @@
> * Copyright (C) 2005 SAN People
> * Copyright (C) 2007 Atmel Corporation.
> * Copyright (C) 2007 Calao-systems
> + * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> @@ -28,6 +29,7 @@
> #include <linux/spi/spi.h>
> #include <linux/gpio_keys.h>
> #include <linux/input.h>
> +#include <linux/spi/mmc_spi.h>
>
> #include <asm/setup.h>
> #include <asm/mach-types.h>
> @@ -74,18 +76,42 @@ static struct at91_udc_data __initdata ek_udc_data = {
> .pullup_pin = 0, /* pull-up driven by UDC */
> };
>
> -void ek_add_device_udc(void)
> +static void __init ek_add_device_udc(void)
> {
> - if (machine_is_usb_a9260())
> + if (machine_is_usb_a9260() || machine_is_usb_a9g20())
> ek_udc_data.vbus_pin = AT91_PIN_PC5;
>
> at91_add_device_udc(&ek_udc_data);
> }
>
> +#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
> +#define MMC_SPI_CARD_DETECT_INT AT91_PIN_PC4
> +static int at91_mmc_spi_init(struct device *dev,
> + irqreturn_t (*detect_int)(int, void *), void *data)
> +{
> + /* Configure Interrupt pin as input, no pull-up */
> + at91_set_gpio_input(MMC_SPI_CARD_DETECT_INT, 0);
> + return request_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), detect_int,
> + IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
> + "mmc-spi-detect", data);
> +}
> +
> +static void at91_mmc_spi_exit(struct device *dev, void *data)
> +{
> + free_irq(gpio_to_irq(MMC_SPI_CARD_DETECT_INT), data);
> +}
> +
> +static struct mmc_spi_platform_data at91_mmc_spi_pdata = {
> + .init = at91_mmc_spi_init,
> + .exit = at91_mmc_spi_exit,
> + .detect_delay = 100, /* msecs */
> +};
> +#endif
> +
> /*
> * SPI devices.
> */
> -static struct spi_board_info ek_spi_devices[] = {
> +static struct spi_board_info usb_a9263_spi_devices[] = {
> #if !defined(CONFIG_MMC_AT91)
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> @@ -96,10 +122,25 @@ static struct spi_board_info ek_spi_devices[] = {
> #endif
> };
>
> -void ek_add_device_spi(void)
> +static struct spi_board_info usb_a9g20_spi_devices[] = {
> +#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
> + {
> + .modalias = "mmc_spi",
> + .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
> + .bus_num = 1,
> + .chip_select = 0,
> + .platform_data = &at91_mmc_spi_pdata,
> + .mode = SPI_MODE_3,
> + },
> +#endif
> +};
> +
> +static void __init ek_add_device_spi(void)
> {
> if (machine_is_usb_a9263())
> - at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
> + at91_add_device_spi(usb_a9263_spi_devices, ARRAY_SIZE(usb_a9263_spi_devices));
> + else if (machine_is_usb_a9g20())
> + at91_add_device_spi(usb_a9g20_spi_devices, ARRAY_SIZE(usb_a9g20_spi_devices));
> }
>
> /*
> @@ -110,9 +151,9 @@ static struct at91_eth_data __initdata ek_macb_data = {
> .is_rmii = 1,
> };
>
> -void ek_add_device_eth(void)
> +static void __init ek_add_device_eth(void)
> {
> - if (machine_is_usb_a9260())
> + if (machine_is_usb_a9260() || machine_is_usb_a9g20())
> ek_macb_data.phy_irq_pin = AT91_PIN_PA31;
>
> at91_add_device_eth(&ek_macb_data);
> @@ -123,19 +164,29 @@ void ek_add_device_eth(void)
> */
> static struct mtd_partition __initdata ek_nand_partition[] = {
> {
> - .name = "Uboot & Kernel",
> + .name = "barebox",
> .offset = 0,
> - .size = SZ_16M,
> - },
> - {
> - .name = "Root FS",
> + .size = 3 * SZ_128K,
> + }, {
> + .name = "bareboxenv",
> .offset = MTDPART_OFS_NXTBLK,
> - .size = 120 * SZ_1M,
> - },
> - {
> - .name = "FS",
> + .size = SZ_128K,
> + }, {
> + .name = "bareboxenv2",
> + .offset = MTDPART_OFS_NXTBLK,
> + .size = SZ_128K,
> + }, {
> + .name = "kernel",
> + .offset = MTDPART_OFS_NXTBLK,
> + .size = 4 * SZ_1M,
> + }, {
> + .name = "rootfs",
> .offset = MTDPART_OFS_NXTBLK,
> .size = 120 * SZ_1M,
> + }, {
> + .name = "data",
> + .offset = MTDPART_OFS_NXTBLK,
> + .size = MTDPART_SIZ_FULL,
> }
> };
>
> @@ -154,7 +205,7 @@ static struct atmel_nand_data __initdata ek_nand_data = {
> .partition_info = nand_partitions,
> };
>
> -static struct sam9_smc_config __initdata ek_nand_smc_config = {
> +static struct sam9_smc_config __initdata usb_a9260_nand_smc_config = {
> .ncs_read_setup = 0,
> .nrd_setup = 1,
> .ncs_write_setup = 0,
> @@ -172,15 +223,36 @@ static struct sam9_smc_config __initdata ek_nand_smc_config = {
> .tdf_cycles = 2,
> };
>
> +static struct sam9_smc_config __initdata 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 __init ek_add_device_nand(void)
> {
> - if (machine_is_usb_a9260()) {
> + if (machine_is_usb_a9260() || machine_is_usb_a9g20()) {
> ek_nand_data.rdy_pin = AT91_PIN_PC13;
> ek_nand_data.enable_pin = AT91_PIN_PC14;
> }
>
> /* configure chip-select 3 (NAND) */
> - sam9_smc_configure(3, &ek_nand_smc_config);
> + if (machine_is_usb_a9g20())
> + sam9_smc_configure(3, &usb_a9g20_nand_smc_config);
> + else
> + sam9_smc_configure(3, &usb_a9260_nand_smc_config);
>
> at91_add_device_nand(&ek_nand_data);
> }
> @@ -237,15 +309,20 @@ static struct gpio_led ek_leds[] = {
> }
> };
>
> -void ek_add_device_leds(void)
> +static struct i2c_board_info __initdata ek_i2c_devices[] = {
> + {
> + I2C_BOARD_INFO("rv3029c2", 0x56),
> + },
> +};
> +
> +static void __init ek_add_device_leds(void)
> {
> - if (machine_is_usb_a9260())
> + if (machine_is_usb_a9260() || machine_is_usb_a9g20())
> ek_leds[0].active_low = 0;
>
> at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
> }
>
> -
> static void __init ek_board_init(void)
> {
> /* Serial */
> @@ -260,15 +337,22 @@ static void __init ek_board_init(void)
> ek_add_device_eth();
> /* NAND */
> ek_add_device_nand();
> - /* I2C */
> - at91_add_device_i2c(NULL, 0);
> /* Push Buttons */
> ek_add_device_buttons();
> /* LEDs */
> ek_add_device_leds();
> - /* shutdown controller, wakeup button (5 msec low) */
> - at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) | AT91_SHDW_WKMODE0_LOW
> +
> + if (machine_is_usb_a9g20()) {
> + /* I2C */
> + at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
> + } else {
> + /* I2C */
> + at91_add_device_i2c(NULL, 0);
> + /* shutdown controller, wakeup button (5 msec low) */
> + at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10)
> + | AT91_SHDW_WKMODE0_LOW
> | AT91_SHDW_RTTWKEN);
> + }
> }
>
> MACHINE_START(USB_A9263, "CALAO USB_A9263")
> @@ -288,3 +372,12 @@ MACHINE_START(USB_A9260, "CALAO USB_A9260")
> .init_irq = at91_init_irq_default,
> .init_machine = ek_board_init,
> MACHINE_END
> +
> +MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
> + /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
> + .timer = &at91sam926x_timer,
> + .map_io = at91_map_io,
> + .init_early = ek_init_early,
> + .init_irq = at91_init_irq_default,
> + .init_machine = ek_board_init,
> +MACHINE_END
> diff --git a/arch/arm/mach-at91/include/mach/timex.h b/arch/arm/mach-at91/include/mach/timex.h
> index 31ac2d9..85820ad 100644
> --- a/arch/arm/mach-at91/include/mach/timex.h
> +++ b/arch/arm/mach-at91/include/mach/timex.h
> @@ -64,7 +64,12 @@
>
> #elif defined(CONFIG_ARCH_AT91SAM9G20)
>
> +#if defined(CONFIG_MACH_USB_A9G20)
> +#define AT91SAM9_MASTER_CLOCK 133000000
> +#else
> #define AT91SAM9_MASTER_CLOCK 132096000
> +#endif
> +
> #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16)
>
> #elif defined(CONFIG_ARCH_AT91SAM9G45)
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-08-31 15:13 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <I come back to this patch in the process of collecting things that has been left on the mailing-list.>
2011-08-25 14:08 ` [PATCH v3] at91: merge board usb-a9260 and usb-a9263 together Nicolas Ferre
2011-08-25 14:08 ` Nicolas Ferre
2011-08-25 15:55 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-25 15:55 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-30 1:36 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-30 1:36 ` Jean-Christophe PLAGNIOL-VILLARD
2011-08-30 16:25 ` [PATCH 1/2 v4] " Jean-Christophe PLAGNIOL-VILLARD
2011-08-31 14:57 ` Nicolas Ferre
2011-08-30 16:25 ` [PATCH 2/2] at91: USB-A9G20 C01 & C11 board support Jean-Christophe PLAGNIOL-VILLARD
2011-08-31 15:13 ` Nicolas Ferre
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.