1.修复spi cs引脚配置不更新。

This commit is contained in:
MacRsh
2023-12-03 19:31:33 +08:00
parent 36ad8be702
commit 8e33f734ac
6 changed files with 16 additions and 10 deletions

View File

@@ -72,7 +72,7 @@ static ssize_t mr_can_bus_isr(struct mr_dev *dev, int event, void *args)
break; break;
} }
} }
return MR_ENOTSUP; return MR_EOK;
} }
default: default:

View File

@@ -59,7 +59,7 @@ static ssize_t mr_i2c_bus_isr(struct mr_dev *dev, int event, void *args)
ssize_t size = (ssize_t)mr_ringbuf_get_data_size(&i2c_dev->rd_fifo); ssize_t size = (ssize_t)mr_ringbuf_get_data_size(&i2c_dev->rd_fifo);
i2c_dev->dev.rd_call.call(i2c_dev->dev.rd_call.desc, &size); i2c_dev->dev.rd_call.call(i2c_dev->dev.rd_call.desc, &size);
} }
return MR_ENOTSUP; return MR_EOK;
} }
default: default:

View File

@@ -197,6 +197,7 @@ static ssize_t mr_serial_isr(struct mr_dev *dev, int event, void *args)
return (ssize_t)mr_ringbuf_get_data_size(&serial->rd_fifo); return (ssize_t)mr_ringbuf_get_data_size(&serial->rd_fifo);
} }
case MR_ISR_SERIAL_WR_INT: case MR_ISR_SERIAL_WR_INT:
{ {
/* Write data from FIFO */ /* Write data from FIFO */

View File

@@ -78,7 +78,7 @@ static ssize_t mr_spi_bus_isr(struct mr_dev *dev, int event, void *args)
ssize_t size = (ssize_t)mr_ringbuf_get_data_size(&spi_dev->rd_fifo); ssize_t size = (ssize_t)mr_ringbuf_get_data_size(&spi_dev->rd_fifo);
spi_dev->dev.rd_call.call(spi_dev->dev.rd_call.desc, &size); spi_dev->dev.rd_call.call(spi_dev->dev.rd_call.desc, &size);
} }
return MR_ENOTSUP; return MR_EOK;
} }
default: default:
@@ -499,9 +499,11 @@ static int mr_spi_dev_ioctl(struct mr_dev *dev, int off, int cmd, void *args)
/* Reconfigure CS */ /* Reconfigure CS */
if (config.host_slave != spi_dev->config.host_slave) if (config.host_slave != spi_dev->config.host_slave)
{ {
spi_dev->config = config;
spi_dev_cs_configure(spi_dev, MR_ENABLE); spi_dev_cs_configure(spi_dev, MR_ENABLE);
} }
#endif /* MR_USING_PIN */ #endif /* MR_USING_PIN */
/* If holding the bus, release it */ /* If holding the bus, release it */
if (spi_dev == spi_bus->owner) if (spi_dev == spi_bus->owner)
{ {

View File

@@ -64,7 +64,7 @@ int mr_dev_register(struct mr_dev *dev,
int sflags, int sflags,
struct mr_dev_ops *ops, struct mr_dev_ops *ops,
struct mr_drv *drv); struct mr_drv *drv);
void mr_dev_isr(struct mr_dev *dev, int event, void *args); int mr_dev_isr(struct mr_dev *dev, int event, void *args);
int mr_dev_get_full_name(struct mr_dev *dev, char *buf, size_t bufsz); int mr_dev_get_full_name(struct mr_dev *dev, char *buf, size_t bufsz);
/** @} */ /** @} */

View File

@@ -435,7 +435,7 @@ int mr_dev_register(struct mr_dev *dev,
* @param event The event to be handle. * @param event The event to be handle.
* @param args The arguments of the event. * @param args The arguments of the event.
*/ */
void mr_dev_isr(struct mr_dev *dev, int event, void *args) int mr_dev_isr(struct mr_dev *dev, int event, void *args)
{ {
mr_assert(dev != MR_NULL); mr_assert(dev != MR_NULL);
@@ -444,7 +444,7 @@ void mr_dev_isr(struct mr_dev *dev, int event, void *args)
ssize_t ret = dev->ops->isr(dev, event, args); ssize_t ret = dev->ops->isr(dev, event, args);
if (ret < 0) if (ret < 0)
{ {
return; return (int)ret;
} }
switch (event & MR_ISR_MASK) switch (event & MR_ISR_MASK)
@@ -455,11 +455,12 @@ void mr_dev_isr(struct mr_dev *dev, int event, void *args)
{ {
dev->rd_call.call(dev->rd_call.desc, &ret); dev->rd_call.call(dev->rd_call.desc, &ret);
} }
return; return MR_EOK;
} }
case MR_ISR_WR: case MR_ISR_WR:
{ {
if (ret == 0) if (ret == MR_EOK)
{ {
#ifdef MR_USING_RDWR_CTL #ifdef MR_USING_RDWR_CTL
dev_lock_release(dev, MR_LFLAG_NONBLOCK); dev_lock_release(dev, MR_LFLAG_NONBLOCK);
@@ -468,16 +469,18 @@ void mr_dev_isr(struct mr_dev *dev, int event, void *args)
{ {
dev->wr_call.call(dev->wr_call.desc, &ret); dev->wr_call.call(dev->wr_call.desc, &ret);
} }
return MR_EOK;
} }
return; return MR_EBUSY;
} }
default: default:
{ {
return; return MR_ENOTSUP;
} }
} }
} }
return MR_ENOTSUP;
} }
/** /**