mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 00:32:04 +02:00
spi: Use spi_alloc_slave() in each SPI driver
Rather than each driver having its own way to allocate a SPI slave, use the new allocation function everywhere. This will make it easier to extend the interface without breaking drivers. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -83,12 +83,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
altspi = malloc(sizeof(*altspi));
|
altspi = spi_alloc_slave(struct altera_spi_slave, bus, cs);
|
||||||
if (!altspi)
|
if (!altspi)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
altspi->slave.bus = bus;
|
|
||||||
altspi->slave.cs = cs;
|
|
||||||
altspi->base = altera_spi_base_list[bus];
|
altspi->base = altera_spi_base_list[bus];
|
||||||
debug("%s: bus:%i cs:%i base:%lx\n", __func__,
|
debug("%s: bus:%i cs:%i base:%lx\n", __func__,
|
||||||
bus, cs, altspi->base);
|
bus, cs, altspi->base);
|
||||||
|
@@ -53,12 +53,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ds = malloc(sizeof(*ds));
|
ds = spi_alloc_slave(struct andes_spi_slave, bus, cs);
|
||||||
if (!ds)
|
if (!ds)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ds->slave.bus = bus;
|
|
||||||
ds->slave.cs = cs;
|
|
||||||
ds->regs = (struct andes_spi_regs *)CONFIG_SYS_SPI_BASE;
|
ds->regs = (struct andes_spi_regs *)CONFIG_SYS_SPI_BASE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -120,12 +120,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
{
|
{
|
||||||
struct armd_spi_slave *pss;
|
struct armd_spi_slave *pss;
|
||||||
|
|
||||||
pss = malloc(sizeof(*pss));
|
pss = spi_alloc_slave(struct armd_spi_slave, bus, cs);
|
||||||
if (!pss)
|
if (!pss)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pss->slave.bus = bus;
|
|
||||||
pss->slave.cs = cs;
|
|
||||||
pss->spi_reg = (struct ssp_reg *)SSP_REG_BASE(CONFIG_SYS_SSP_PORT);
|
pss->spi_reg = (struct ssp_reg *)SSP_REG_BASE(CONFIG_SYS_SSP_PORT);
|
||||||
|
|
||||||
pss->cr0 = SSCR0_MOTO | SSCR0_DATASIZE(DEFAULT_WORD_LEN) | SSCR0_SSE;
|
pss->cr0 = SSCR0_MOTO | SSCR0_DATASIZE(DEFAULT_WORD_LEN) | SSCR0_SSE;
|
||||||
|
@@ -84,12 +84,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (mode & SPI_CPOL)
|
if (mode & SPI_CPOL)
|
||||||
csrx |= ATMEL_SPI_CSRx_CPOL;
|
csrx |= ATMEL_SPI_CSRx_CPOL;
|
||||||
|
|
||||||
as = malloc(sizeof(struct atmel_spi_slave));
|
as = spi_alloc_slave(struct atmel_spi_slave, bus, cs);
|
||||||
if (!as)
|
if (!as)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
as->slave.bus = bus;
|
|
||||||
as->slave.cs = cs;
|
|
||||||
as->regs = regs;
|
as->regs = regs;
|
||||||
as->mr = ATMEL_SPI_MR_MSTR | ATMEL_SPI_MR_MODFDIS
|
as->mr = ATMEL_SPI_MR_MSTR | ATMEL_SPI_MR_MODFDIS
|
||||||
#if defined(CONFIG_AT91SAM9X5) || defined(CONFIG_AT91SAM9M10G45)
|
#if defined(CONFIG_AT91SAM9X5) || defined(CONFIG_AT91SAM9M10G45)
|
||||||
|
@@ -182,12 +182,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bss = malloc(sizeof(*bss));
|
bss = spi_alloc_slave(struct bfin_spi_slave, bus, cs);
|
||||||
if (!bss)
|
if (!bss)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
bss->slave.bus = bus;
|
|
||||||
bss->slave.cs = cs;
|
|
||||||
bss->mmr_base = (void *)mmr_base;
|
bss->mmr_base = (void *)mmr_base;
|
||||||
bss->ctl = SPE | MSTR | TDBR_CORE;
|
bss->ctl = SPE | MSTR | TDBR_CORE;
|
||||||
if (mode & SPI_CPHA) bss->ctl |= CPHA;
|
if (mode & SPI_CPHA) bss->ctl |= CPHA;
|
||||||
|
@@ -178,12 +178,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bss = malloc(sizeof(*bss));
|
bss = spi_alloc_slave(struct bfin_spi_slave, bus, cs);
|
||||||
if (!bss)
|
if (!bss)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
bss->slave.bus = bus;
|
|
||||||
bss->slave.cs = cs;
|
|
||||||
bss->regs = (struct bfin_spi_regs *)reg_base;
|
bss->regs = (struct bfin_spi_regs *)reg_base;
|
||||||
bss->control = SPI_CTL_EN | SPI_CTL_MSTR;
|
bss->control = SPI_CTL_EN | SPI_CTL_MSTR;
|
||||||
if (mode & SPI_CPHA)
|
if (mode & SPI_CPHA)
|
||||||
|
@@ -120,13 +120,11 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
dev = malloc(sizeof(struct cf_qspi_slave));
|
dev = spi_alloc_slave(struct cf_qspi_slave, bus, cs);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Initialize to known value */
|
/* Initialize to known value */
|
||||||
dev->slave.bus = bus;
|
|
||||||
dev->slave.cs = cs;
|
|
||||||
dev->regs = (qspi_t *)MMAP_QSPI;
|
dev->regs = (qspi_t *)MMAP_QSPI;
|
||||||
dev->qmr = 0;
|
dev->qmr = 0;
|
||||||
dev->qwr = 0;
|
dev->qwr = 0;
|
||||||
|
@@ -330,12 +330,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
cfslave = malloc(sizeof(struct cf_spi_slave));
|
cfslave = spi_alloc_slave(struct cf_spi_slave, bus, cs);
|
||||||
if (!cfslave)
|
if (!cfslave)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
cfslave->slave.bus = bus;
|
|
||||||
cfslave->slave.cs = cs;
|
|
||||||
cfslave->baudrate = max_hz;
|
cfslave->baudrate = max_hz;
|
||||||
|
|
||||||
/* specific setup */
|
/* specific setup */
|
||||||
|
@@ -44,12 +44,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ds = malloc(sizeof(*ds));
|
ds = spi_alloc_slave(struct davinci_spi_slave, bus, cs);
|
||||||
if (!ds)
|
if (!ds)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ds->slave.bus = bus;
|
|
||||||
ds->slave.cs = cs;
|
|
||||||
ds->regs = (struct davinci_spi_regs *)CONFIG_SYS_SPI_BASE;
|
ds->regs = (struct davinci_spi_regs *)CONFIG_SYS_SPI_BASE;
|
||||||
ds->freq = max_hz;
|
ds->freq = max_hz;
|
||||||
|
|
||||||
|
@@ -89,15 +89,13 @@ struct spi_slave *spi_setup_slave(unsigned int busnum, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_slave = malloc(sizeof(*spi_slave));
|
spi_slave = spi_alloc_slave(struct exynos_spi_slave, busnum, cs);
|
||||||
if (!spi_slave) {
|
if (!spi_slave) {
|
||||||
debug("%s: Could not allocate spi_slave\n", __func__);
|
debug("%s: Could not allocate spi_slave\n", __func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bus = &spi_bus[busnum];
|
bus = &spi_bus[busnum];
|
||||||
spi_slave->slave.bus = busnum;
|
|
||||||
spi_slave->slave.cs = cs;
|
|
||||||
spi_slave->regs = bus->regs;
|
spi_slave->regs = bus->regs;
|
||||||
spi_slave->mode = mode;
|
spi_slave->mode = mode;
|
||||||
spi_slave->periph_id = bus->periph_id;
|
spi_slave->periph_id = bus->periph_id;
|
||||||
|
@@ -79,12 +79,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
fsl = malloc(sizeof(struct fsl_spi_slave));
|
fsl = spi_alloc_slave(struct fsl_spi_slave, bus, cs);
|
||||||
if (!fsl)
|
if (!fsl)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
fsl->slave.bus = bus;
|
|
||||||
fsl->slave.cs = cs;
|
|
||||||
fsl->mode = mode;
|
fsl->mode = mode;
|
||||||
fsl->max_transfer_length = ESPI_MAX_DATA_TRANSFER_LEN;
|
fsl->max_transfer_length = ESPI_MAX_DATA_TRANSFER_LEN;
|
||||||
|
|
||||||
|
@@ -49,13 +49,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slave = malloc(sizeof(struct spi_slave));
|
slave = spi_alloc_slave_base(bus, cs);
|
||||||
if (!slave)
|
if (!slave)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slave->bus = bus;
|
|
||||||
slave->cs = cs;
|
|
||||||
|
|
||||||
writel(~KWSPI_CSN_ACT | KWSPI_SMEMRDY, &spireg->ctrl);
|
writel(~KWSPI_CSN_ACT | KWSPI_SMEMRDY, &spireg->ctrl);
|
||||||
|
|
||||||
/* calculate spi clock prescaller using max_hz */
|
/* calculate spi clock prescaller using max_hz */
|
||||||
|
@@ -48,13 +48,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
{
|
{
|
||||||
struct spi_slave *slave;
|
struct spi_slave *slave;
|
||||||
|
|
||||||
slave = malloc(sizeof(struct spi_slave));
|
slave = spi_alloc_slave_base(bus, cs);
|
||||||
if (!slave)
|
if (!slave)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slave->bus = bus;
|
|
||||||
slave->cs = cs;
|
|
||||||
|
|
||||||
return slave;
|
return slave;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -45,13 +45,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slave = malloc(sizeof(struct spi_slave));
|
slave = spi_alloc_slave_base(bus, cs);
|
||||||
if (!slave)
|
if (!slave)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
slave->bus = bus;
|
|
||||||
slave->cs = cs;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: Some of the code in spi_init() should probably move
|
* TODO: Some of the code in spi_init() should probably move
|
||||||
* here, or into spi_claim_bus() below.
|
* here, or into spi_claim_bus() below.
|
||||||
|
@@ -408,7 +408,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (bus >= ARRAY_SIZE(spi_bases))
|
if (bus >= ARRAY_SIZE(spi_bases))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
mxcs = calloc(sizeof(struct mxc_spi_slave), 1);
|
mxcs = spi_alloc_slave(struct mxc_spi_slave, bus, cs);
|
||||||
if (!mxcs) {
|
if (!mxcs) {
|
||||||
puts("mxc_spi: SPI Slave not allocated !\n");
|
puts("mxc_spi: SPI Slave not allocated !\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -424,8 +424,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
|
|
||||||
cs = ret;
|
cs = ret;
|
||||||
|
|
||||||
mxcs->slave.bus = bus;
|
|
||||||
mxcs->slave.cs = cs;
|
|
||||||
mxcs->base = spi_bases[bus];
|
mxcs->base = spi_bases[bus];
|
||||||
|
|
||||||
ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
|
ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
|
||||||
|
@@ -77,15 +77,13 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mxs_slave = calloc(sizeof(struct mxs_spi_slave), 1);
|
mxs_slave = spi_alloc_slave(struct mxs_spi_slave, bus, cs);
|
||||||
if (!mxs_slave)
|
if (!mxs_slave)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (mxs_dma_init_channel(MXS_DMA_CHANNEL_AHB_APBH_SSP0 + bus))
|
if (mxs_dma_init_channel(MXS_DMA_CHANNEL_AHB_APBH_SSP0 + bus))
|
||||||
goto err_init;
|
goto err_init;
|
||||||
|
|
||||||
mxs_slave->slave.bus = bus;
|
|
||||||
mxs_slave->slave.cs = cs;
|
|
||||||
mxs_slave->max_khz = max_hz / 1000;
|
mxs_slave->max_khz = max_hz / 1000;
|
||||||
mxs_slave->mode = mode;
|
mxs_slave->mode = mode;
|
||||||
mxs_slave->regs = mxs_ssp_regs_by_bus(bus);
|
mxs_slave->regs = mxs_ssp_regs_by_bus(bus);
|
||||||
|
@@ -90,13 +90,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs) || gpio_request(cs, "tiny_spi"))
|
if (!spi_cs_is_valid(bus, cs) || gpio_request(cs, "tiny_spi"))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
tiny_spi = malloc(sizeof(*tiny_spi));
|
tiny_spi = spi_alloc_slave(struct tiny_spi_slave, bus, cs);
|
||||||
if (!tiny_spi)
|
if (!tiny_spi)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(tiny_spi, 0, sizeof(*tiny_spi));
|
|
||||||
|
|
||||||
tiny_spi->slave.bus = bus;
|
|
||||||
tiny_spi->slave.cs = cs;
|
|
||||||
tiny_spi->host = &tiny_spi_host_list[bus];
|
tiny_spi->host = &tiny_spi_host_list[bus];
|
||||||
tiny_spi->mode = mode & (SPI_CPOL | SPI_CPHA);
|
tiny_spi->mode = mode & (SPI_CPOL | SPI_CPHA);
|
||||||
tiny_spi->flg = mode & SPI_CS_HIGH ? 1 : 0;
|
tiny_spi->flg = mode & SPI_CS_HIGH ? 1 : 0;
|
||||||
|
@@ -80,12 +80,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
unsigned int max_hz, unsigned int mode)
|
unsigned int max_hz, unsigned int mode)
|
||||||
{
|
{
|
||||||
struct omap3_spi_slave *ds;
|
struct omap3_spi_slave *ds;
|
||||||
|
struct mcspi *regs;
|
||||||
ds = malloc(sizeof(struct omap3_spi_slave));
|
|
||||||
if (!ds) {
|
|
||||||
printf("SPI error: malloc of SPI structure failed\n");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OMAP3 McSPI (MultiChannel SPI) has 4 busses (modules)
|
* OMAP3 McSPI (MultiChannel SPI) has 4 busses (modules)
|
||||||
@@ -98,21 +93,21 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
|
|
||||||
switch (bus) {
|
switch (bus) {
|
||||||
case 0:
|
case 0:
|
||||||
ds->regs = (struct mcspi *)OMAP3_MCSPI1_BASE;
|
regs = (struct mcspi *)OMAP3_MCSPI1_BASE;
|
||||||
break;
|
break;
|
||||||
#ifdef OMAP3_MCSPI2_BASE
|
#ifdef OMAP3_MCSPI2_BASE
|
||||||
case 1:
|
case 1:
|
||||||
ds->regs = (struct mcspi *)OMAP3_MCSPI2_BASE;
|
regs = (struct mcspi *)OMAP3_MCSPI2_BASE;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef OMAP3_MCSPI3_BASE
|
#ifdef OMAP3_MCSPI3_BASE
|
||||||
case 2:
|
case 2:
|
||||||
ds->regs = (struct mcspi *)OMAP3_MCSPI3_BASE;
|
regs = (struct mcspi *)OMAP3_MCSPI3_BASE;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef OMAP3_MCSPI4_BASE
|
#ifdef OMAP3_MCSPI4_BASE
|
||||||
case 3:
|
case 3:
|
||||||
ds->regs = (struct mcspi *)OMAP3_MCSPI4_BASE;
|
regs = (struct mcspi *)OMAP3_MCSPI4_BASE;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
@@ -120,7 +115,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
Supported busses 0 - 3\n", bus);
|
Supported busses 0 - 3\n", bus);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ds->slave.bus = bus;
|
|
||||||
|
|
||||||
if (((bus == 0) && (cs > 3)) ||
|
if (((bus == 0) && (cs > 3)) ||
|
||||||
((bus == 1) && (cs > 1)) ||
|
((bus == 1) && (cs > 1)) ||
|
||||||
@@ -130,19 +124,26 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
on bus %i\n", cs, bus);
|
on bus %i\n", cs, bus);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ds->slave.cs = cs;
|
|
||||||
|
|
||||||
if (max_hz > OMAP3_MCSPI_MAX_FREQ) {
|
if (max_hz > OMAP3_MCSPI_MAX_FREQ) {
|
||||||
printf("SPI error: unsupported frequency %i Hz. \
|
printf("SPI error: unsupported frequency %i Hz. \
|
||||||
Max frequency is 48 Mhz\n", max_hz);
|
Max frequency is 48 Mhz\n", max_hz);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ds->freq = max_hz;
|
|
||||||
|
|
||||||
if (mode > SPI_MODE_3) {
|
if (mode > SPI_MODE_3) {
|
||||||
printf("SPI error: unsupported SPI mode %i\n", mode);
|
printf("SPI error: unsupported SPI mode %i\n", mode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ds = spi_alloc_slave(struct omap3_spi_slave, bus, cs);
|
||||||
|
if (!ds) {
|
||||||
|
printf("SPI error: malloc of SPI structure failed\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ds->regs = regs;
|
||||||
|
ds->freq = max_hz;
|
||||||
ds->mode = mode;
|
ds->mode = mode;
|
||||||
|
|
||||||
return &ds->slave;
|
return &ds->slave;
|
||||||
|
@@ -103,12 +103,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ss = malloc(sizeof(struct spi_slave));
|
ss = spi_alloc_slave(struct sh_spi, bus, cs);
|
||||||
if (!ss)
|
if (!ss)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ss->slave.bus = bus;
|
|
||||||
ss->slave.cs = cs;
|
|
||||||
ss->regs = (struct sh_spi_regs *)CONFIG_SH_SPI_BASE;
|
ss->regs = (struct sh_spi_regs *)CONFIG_SH_SPI_BASE;
|
||||||
|
|
||||||
/* SPI sycle stop */
|
/* SPI sycle stop */
|
||||||
|
@@ -73,12 +73,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ss = malloc(sizeof(struct soft_spi_slave));
|
ss = spi_alloc_slave(struct soft_spi_slave, bus, cs);
|
||||||
if (!ss)
|
if (!ss)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ss->slave.bus = bus;
|
|
||||||
ss->slave.cs = cs;
|
|
||||||
ss->mode = mode;
|
ss->mode = mode;
|
||||||
|
|
||||||
/* TODO: Use max_hz to limit the SCK rate */
|
/* TODO: Use max_hz to limit the SCK rate */
|
||||||
|
@@ -81,13 +81,11 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi = malloc(sizeof(struct tegra_spi_slave));
|
spi = spi_alloc_slave(struct tegra_spi_slave, bus, cs);
|
||||||
if (!spi) {
|
if (!spi) {
|
||||||
printf("SPI error: malloc of SPI structure failed\n");
|
printf("SPI error: malloc of SPI structure failed\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
spi->slave.bus = bus;
|
|
||||||
spi->slave.cs = cs;
|
|
||||||
spi->ctrl = &spi_ctrls[bus];
|
spi->ctrl = &spi_ctrls[bus];
|
||||||
if (!spi->ctrl) {
|
if (!spi->ctrl) {
|
||||||
printf("SPI error: could not find controller for bus %d\n",
|
printf("SPI error: could not find controller for bus %d\n",
|
||||||
|
@@ -81,13 +81,11 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi = malloc(sizeof(struct tegra_spi_slave));
|
spi = spi_alloc_slave(struct tegra_spi_slave, bus, cs);
|
||||||
if (!spi) {
|
if (!spi) {
|
||||||
printf("SPI error: malloc of SPI structure failed\n");
|
printf("SPI error: malloc of SPI structure failed\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
spi->slave.bus = bus;
|
|
||||||
spi->slave.cs = cs;
|
|
||||||
#ifdef CONFIG_OF_CONTROL
|
#ifdef CONFIG_OF_CONTROL
|
||||||
int node = fdtdec_next_compatible(gd->fdt_blob, 0,
|
int node = fdtdec_next_compatible(gd->fdt_blob, 0,
|
||||||
COMPAT_NVIDIA_TEGRA20_SFLASH);
|
COMPAT_NVIDIA_TEGRA20_SFLASH);
|
||||||
|
@@ -85,14 +85,12 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
xilspi = malloc(sizeof(*xilspi));
|
xilspi = spi_alloc_slave(struct xilinx_spi_slave, bus, cs);
|
||||||
if (!xilspi) {
|
if (!xilspi) {
|
||||||
printf("XILSPI error: %s: malloc of SPI structure failed\n",
|
printf("XILSPI error: %s: malloc of SPI structure failed\n",
|
||||||
__func__);
|
__func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
xilspi->slave.bus = bus;
|
|
||||||
xilspi->slave.cs = cs;
|
|
||||||
xilspi->regs = (struct xilinx_spi_reg *)xilinx_spi_base_list[bus];
|
xilspi->regs = (struct xilinx_spi_reg *)xilinx_spi_base_list[bus];
|
||||||
xilspi->freq = max_hz;
|
xilspi->freq = max_hz;
|
||||||
xilspi->mode = mode;
|
xilspi->mode = mode;
|
||||||
|
Reference in New Issue
Block a user