i.MX31: Some tweaks with variable declaration in SPI driver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31460 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
98b38c439e
commit
ad9a0588db
1 changed files with 14 additions and 19 deletions
|
@ -121,6 +121,7 @@ static bool spi_set_context(struct spi_module_desc *desc,
|
|||
/* Keep reserved and start bits cleared. Keep enabled bit. */
|
||||
base[CONREG] =
|
||||
(node->conreg & ~(0xfcc8e000 | CSPI_CONREG_XCH | CSPI_CONREG_SMC));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -166,19 +167,20 @@ static int tx_fill_fifo(struct spi_module_desc * const desc,
|
|||
static bool start_transfer(struct spi_module_desc * const desc,
|
||||
struct spi_transfer_desc * const xfer)
|
||||
{
|
||||
volatile unsigned long * const base = desc->base;
|
||||
unsigned long intreg;
|
||||
|
||||
if (!spi_set_context(desc, xfer))
|
||||
{
|
||||
xfer->count = -1;
|
||||
return false;
|
||||
}
|
||||
|
||||
volatile unsigned long * const base = desc->base;
|
||||
|
||||
base[CONREG] |= CSPI_CONREG_EN; /* Enable module */
|
||||
|
||||
desc->rxcount = xfer->count;
|
||||
|
||||
unsigned long intreg;
|
||||
|
||||
intreg = (xfer->count < 8) ?
|
||||
CSPI_INTREG_TCEN : /* Trans. complete: TX will run out in prefill */
|
||||
CSPI_INTREG_THEN; /* INT when TX half-empty */
|
||||
|
@ -197,9 +199,8 @@ static bool start_transfer(struct spi_module_desc * const desc,
|
|||
}
|
||||
|
||||
/* Common code for interrupt handlers */
|
||||
static void spi_interrupt(enum spi_module_number spi)
|
||||
static void spi_interrupt(struct spi_module_desc * const desc)
|
||||
{
|
||||
struct spi_module_desc *desc = &spi_descs[spi];
|
||||
volatile unsigned long * const base = desc->base;
|
||||
unsigned long intreg = base[INTREG];
|
||||
struct spi_transfer_desc *xfer = desc->head;
|
||||
|
@ -323,29 +324,28 @@ static void spi_interrupt(enum spi_module_number spi)
|
|||
#if (SPI_MODULE_MASK & USE_CSPI1_MODULE)
|
||||
static __attribute__((interrupt("IRQ"))) void CSPI1_HANDLER(void)
|
||||
{
|
||||
spi_interrupt(CSPI1_NUM);
|
||||
spi_interrupt(&spi_descs[CSPI1_NUM]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SPI_MODULE_MASK & USE_CSPI2_MODULE)
|
||||
static __attribute__((interrupt("IRQ"))) void CSPI2_HANDLER(void)
|
||||
{
|
||||
spi_interrupt(CSPI2_NUM);
|
||||
spi_interrupt(&spi_descs[CSPI2_NUM]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (SPI_MODULE_MASK & USE_CSPI3_MODULE)
|
||||
static __attribute__((interrupt("IRQ"))) void CSPI3_HANDLER(void)
|
||||
{
|
||||
spi_interrupt(CSPI3_NUM);
|
||||
spi_interrupt(&spi_descs[CSPI3_NUM]);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Initialize the SPI driver */
|
||||
void INIT_ATTR spi_init(void)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < SPI_NUM_CSPI; i++)
|
||||
for (int i = 0; i < SPI_NUM_CSPI; i++)
|
||||
{
|
||||
struct spi_module_desc * const desc = &spi_descs[i];
|
||||
ccm_module_clock_gating(desc->cg, CGM_ON_RUN_WAIT);
|
||||
|
@ -396,10 +396,6 @@ void spi_enable_node(const struct spi_node *node, bool enable)
|
|||
/* Send and/or receive data on the specified node */
|
||||
bool spi_transfer(struct spi_transfer_desc *xfer)
|
||||
{
|
||||
bool retval;
|
||||
struct spi_module_desc * desc;
|
||||
int oldlevel;
|
||||
|
||||
if (xfer->count == 0)
|
||||
return true; /* No data? No problem. */
|
||||
|
||||
|
@ -410,9 +406,9 @@ bool spi_transfer(struct spi_transfer_desc *xfer)
|
|||
return false;
|
||||
}
|
||||
|
||||
oldlevel = disable_irq_save();
|
||||
|
||||
desc = &spi_descs[xfer->node->num];
|
||||
bool retval = true;
|
||||
unsigned long cpsr = disable_irq_save();
|
||||
struct spi_module_desc * const desc = &spi_descs[xfer->node->num];
|
||||
|
||||
if (desc->head == NULL)
|
||||
{
|
||||
|
@ -434,10 +430,9 @@ bool spi_transfer(struct spi_transfer_desc *xfer)
|
|||
desc->tail->next = xfer; /* Add to tail */
|
||||
desc->tail = xfer; /* New tail */
|
||||
xfer->next = xfer; /* Self-reference terminate */
|
||||
retval = true;
|
||||
}
|
||||
|
||||
restore_irq(oldlevel);
|
||||
restore_irq(cpsr);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue