Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6: avr32: update default configurations for ATNGW100, ATSTK1002 and ATSTK1006 avr32: add default configurations for ATNGW100 mkII and EVKLCD10X avr32: add support for ATNGW100 mkII board avr32: convert to asm-generic/hardirq.h avr32: add two new at91 to cpu.h definition avr32: clean up linker script using standard macros. avr32: MRMT: correct setup of SPI slaves avr32: function for independently setting up SPI slaves avr32: re-instate MCI WP/CD pin assignments for ATNGW100
This commit is contained in:
@@ -1183,19 +1183,32 @@ static struct resource atmel_spi1_resource[] = {
|
||||
DEFINE_DEV(atmel_spi, 1);
|
||||
DEV_CLK(spi_clk, atmel_spi1, pba, 1);
|
||||
|
||||
static void __init
|
||||
at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b,
|
||||
unsigned int n, const u8 *pins)
|
||||
void __init
|
||||
at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n)
|
||||
{
|
||||
/*
|
||||
* Manage the chipselects as GPIOs, normally using the same pins
|
||||
* the SPI controller expects; but boards can use other pins.
|
||||
*/
|
||||
static u8 __initdata spi_pins[][4] = {
|
||||
{ GPIO_PIN_PA(3), GPIO_PIN_PA(4),
|
||||
GPIO_PIN_PA(5), GPIO_PIN_PA(20) },
|
||||
{ GPIO_PIN_PB(2), GPIO_PIN_PB(3),
|
||||
GPIO_PIN_PB(4), GPIO_PIN_PA(27) },
|
||||
};
|
||||
unsigned int pin, mode;
|
||||
|
||||
/* There are only 2 SPI controllers */
|
||||
if (bus_num > 1)
|
||||
return;
|
||||
|
||||
for (; n; n--, b++) {
|
||||
b->bus_num = bus_num;
|
||||
if (b->chip_select >= 4)
|
||||
continue;
|
||||
pin = (unsigned)b->controller_data;
|
||||
if (!pin) {
|
||||
pin = pins[b->chip_select];
|
||||
pin = spi_pins[bus_num][b->chip_select];
|
||||
b->controller_data = (void *)pin;
|
||||
}
|
||||
mode = AT32_GPIOF_OUTPUT;
|
||||
@@ -1208,16 +1221,6 @@ at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b,
|
||||
struct platform_device *__init
|
||||
at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n)
|
||||
{
|
||||
/*
|
||||
* Manage the chipselects as GPIOs, normally using the same pins
|
||||
* the SPI controller expects; but boards can use other pins.
|
||||
*/
|
||||
static u8 __initdata spi0_pins[] =
|
||||
{ GPIO_PIN_PA(3), GPIO_PIN_PA(4),
|
||||
GPIO_PIN_PA(5), GPIO_PIN_PA(20), };
|
||||
static u8 __initdata spi1_pins[] =
|
||||
{ GPIO_PIN_PB(2), GPIO_PIN_PB(3),
|
||||
GPIO_PIN_PB(4), GPIO_PIN_PA(27), };
|
||||
struct platform_device *pdev;
|
||||
u32 pin_mask;
|
||||
|
||||
@@ -1230,7 +1233,7 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n)
|
||||
select_peripheral(PIOA, (1 << 0), PERIPH_A, AT32_GPIOF_PULLUP);
|
||||
select_peripheral(PIOA, pin_mask, PERIPH_A, 0);
|
||||
|
||||
at32_spi_setup_slaves(0, b, n, spi0_pins);
|
||||
at32_spi_setup_slaves(0, b, n);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
@@ -1241,7 +1244,7 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n)
|
||||
select_peripheral(PIOB, (1 << 0), PERIPH_B, AT32_GPIOF_PULLUP);
|
||||
select_peripheral(PIOB, pin_mask, PERIPH_B, 0);
|
||||
|
||||
at32_spi_setup_slaves(1, b, n, spi1_pins);
|
||||
at32_spi_setup_slaves(1, b, n);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@@ -49,6 +49,7 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data);
|
||||
struct spi_board_info;
|
||||
struct platform_device *
|
||||
at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n);
|
||||
void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n);
|
||||
|
||||
struct atmel_lcdfb_info;
|
||||
struct platform_device *
|
||||
|
Reference in New Issue
Block a user