ARM: OMAP2+: Convert TUSB to use gpmc_cs_program_settings()
Convert the OMAP2+ TUSB code to use the gpmc_cs_program_settings() function for configuring the various GPMC options instead of directly programming the CONFIG1 register. Signed-off-by: Jon Hunter <jon-hunter@ti.com> Tested-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
This commit is contained in:
parent
1119f3c3ce
commit
012e338625
|
@ -8,6 +8,7 @@
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/err.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
@ -27,12 +28,21 @@ static u8 async_cs, sync_cs;
|
||||||
static unsigned refclk_psec;
|
static unsigned refclk_psec;
|
||||||
|
|
||||||
static struct gpmc_settings tusb_async = {
|
static struct gpmc_settings tusb_async = {
|
||||||
|
.wait_on_read = true,
|
||||||
|
.wait_on_write = true,
|
||||||
|
.device_width = GPMC_DEVWIDTH_16BIT,
|
||||||
.mux_add_data = GPMC_MUX_AD,
|
.mux_add_data = GPMC_MUX_AD,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gpmc_settings tusb_sync = {
|
static struct gpmc_settings tusb_sync = {
|
||||||
|
.burst_read = true,
|
||||||
|
.burst_write = true,
|
||||||
.sync_read = true,
|
.sync_read = true,
|
||||||
.sync_write = true,
|
.sync_write = true,
|
||||||
|
.wait_on_read = true,
|
||||||
|
.wait_on_write = true,
|
||||||
|
.burst_len = GPMC_BURST_16,
|
||||||
|
.device_width = GPMC_DEVWIDTH_16BIT,
|
||||||
.mux_add_data = GPMC_MUX_AD,
|
.mux_add_data = GPMC_MUX_AD,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -168,18 +178,12 @@ tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
tusb_resources[0].end = tusb_resources[0].start + 0x9ff;
|
tusb_resources[0].end = tusb_resources[0].start + 0x9ff;
|
||||||
|
tusb_async.wait_pin = waitpin;
|
||||||
async_cs = async;
|
async_cs = async;
|
||||||
gpmc_cs_write_reg(async, GPMC_CS_CONFIG1,
|
|
||||||
GPMC_CONFIG1_PAGE_LEN(2)
|
|
||||||
| GPMC_CONFIG1_WAIT_READ_MON
|
|
||||||
| GPMC_CONFIG1_WAIT_WRITE_MON
|
|
||||||
| GPMC_CONFIG1_WAIT_PIN_SEL(waitpin)
|
|
||||||
| GPMC_CONFIG1_READTYPE_ASYNC
|
|
||||||
| GPMC_CONFIG1_WRITETYPE_ASYNC
|
|
||||||
| GPMC_CONFIG1_DEVICESIZE_16
|
|
||||||
| GPMC_CONFIG1_DEVICETYPE_NOR
|
|
||||||
| GPMC_CONFIG1_MUXADDDATA);
|
|
||||||
|
|
||||||
|
status = gpmc_cs_program_settings(async_cs, &tusb_async);
|
||||||
|
if (status < 0)
|
||||||
|
return status;
|
||||||
|
|
||||||
/* SYNC region, primarily for DMA */
|
/* SYNC region, primarily for DMA */
|
||||||
status = gpmc_cs_request(sync, SZ_16M, (unsigned long *)
|
status = gpmc_cs_request(sync, SZ_16M, (unsigned long *)
|
||||||
|
@ -189,21 +193,12 @@ tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
tusb_resources[1].end = tusb_resources[1].start + 0x9ff;
|
tusb_resources[1].end = tusb_resources[1].start + 0x9ff;
|
||||||
|
tusb_sync.wait_pin = waitpin;
|
||||||
sync_cs = sync;
|
sync_cs = sync;
|
||||||
gpmc_cs_write_reg(sync, GPMC_CS_CONFIG1,
|
|
||||||
GPMC_CONFIG1_READMULTIPLE_SUPP
|
status = gpmc_cs_program_settings(sync_cs, &tusb_sync);
|
||||||
| GPMC_CONFIG1_READTYPE_SYNC
|
if (status < 0)
|
||||||
| GPMC_CONFIG1_WRITEMULTIPLE_SUPP
|
return status;
|
||||||
| GPMC_CONFIG1_WRITETYPE_SYNC
|
|
||||||
| GPMC_CONFIG1_PAGE_LEN(2)
|
|
||||||
| GPMC_CONFIG1_WAIT_READ_MON
|
|
||||||
| GPMC_CONFIG1_WAIT_WRITE_MON
|
|
||||||
| GPMC_CONFIG1_WAIT_PIN_SEL(waitpin)
|
|
||||||
| GPMC_CONFIG1_DEVICESIZE_16
|
|
||||||
| GPMC_CONFIG1_DEVICETYPE_NOR
|
|
||||||
| GPMC_CONFIG1_MUXADDDATA
|
|
||||||
/* fclk divider gets set later */
|
|
||||||
);
|
|
||||||
|
|
||||||
/* IRQ */
|
/* IRQ */
|
||||||
status = gpio_request_one(irq, GPIOF_IN, "TUSB6010 irq");
|
status = gpio_request_one(irq, GPIOF_IN, "TUSB6010 irq");
|
||||||
|
|
Loading…
Reference in New Issue