diff options
Diffstat (limited to 'arch/arm/mach-at91')
| -rw-r--r-- | arch/arm/mach-at91/at91sam9261.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9261_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9g45.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9g45_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9rl.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9rl_devices.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-foxg20.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-stamp9g20.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-at91/include/mach/gpio.h | 8 | ||||
| -rw-r--r-- | arch/arm/mach-at91/irq.c | 20 | ||||
| -rw-r--r-- | arch/arm/mach-at91/pm.c | 10 | 
13 files changed, 44 insertions, 18 deletions
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index 2998a08afc2..0204f4cc9eb 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c @@ -169,6 +169,8 @@ static struct clk *periph_clocks[] __initdata = {  };  static struct clk_lookup periph_clocks_lookups[] = { +	CLKDEV_CON_DEV_ID("hclk", "at91sam9261-lcdfb.0", &hck1), +	CLKDEV_CON_DEV_ID("hclk", "at91sam9g10-lcdfb.0", &hck1),  	CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk),  	CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk),  	CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 92e0f861084..629ea5fc95c 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c @@ -488,7 +488,6 @@ static struct resource lcdc_resources[] = {  };  static struct platform_device at91_lcdc_device = { -	.name		= "atmel_lcdfb",  	.id		= 0,  	.dev		= {  				.dma_mask		= &lcdc_dmamask, @@ -505,6 +504,11 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)  		return;  	} +	if (cpu_is_at91sam9g10()) +		at91_lcdc_device.name = "at91sam9g10-lcdfb"; +	else +		at91_lcdc_device.name = "at91sam9261-lcdfb"; +  #if defined(CONFIG_FB_ATMEL_STN)  	at91_set_A_periph(AT91_PIN_PB0, 0);     /* LCDVSYNC */  	at91_set_A_periph(AT91_PIN_PB1, 0);     /* LCDHSYNC */ diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index b9fc60d1b33..2282fd7ad3e 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c @@ -190,6 +190,7 @@ static struct clk_lookup periph_clocks_lookups[] = {  	CLKDEV_CON_DEV_ID("pclk", "at91rm9200_ssc.1", &ssc1_clk),  	CLKDEV_CON_DEV_ID("pclk", "fff98000.ssc", &ssc0_clk),  	CLKDEV_CON_DEV_ID("pclk", "fff9c000.ssc", &ssc1_clk), +	CLKDEV_CON_DEV_ID("hclk", "at91sam9263-lcdfb.0", &lcdc_clk),  	CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci.0", &mmc0_clk),  	CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci.1", &mmc1_clk),  	CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index ed666f5cb01..858c8aac2da 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c @@ -848,7 +848,7 @@ static struct resource lcdc_resources[] = {  };  static struct platform_device at91_lcdc_device = { -	.name		= "atmel_lcdfb", +	.name		= "at91sam9263-lcdfb",  	.id		= 0,  	.dev		= {  				.dma_mask		= &lcdc_dmamask, diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index d3addee43d8..c68960d8224 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c @@ -228,6 +228,8 @@ static struct clk_lookup periph_clocks_lookups[] = {  	CLKDEV_CON_ID("hclk", &macb_clk),  	/* One additional fake clock for ohci */  	CLKDEV_CON_ID("ohci_clk", &uhphs_clk), +	CLKDEV_CON_DEV_ID("hclk", "at91sam9g45-lcdfb.0", &lcdc_clk), +	CLKDEV_CON_DEV_ID("hclk", "at91sam9g45es-lcdfb.0", &lcdc_clk),  	CLKDEV_CON_DEV_ID("ehci_clk", "atmel-ehci", &uhphs_clk),  	CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk),  	CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 827c9f2a70f..fe626d431b6 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c @@ -981,7 +981,6 @@ static struct resource lcdc_resources[] = {  };  static struct platform_device at91_lcdc_device = { -	.name		= "atmel_lcdfb",  	.id		= 0,  	.dev		= {  				.dma_mask		= &lcdc_dmamask, @@ -997,6 +996,11 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)  	if (!data)  		return; +	if (cpu_is_at91sam9g45es()) +		at91_lcdc_device.name = "at91sam9g45es-lcdfb"; +	else +		at91_lcdc_device.name = "at91sam9g45-lcdfb"; +  	at91_set_A_periph(AT91_PIN_PE0, 0);	/* LCDDPWR */  	at91_set_A_periph(AT91_PIN_PE2, 0);	/* LCDCC */ diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index eb98704db2d..3de3e04d0f8 100644 --- a/arch/arm/mach-at91/at91sam9rl.c +++ b/arch/arm/mach-at91/at91sam9rl.c @@ -179,6 +179,7 @@ static struct clk *periph_clocks[] __initdata = {  };  static struct clk_lookup periph_clocks_lookups[] = { +	CLKDEV_CON_DEV_ID("hclk", "at91sam9rl-lcdfb.0", &lcdc_clk),  	CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk),  	CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk),  	CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index ddf223ff35c..352468f265a 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c @@ -514,7 +514,7 @@ static struct resource lcdc_resources[] = {  };  static struct platform_device at91_lcdc_device = { -	.name		= "atmel_lcdfb", +	.name		= "at91sam9rl-lcdfb",  	.id		= 0,  	.dev		= {  				.dma_mask		= &lcdc_dmamask, diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c index 2ea7059b840..c20a870ea9c 100644 --- a/arch/arm/mach-at91/board-foxg20.c +++ b/arch/arm/mach-at91/board-foxg20.c @@ -176,6 +176,7 @@ static struct w1_gpio_platform_data w1_gpio_pdata = {  	/* If you choose to use a pin other than PB16 it needs to be 3.3V */  	.pin		= AT91_PIN_PB16,  	.is_open_drain  = 1, +	.ext_pullup_enable_pin	= -EINVAL,  };  static struct platform_device w1_device = { diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c index a033b8df9fb..869cbecf00b 100644 --- a/arch/arm/mach-at91/board-stamp9g20.c +++ b/arch/arm/mach-at91/board-stamp9g20.c @@ -188,6 +188,7 @@ static struct spi_board_info portuxg20_spi_devices[] = {  static struct w1_gpio_platform_data w1_gpio_pdata = {  	.pin		= AT91_PIN_PA29,  	.is_open_drain	= 1, +	.ext_pullup_enable_pin	= -EINVAL,  };  static struct platform_device w1_device = { diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h index eed465ab0dd..5fc23771c15 100644 --- a/arch/arm/mach-at91/include/mach/gpio.h +++ b/arch/arm/mach-at91/include/mach/gpio.h @@ -209,6 +209,14 @@ extern int at91_get_gpio_value(unsigned pin);  extern void at91_gpio_suspend(void);  extern void at91_gpio_resume(void); +#ifdef CONFIG_PINCTRL_AT91 +extern void at91_pinctrl_gpio_suspend(void); +extern void at91_pinctrl_gpio_resume(void); +#else +static inline void at91_pinctrl_gpio_suspend(void) {} +static inline void at91_pinctrl_gpio_resume(void) {} +#endif +  #endif	/* __ASSEMBLY__ */  #endif diff --git a/arch/arm/mach-at91/irq.c b/arch/arm/mach-at91/irq.c index 8e210262aee..e0ca5917102 100644 --- a/arch/arm/mach-at91/irq.c +++ b/arch/arm/mach-at91/irq.c @@ -92,23 +92,21 @@ static int at91_aic_set_wake(struct irq_data *d, unsigned value)  void at91_irq_suspend(void)  { -	int i = 0, bit; +	int bit = -1;  	if (has_aic5()) {  		/* disable enabled irqs */ -		while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) { +		while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IDCR, 1); -			i = bit;  		}  		/* enable wakeup irqs */ -		i = 0; -		while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) { +		bit = -1; +		while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IECR, 1); -			i = bit;  		}  	} else {  		at91_aic_write(AT91_AIC_IDCR, *backups); @@ -118,23 +116,21 @@ void at91_irq_suspend(void)  void at91_irq_resume(void)  { -	int i = 0, bit; +	int bit = -1;  	if (has_aic5()) {  		/* disable wakeup irqs */ -		while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) { +		while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IDCR, 1); -			i = bit;  		}  		/* enable irqs disabled for suspend */ -		i = 0; -		while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) { +		bit = -1; +		while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IECR, 1); -			i = bit;  		}  	} else {  		at91_aic_write(AT91_AIC_IDCR, *wakeups); diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index adb6db888a1..73f1f250403 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -201,7 +201,10 @@ extern u32 at91_slow_clock_sz;  static int at91_pm_enter(suspend_state_t state)  { -	at91_gpio_suspend(); +	if (of_have_populated_dt()) +		at91_pinctrl_gpio_suspend(); +	else +		at91_gpio_suspend();  	at91_irq_suspend();  	pr_debug("AT91: PM - wake mask %08x, pm state %d\n", @@ -286,7 +289,10 @@ static int at91_pm_enter(suspend_state_t state)  error:  	target_state = PM_SUSPEND_ON;  	at91_irq_resume(); -	at91_gpio_resume(); +	if (of_have_populated_dt()) +		at91_pinctrl_gpio_resume(); +	else +		at91_gpio_resume();  	return 0;  }  |