diff options
| -rw-r--r-- | arch/avr32/boards/atngw100/evklcd10x.c | 9 | ||||
| -rw-r--r-- | arch/avr32/boards/hammerhead/setup.c | 4 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/at32ap700x.c | 51 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/include/mach/board.h | 10 |
4 files changed, 45 insertions, 29 deletions
diff --git a/arch/avr32/boards/atngw100/evklcd10x.c b/arch/avr32/boards/atngw100/evklcd10x.c index ae6991205409..00337112c5ac 100644 --- a/arch/avr32/boards/atngw100/evklcd10x.c +++ b/arch/avr32/boards/atngw100/evklcd10x.c | |||
| @@ -23,11 +23,10 @@ | |||
| 23 | #include <mach/portmux.h> | 23 | #include <mach/portmux.h> |
| 24 | #include <mach/board.h> | 24 | #include <mach/board.h> |
| 25 | 25 | ||
| 26 | #include <sound/atmel-ac97c.h> | ||
| 27 | |||
| 26 | static struct ac97c_platform_data __initdata ac97c0_data = { | 28 | static struct ac97c_platform_data __initdata ac97c0_data = { |
| 27 | .dma_rx_periph_id = 3, | 29 | .reset_pin = GPIO_PIN_PB(19), |
| 28 | .dma_tx_periph_id = 4, | ||
| 29 | .dma_controller_id = 0, | ||
| 30 | .reset_pin = GPIO_PIN_PB(19), | ||
| 31 | }; | 30 | }; |
| 32 | 31 | ||
| 33 | #ifdef CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA | 32 | #ifdef CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA |
| @@ -167,7 +166,7 @@ static int __init atevklcd10x_init(void) | |||
| 167 | fbmem_start, fbmem_size, | 166 | fbmem_start, fbmem_size, |
| 168 | ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL); | 167 | ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL); |
| 169 | 168 | ||
| 170 | at32_add_device_ac97c(0, &ac97c0_data); | 169 | at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH); |
| 171 | 170 | ||
| 172 | return 0; | 171 | return 0; |
| 173 | } | 172 | } |
diff --git a/arch/avr32/boards/hammerhead/setup.c b/arch/avr32/boards/hammerhead/setup.c index 4d2fe82b2029..a5c2da25c4fe 100644 --- a/arch/avr32/boards/hammerhead/setup.c +++ b/arch/avr32/boards/hammerhead/setup.c | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | #include <mach/init.h> | 29 | #include <mach/init.h> |
| 30 | #include <mach/portmux.h> | 30 | #include <mach/portmux.h> |
| 31 | 31 | ||
| 32 | #include <sound/atmel-ac97c.h> | ||
| 33 | |||
| 32 | #include "../../mach-at32ap/clock.h" | 34 | #include "../../mach-at32ap/clock.h" |
| 33 | #include "flash.h" | 35 | #include "flash.h" |
| 34 | 36 | ||
| @@ -233,7 +235,7 @@ static int __init hammerhead_init(void) | |||
| 233 | i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info)); | 235 | i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info)); |
| 234 | 236 | ||
| 235 | #ifdef CONFIG_BOARD_HAMMERHEAD_SND | 237 | #ifdef CONFIG_BOARD_HAMMERHEAD_SND |
| 236 | at32_add_device_ac97c(0, &ac97c_data); | 238 | at32_add_device_ac97c(0, &ac97c_data, AC97C_BOTH); |
| 237 | #endif | 239 | #endif |
| 238 | 240 | ||
| 239 | /* Select the Touchscreen interrupt pin mode */ | 241 | /* Select the Touchscreen interrupt pin mode */ |
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c index 1bc6389b20b0..62501d64322c 100644 --- a/arch/avr32/mach-at32ap/at32ap700x.c +++ b/arch/avr32/mach-at32ap/at32ap700x.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <mach/sram.h> | 27 | #include <mach/sram.h> |
| 28 | 28 | ||
| 29 | #include <sound/atmel-abdac.h> | 29 | #include <sound/atmel-abdac.h> |
| 30 | #include <sound/atmel-ac97c.h> | ||
| 30 | 31 | ||
| 31 | #include <video/atmel_lcdc.h> | 32 | #include <video/atmel_lcdc.h> |
| 32 | 33 | ||
| @@ -1982,11 +1983,14 @@ static struct clk atmel_ac97c0_pclk = { | |||
| 1982 | }; | 1983 | }; |
| 1983 | 1984 | ||
| 1984 | struct platform_device *__init | 1985 | struct platform_device *__init |
| 1985 | at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data) | 1986 | at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data, |
| 1987 | unsigned int flags) | ||
| 1986 | { | 1988 | { |
| 1987 | struct platform_device *pdev; | 1989 | struct platform_device *pdev; |
| 1988 | struct ac97c_platform_data _data; | 1990 | struct dw_dma_slave *rx_dws; |
| 1989 | u32 pin_mask; | 1991 | struct dw_dma_slave *tx_dws; |
| 1992 | struct ac97c_platform_data _data; | ||
| 1993 | u32 pin_mask; | ||
| 1990 | 1994 | ||
| 1991 | if (id != 0) | 1995 | if (id != 0) |
| 1992 | return NULL; | 1996 | return NULL; |
| @@ -1997,37 +2001,52 @@ at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data) | |||
| 1997 | 2001 | ||
| 1998 | if (platform_device_add_resources(pdev, atmel_ac97c0_resource, | 2002 | if (platform_device_add_resources(pdev, atmel_ac97c0_resource, |
| 1999 | ARRAY_SIZE(atmel_ac97c0_resource))) | 2003 | ARRAY_SIZE(atmel_ac97c0_resource))) |
| 2000 | goto fail; | 2004 | goto out_free_resources; |
| 2001 | 2005 | ||
| 2002 | if (!data) { | 2006 | if (!data) { |
| 2003 | data = &_data; | 2007 | data = &_data; |
| 2004 | memset(data, 0, sizeof(struct ac97c_platform_data)); | 2008 | memset(data, 0, sizeof(struct ac97c_platform_data)); |
| 2005 | data->reset_pin = GPIO_PIN_NONE; | 2009 | data->reset_pin = -ENODEV; |
| 2006 | } | 2010 | } |
| 2007 | 2011 | ||
| 2008 | data->dma_rx_periph_id = 3; | 2012 | rx_dws = &data->rx_dws; |
| 2009 | data->dma_tx_periph_id = 4; | 2013 | tx_dws = &data->tx_dws; |
| 2010 | data->dma_controller_id = 0; | 2014 | |
| 2015 | /* Check if DMA slave interface for capture should be configured. */ | ||
| 2016 | if (flags & AC97C_CAPTURE) { | ||
| 2017 | rx_dws->dma_dev = &dw_dmac0_device.dev; | ||
| 2018 | rx_dws->reg_width = DW_DMA_SLAVE_WIDTH_16BIT; | ||
| 2019 | rx_dws->cfg_hi = DWC_CFGH_SRC_PER(3); | ||
| 2020 | rx_dws->cfg_lo &= ~(DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL); | ||
| 2021 | } | ||
| 2022 | |||
| 2023 | /* Check if DMA slave interface for playback should be configured. */ | ||
| 2024 | if (flags & AC97C_PLAYBACK) { | ||
| 2025 | tx_dws->dma_dev = &dw_dmac0_device.dev; | ||
| 2026 | tx_dws->reg_width = DW_DMA_SLAVE_WIDTH_16BIT; | ||
| 2027 | tx_dws->cfg_hi = DWC_CFGH_DST_PER(4); | ||
| 2028 | tx_dws->cfg_lo &= ~(DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL); | ||
| 2029 | } | ||
| 2011 | 2030 | ||
| 2012 | if (platform_device_add_data(pdev, data, | 2031 | if (platform_device_add_data(pdev, data, |
| 2013 | sizeof(struct ac97c_platform_data))) | 2032 | sizeof(struct ac97c_platform_data))) |
| 2014 | goto fail; | 2033 | goto out_free_resources; |
| 2015 | 2034 | ||
| 2016 | pin_mask = (1 << 20) | (1 << 21); /* SDO & SYNC */ | 2035 | /* SDO | SYNC | SCLK | SDI */ |
| 2017 | pin_mask |= (1 << 22) | (1 << 23); /* SCLK & SDI */ | 2036 | pin_mask = (1 << 20) | (1 << 21) | (1 << 22) | (1 << 23); |
| 2018 | 2037 | ||
| 2019 | select_peripheral(PIOB, pin_mask, PERIPH_B, 0); | 2038 | select_peripheral(PIOB, pin_mask, PERIPH_B, 0); |
| 2020 | 2039 | ||
| 2021 | /* TODO: gpio_is_valid(data->reset_pin) with kernel 2.6.26. */ | 2040 | if (gpio_is_valid(data->reset_pin)) |
| 2022 | if (data->reset_pin != GPIO_PIN_NONE) | 2041 | at32_select_gpio(data->reset_pin, AT32_GPIOF_OUTPUT |
| 2023 | at32_select_gpio(data->reset_pin, 0); | 2042 | | AT32_GPIOF_HIGH); |
| 2024 | 2043 | ||
| 2025 | atmel_ac97c0_pclk.dev = &pdev->dev; | 2044 | atmel_ac97c0_pclk.dev = &pdev->dev; |
| 2026 | 2045 | ||
| 2027 | platform_device_add(pdev); | 2046 | platform_device_add(pdev); |
| 2028 | return pdev; | 2047 | return pdev; |
| 2029 | 2048 | ||
| 2030 | fail: | 2049 | out_free_resources: |
| 2031 | platform_device_put(pdev); | 2050 | platform_device_put(pdev); |
| 2032 | return NULL; | 2051 | return NULL; |
| 2033 | } | 2052 | } |
diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h index 63ec4008b253..b363b067b0a4 100644 --- a/arch/avr32/mach-at32ap/include/mach/board.h +++ b/arch/avr32/mach-at32ap/include/mach/board.h | |||
| @@ -88,14 +88,10 @@ struct mci_platform_data; | |||
| 88 | struct platform_device * | 88 | struct platform_device * |
| 89 | at32_add_device_mci(unsigned int id, struct mci_platform_data *data); | 89 | at32_add_device_mci(unsigned int id, struct mci_platform_data *data); |
| 90 | 90 | ||
| 91 | struct ac97c_platform_data { | 91 | struct ac97c_platform_data; |
| 92 | unsigned short dma_rx_periph_id; | ||
| 93 | unsigned short dma_tx_periph_id; | ||
| 94 | unsigned short dma_controller_id; | ||
| 95 | int reset_pin; | ||
| 96 | }; | ||
| 97 | struct platform_device * | 92 | struct platform_device * |
| 98 | at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data); | 93 | at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data, |
| 94 | unsigned int flags); | ||
| 99 | 95 | ||
| 100 | struct atmel_abdac_pdata; | 96 | struct atmel_abdac_pdata; |
| 101 | struct platform_device * | 97 | struct platform_device * |
