]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - arch/avr32/mach-at32ap/at32ap700x.c
Merge commit 'upstream/master'
[linux-2.6.git] / arch / avr32 / mach-at32ap / at32ap700x.c
index 351e1b42f937edb1564c34ca2771176759885c2c..5f30b353a27f8cc610fbade30db0f650865505d8 100644 (file)
@@ -1285,7 +1285,6 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
 {
        struct mci_platform_data        _data;
        struct platform_device          *pdev;
-       struct dw_dma_slave             *dws;
 
        if (id != 0)
                return NULL;
@@ -1301,6 +1300,8 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
        if (!data) {
                data = &_data;
                memset(data, 0, sizeof(struct mci_platform_data));
+               data->detect_pin = GPIO_PIN_NONE;
+               data->wp_pin = GPIO_PIN_NONE;
        }
 
        if (platform_device_add_data(pdev, data,
@@ -1314,12 +1315,10 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
        select_peripheral(PA(14), PERIPH_A, 0); /* DATA2 */
        select_peripheral(PA(15), PERIPH_A, 0); /* DATA3 */
 
-       if (data) {
-               if (data->detect_pin != GPIO_PIN_NONE)
-                       at32_select_gpio(data->detect_pin, 0);
-               if (data->wp_pin != GPIO_PIN_NONE)
-                       at32_select_gpio(data->wp_pin, 0);
-       }
+       if (data->detect_pin != GPIO_PIN_NONE)
+               at32_select_gpio(data->detect_pin, 0);
+       if (data->wp_pin != GPIO_PIN_NONE)
+               at32_select_gpio(data->wp_pin, 0);
 
        atmel_mci0_pclk.dev = &pdev->dev;
 
@@ -1937,9 +1936,11 @@ static struct clk atmel_ac97c0_pclk = {
        .index          = 10,
 };
 
-struct platform_device *__init at32_add_device_ac97c(unsigned int id)
+struct platform_device *__init
+at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data)
 {
        struct platform_device *pdev;
+       struct ac97c_platform_data _data;
 
        if (id != 0)
                return NULL;
@@ -1950,19 +1951,37 @@ struct platform_device *__init at32_add_device_ac97c(unsigned int id)
 
        if (platform_device_add_resources(pdev, atmel_ac97c0_resource,
                                ARRAY_SIZE(atmel_ac97c0_resource)))
-               goto err_add_resources;
+               goto fail;
+
+       if (!data) {
+               data = &_data;
+               memset(data, 0, sizeof(struct ac97c_platform_data));
+               data->reset_pin = GPIO_PIN_NONE;
+       }
 
-       select_peripheral(PB(20), PERIPH_B, 0); /* SYNC */
-       select_peripheral(PB(21), PERIPH_B, 0); /* SDO  */
-       select_peripheral(PB(22), PERIPH_B, 0); /* SDI  */
-       select_peripheral(PB(23), PERIPH_B, 0); /* SCLK */
+       data->dma_rx_periph_id = 3;
+       data->dma_tx_periph_id = 4;
+       data->dma_controller_id = 0;
+
+       if (platform_device_add_data(pdev, data,
+                               sizeof(struct ac97c_platform_data)))
+               goto fail;
+
+       select_peripheral(PB(20), PERIPH_B, 0); /* SDO  */
+       select_peripheral(PB(21), PERIPH_B, 0); /* SYNC */
+       select_peripheral(PB(22), PERIPH_B, 0); /* SCLK */
+       select_peripheral(PB(23), PERIPH_B, 0); /* SDI  */
+
+       /* TODO: gpio_is_valid(data->reset_pin) with kernel 2.6.26. */
+       if (data->reset_pin != GPIO_PIN_NONE)
+               at32_select_gpio(data->reset_pin, 0);
 
        atmel_ac97c0_pclk.dev = &pdev->dev;
 
        platform_device_add(pdev);
        return pdev;
 
-err_add_resources:
+fail:
        platform_device_put(pdev);
        return NULL;
 }