diff options
Diffstat (limited to 'arch/arm/mach-at91/at91sam9g45_devices.c')
| -rw-r--r-- | arch/arm/mach-at91/at91sam9g45_devices.c | 69 | 
1 files changed, 46 insertions, 23 deletions
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 09a16d6bd5c..b7582dd10dc 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c @@ -44,8 +44,8 @@ static struct at_dma_platform_data atdma_pdata = {  static struct resource hdmac_resources[] = {  	[0] = { -		.start	= AT91_BASE_SYS + AT91_DMA, -		.end	= AT91_BASE_SYS + AT91_DMA + SZ_512 - 1, +		.start	= AT91SAM9G45_BASE_DMA, +		.end	= AT91SAM9G45_BASE_DMA + SZ_512 - 1,  		.flags	= IORESOURCE_MEM,  	},  	[1] = { @@ -120,7 +120,7 @@ void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data)  	/* Enable VBus control for UHP ports */  	for (i = 0; i < data->ports; i++) { -		if (data->vbus_pin[i]) +		if (gpio_is_valid(data->vbus_pin[i]))  			at91_set_gpio_output(data->vbus_pin[i], 0);  	} @@ -181,7 +181,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data)  	/* Enable VBus control for UHP ports */  	for (i = 0; i < data->ports; i++) { -		if (data->vbus_pin[i]) +		if (gpio_is_valid(data->vbus_pin[i]))  			at91_set_gpio_output(data->vbus_pin[i], 0);  	} @@ -263,7 +263,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data)  	usba_udc_data.pdata.num_ep = ARRAY_SIZE(usba_udc_ep);  	memcpy(usba_udc_data.ep, usba_udc_ep, sizeof(usba_udc_ep)); -	if (data && data->vbus_pin > 0) { +	if (data && gpio_is_valid(data->vbus_pin)) {  		at91_set_gpio_input(data->vbus_pin, 0);  		at91_set_deglitch(data->vbus_pin, 1);  		usba_udc_data.pdata.vbus_pin = data->vbus_pin; @@ -284,7 +284,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {}  #if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)  static u64 eth_dmamask = DMA_BIT_MASK(32); -static struct at91_eth_data eth_data; +static struct macb_platform_data eth_data;  static struct resource eth_resources[] = {  	[0] = { @@ -311,12 +311,12 @@ static struct platform_device at91sam9g45_eth_device = {  	.num_resources	= ARRAY_SIZE(eth_resources),  }; -void __init at91_add_device_eth(struct at91_eth_data *data) +void __init at91_add_device_eth(struct macb_platform_data *data)  {  	if (!data)  		return; -	if (data->phy_irq_pin) { +	if (gpio_is_valid(data->phy_irq_pin)) {  		at91_set_gpio_input(data->phy_irq_pin, 0);  		at91_set_deglitch(data->phy_irq_pin, 1);  	} @@ -348,7 +348,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)  	platform_device_register(&at91sam9g45_eth_device);  }  #else -void __init at91_add_device_eth(struct at91_eth_data *data) {} +void __init at91_add_device_eth(struct macb_platform_data *data) {}  #endif @@ -449,11 +449,11 @@ void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data)  	/* input/irq */ -	if (data->slot[0].detect_pin) { +	if (gpio_is_valid(data->slot[0].detect_pin)) {  		at91_set_gpio_input(data->slot[0].detect_pin, 1);  		at91_set_deglitch(data->slot[0].detect_pin, 1);  	} -	if (data->slot[0].wp_pin) +	if (gpio_is_valid(data->slot[0].wp_pin))  		at91_set_gpio_input(data->slot[0].wp_pin, 1);  	if (mmc_id == 0) {		/* MCI0 */ @@ -529,8 +529,8 @@ static struct resource nand_resources[] = {  		.flags	= IORESOURCE_MEM,  	},  	[1] = { -		.start	= AT91_BASE_SYS + AT91_ECC, -		.end	= AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, +		.start	= AT91SAM9G45_BASE_ECC, +		.end	= AT91SAM9G45_BASE_ECC + SZ_512 - 1,  		.flags	= IORESOURCE_MEM,  	}  }; @@ -556,15 +556,15 @@ void __init at91_add_device_nand(struct atmel_nand_data *data)  	at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA);  	/* enable pin */ -	if (data->enable_pin) +	if (gpio_is_valid(data->enable_pin))  		at91_set_gpio_output(data->enable_pin, 1);  	/* ready/busy pin */ -	if (data->rdy_pin) +	if (gpio_is_valid(data->rdy_pin))  		at91_set_gpio_input(data->rdy_pin, 1);  	/* card detect pin */ -	if (data->det_pin) +	if (gpio_is_valid(data->det_pin))  		at91_set_gpio_input(data->det_pin, 1);  	nand_data = *data; @@ -859,7 +859,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data)  	at91_set_A_periph(AT91_PIN_PD6, 0);	/* AC97RX */  	/* reset */ -	if (data->reset_pin) +	if (gpio_is_valid(data->reset_pin))  		at91_set_gpio_output(data->reset_pin, 0);  	ac97_data = *data; @@ -1009,10 +1009,24 @@ static void __init at91_add_device_tc(void) { }   * -------------------------------------------------------------------- */  #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE) +static struct resource rtc_resources[] = { +	[0] = { +		.start	= AT91SAM9G45_BASE_RTC, +		.end	= AT91SAM9G45_BASE_RTC + SZ_256 - 1, +		.flags	= IORESOURCE_MEM, +	}, +	[1] = { +		.start	= AT91_ID_SYS, +		.end	= AT91_ID_SYS, +		.flags	= IORESOURCE_IRQ, +	}, +}; +  static struct platform_device at91sam9g45_rtc_device = {  	.name		= "at91_rtc",  	.id		= -1, -	.num_resources	= 0, +	.resource	= rtc_resources, +	.num_resources	= ARRAY_SIZE(rtc_resources),  };  static void __init at91_add_device_rtc(void) @@ -1081,8 +1095,8 @@ void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data) {}  static struct resource rtt_resources[] = {  	{ -		.start	= AT91_BASE_SYS + AT91_RTT, -		.end	= AT91_BASE_SYS + AT91_RTT + SZ_16 - 1, +		.start	= AT91SAM9G45_BASE_RTT, +		.end	= AT91SAM9G45_BASE_RTT + SZ_16 - 1,  		.flags	= IORESOURCE_MEM,  	}  }; @@ -1133,10 +1147,19 @@ static void __init at91_add_device_trng(void) {}   * -------------------------------------------------------------------- */  #if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE) +static struct resource wdt_resources[] = { +	{ +		.start	= AT91SAM9G45_BASE_WDT, +		.end	= AT91SAM9G45_BASE_WDT + SZ_16 - 1, +		.flags	= IORESOURCE_MEM, +	} +}; +  static struct platform_device at91sam9g45_wdt_device = {  	.name		= "at91_wdt",  	.id		= -1, -	.num_resources	= 0, +	.resource	= wdt_resources, +	.num_resources	= ARRAY_SIZE(wdt_resources),  };  static void __init at91_add_device_watchdog(void) @@ -1332,8 +1355,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}  #if defined(CONFIG_SERIAL_ATMEL)  static struct resource dbgu_resources[] = {  	[0] = { -		.start	= AT91_BASE_SYS + AT91_DBGU, -		.end	= AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, +		.start	= AT91SAM9G45_BASE_DBGU, +		.end	= AT91SAM9G45_BASE_DBGU + SZ_512 - 1,  		.flags	= IORESOURCE_MEM,  	},  	[1] = {  |