Messages in this thread | | | Date | Wed, 4 Apr 2007 11:41:47 -0700 | From | Randy Dunlap <> | Subject | Re: [PATCH 12/90] ARM: OMAP: Fix apollon boot |
| |
On Wed, 4 Apr 2007 14:04:51 -0400 Tony Lindgren wrote:
> From: Kyungmin Park <kyungmin.park@samsung.com> > > In previous GPMC patch, there was a typo. Fix typo and add header files for > set_irq_type() warnings.
It looks like there's more to this patch than in the description above...
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > Signed-off-by: Tony Lindgren <tony@atomide.com> > --- > arch/arm/mach-omap2/board-apollon.c | 99 +++++++++++++++++++++++++++++++--- > 1 files changed, 90 insertions(+), 9 deletions(-) > > diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c > index 878ff91..3bb49c1 100644 > --- a/arch/arm/mach-omap2/board-apollon.c > +++ b/arch/arm/mach-omap2/board-apollon.c > @@ -25,6 +25,8 @@ > #include <linux/irq.h> > #include <linux/interrupt.h> > #include <linux/delay.h> > +#include <linux/leds.h> > +#include <linux/irq.h> > > #include <asm/hardware.h> > #include <asm/mach-types.h> > @@ -32,10 +34,12 @@ > #include <asm/mach/flash.h> > > #include <asm/arch/gpio.h> > +#include <asm/arch/led.h> > #include <asm/arch/mux.h> > #include <asm/arch/usb.h> > #include <asm/arch/board.h> > #include <asm/arch/common.h> > +#include <asm/arch/gpmc.h> > #include "prcm-regs.h" > > /* LED & Switch macros */ > @@ -46,6 +50,9 @@ > #define SW_UP_GPIO17 17 > #define SW_DOWN_GPIO58 58 > > +#define APOLLON_FLASH_CS 0 > +#define APOLLON_ETH_CS 1 > + > static struct mtd_partition apollon_partitions[] = { > { > .name = "X-Loader + U-Boot", > @@ -85,10 +92,10 @@ static struct flash_platform_data apollon_flash_data = { > .nr_parts = ARRAY_SIZE(apollon_partitions), > }; > > -static struct resource apollon_flash_resource = { > - .start = APOLLON_CS0_BASE, > - .end = APOLLON_CS0_BASE + SZ_128K, > - .flags = IORESOURCE_MEM, > +static struct resource apollon_flash_resource[] = { > + [0] = { > + .flags = IORESOURCE_MEM, > + }, > }; > > static struct platform_device apollon_onenand_device = { > @@ -97,14 +104,24 @@ static struct platform_device apollon_onenand_device = { > .dev = { > .platform_data = &apollon_flash_data, > }, > - .num_resources = ARRAY_SIZE(&apollon_flash_resource), > - .resource = &apollon_flash_resource, > + .num_resources = ARRAY_SIZE(apollon_flash_resource), > + .resource = apollon_flash_resource, > }; > > +static void __init apollon_flash_init(void) > +{ > + unsigned long base; > + > + if (gpmc_cs_request(APOLLON_FLASH_CS, SZ_128K, &base) < 0) { > + printk(KERN_ERR "Cannot request OneNAND GPMC CS\n"); > + return; > + } > + apollon_flash_resource[0].start = base; > + apollon_flash_resource[0].end = base + SZ_128K - 1; > +} > + > static struct resource apollon_smc91x_resources[] = { > [0] = { > - .start = APOLLON_ETHR_START, /* Physical */ > - .end = APOLLON_ETHR_START + 0xf, > .flags = IORESOURCE_MEM, > }, > [1] = { > @@ -126,14 +143,51 @@ static struct platform_device apollon_lcd_device = { > .id = -1, > }; > > +static struct omap_led_config apollon_led_config[] = { > + { > + .cdev = { > + .name = "apollon:led0", > + }, > + .gpio = LED0_GPIO13, > + }, > + { > + .cdev = { > + .name = "apollon:led1", > + }, > + .gpio = LED1_GPIO14, > + }, > + { > + .cdev = { > + .name = "apollon:led2", > + }, > + .gpio = LED2_GPIO15, > + }, > +}; > + > +static struct omap_led_platform_data apollon_led_data = { > + .nr_leds = ARRAY_SIZE(apollon_led_config), > + .leds = apollon_led_config, > +}; > + > +static struct platform_device apollon_led_device = { > + .name = "omap-led", > + .id = -1, > + .dev = { > + .platform_data = &apollon_led_data, > + }, > +}; > + > static struct platform_device *apollon_devices[] __initdata = { > &apollon_onenand_device, > &apollon_smc91x_device, > &apollon_lcd_device, > + &apollon_led_device, > }; > > static inline void __init apollon_init_smc91x(void) > { > + unsigned long base; > + > /* Make sure CS1 timings are correct */ > GPMC_CONFIG1_1 = 0x00011203; > GPMC_CONFIG2_1 = 0x001f1f01; > @@ -141,13 +195,20 @@ static inline void __init apollon_init_smc91x(void) > GPMC_CONFIG4_1 = 0x1c091c09; > GPMC_CONFIG5_1 = 0x041f1f1f; > GPMC_CONFIG6_1 = 0x000004c4; > - GPMC_CONFIG7_1 = 0x00000f40 | (APOLLON_CS1_BASE >> 24); > + > + if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) { > + printk(KERN_ERR "Failed to request GPMC CS for smc91x\n"); > + return; > + } > + apollon_smc91x_resources[0].start = base + 0x300; > + apollon_smc91x_resources[0].end = base + 0x30f; > udelay(100); > > omap_cfg_reg(W4__24XX_GPIO74); > if (omap_request_gpio(APOLLON_ETHR_GPIO_IRQ) < 0) { > printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", > APOLLON_ETHR_GPIO_IRQ); > + gpmc_cs_free(APOLLON_ETH_CS); > return; > } > omap_set_gpio_direction(APOLLON_ETHR_GPIO_IRQ, 1); > @@ -175,6 +236,13 @@ static struct omap_mmc_config apollon_mmc_config __initdata = { > }, > }; > > +static struct omap_usb_config apollon_usb_config __initdata = { > + .register_dev = 1, > + .hmc_mode = 0x14, /* 0:dev 1:host1 2:disable */ > + > + .pins[0] = 6, > +}; > + > static struct omap_lcd_config apollon_lcd_config __initdata = { > .ctrl_name = "internal", > }; > @@ -182,6 +250,7 @@ static struct omap_lcd_config apollon_lcd_config __initdata = { > static struct omap_board_config_kernel apollon_config[] = { > { OMAP_TAG_UART, &apollon_uart_config }, > { OMAP_TAG_MMC, &apollon_mmc_config }, > + { OMAP_TAG_USB, &apollon_usb_config }, > { OMAP_TAG_LCD, &apollon_lcd_config }, > }; > > @@ -250,10 +319,22 @@ static void __init apollon_sw_init(void) > return; > } > > +static void __init apollon_usb_init(void) > +{ > + /* USB device */ > + /* DEVICE_SUSPEND */ > + omap_cfg_reg(P21_242X_GPIO12); > + omap_request_gpio(12); > + omap_set_gpio_direction(12, 0); /* OUT */ > + omap_set_gpio_dataout(12, 0); > +} > + > static void __init omap_apollon_init(void) > { > apollon_led_init(); > apollon_sw_init(); > + apollon_flash_init(); > + apollon_usb_init(); > > /* REVISIT: where's the correct place */ > omap_cfg_reg(W19_24XX_SYS_NIRQ); > --
--- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |