mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
spi: Correct operations check in dm_spi_xfer()
At present we have to have an xfer() method even if it does nothing. This is not correct, so fix it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
@@ -493,13 +493,6 @@ static int ich_spi_adjust_size(struct spi_slave *slave, struct spi_mem_op *op)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ich_spi_xfer(struct udevice *dev, unsigned int bitlen,
|
|
||||||
const void *dout, void *din, unsigned long flags)
|
|
||||||
{
|
|
||||||
printf("ICH SPI: Only supports memory operations\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ich_spi_probe(struct udevice *dev)
|
static int ich_spi_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct ich_spi_platdata *plat = dev_get_platdata(dev);
|
struct ich_spi_platdata *plat = dev_get_platdata(dev);
|
||||||
@@ -612,7 +605,7 @@ static const struct spi_controller_mem_ops ich_controller_mem_ops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct dm_spi_ops ich_spi_ops = {
|
static const struct dm_spi_ops ich_spi_ops = {
|
||||||
.xfer = ich_spi_xfer,
|
/* xfer is not supported */
|
||||||
.set_speed = ich_spi_set_speed,
|
.set_speed = ich_spi_set_speed,
|
||||||
.set_mode = ich_spi_set_mode,
|
.set_mode = ich_spi_set_mode,
|
||||||
.mem_ops = &ich_controller_mem_ops,
|
.mem_ops = &ich_controller_mem_ops,
|
||||||
|
@@ -85,11 +85,14 @@ int dm_spi_xfer(struct udevice *dev, unsigned int bitlen,
|
|||||||
const void *dout, void *din, unsigned long flags)
|
const void *dout, void *din, unsigned long flags)
|
||||||
{
|
{
|
||||||
struct udevice *bus = dev->parent;
|
struct udevice *bus = dev->parent;
|
||||||
|
struct dm_spi_ops *ops = spi_get_ops(bus);
|
||||||
|
|
||||||
if (bus->uclass->uc_drv->id != UCLASS_SPI)
|
if (bus->uclass->uc_drv->id != UCLASS_SPI)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
if (!ops->xfer)
|
||||||
|
return -ENOSYS;
|
||||||
|
|
||||||
return spi_get_ops(bus)->xfer(dev, bitlen, dout, din, flags);
|
return ops->xfer(dev, bitlen, dout, din, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int dm_spi_get_mmap(struct udevice *dev, ulong *map_basep, uint *map_sizep,
|
int dm_spi_get_mmap(struct udevice *dev, ulong *map_basep, uint *map_sizep,
|
||||||
|
@@ -224,7 +224,7 @@ void spi_release_bus(struct spi_slave *slave);
|
|||||||
int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
|
int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SPI transfer
|
* SPI transfer (optional if mem_ops is used)
|
||||||
*
|
*
|
||||||
* This writes "bitlen" bits out the SPI MOSI port and simultaneously clocks
|
* This writes "bitlen" bits out the SPI MOSI port and simultaneously clocks
|
||||||
* "bitlen" bits in the SPI MISO port. That's just the way SPI works.
|
* "bitlen" bits in the SPI MISO port. That's just the way SPI works.
|
||||||
|
Reference in New Issue
Block a user