disk: disk_access_sdhc: Enable multiple disk interfaces
Enable multiple disk interfaces for SDHC. Signed-off-by: Yannis Damigos <giannis.damigos@gmail.com>
This commit is contained in:
parent
b28cd8a141
commit
937592ead8
1 changed files with 33 additions and 5 deletions
|
@ -866,6 +866,8 @@ error:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int disk_sdhc_init(struct device *dev);
|
||||
|
||||
static int sdhc_init(struct device *dev)
|
||||
{
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -881,12 +883,14 @@ static int sdhc_init(struct device *dev)
|
|||
|
||||
data->pin = DT_DISK_SDHC0_CS_GPIOS_PIN;
|
||||
|
||||
disk_sdhc_init(dev);
|
||||
|
||||
return gpio_pin_configure(data->cs, data->pin, GPIO_DIR_OUT);
|
||||
}
|
||||
|
||||
static struct device *sdhc_get_device(void) { return DEVICE_GET(sdhc_0); }
|
||||
|
||||
int disk_access_status(void)
|
||||
static int disk_sdhc_access_status(struct disk_info *disk)
|
||||
{
|
||||
struct device *dev = sdhc_get_device();
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -894,7 +898,8 @@ int disk_access_status(void)
|
|||
return data->status;
|
||||
}
|
||||
|
||||
int disk_access_read(u8_t *buf, u32_t sector, u32_t count)
|
||||
static int disk_sdhc_access_read(struct disk_info *disk, u8_t *buf,
|
||||
u32_t sector, u32_t count)
|
||||
{
|
||||
struct device *dev = sdhc_get_device();
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -911,7 +916,8 @@ int disk_access_read(u8_t *buf, u32_t sector, u32_t count)
|
|||
return err;
|
||||
}
|
||||
|
||||
int disk_access_write(const u8_t *buf, u32_t sector, u32_t count)
|
||||
static int disk_sdhc_access_write(struct disk_info *disk, const u8_t *buf,
|
||||
u32_t sector, u32_t count)
|
||||
{
|
||||
struct device *dev = sdhc_get_device();
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -928,7 +934,7 @@ int disk_access_write(const u8_t *buf, u32_t sector, u32_t count)
|
|||
return err;
|
||||
}
|
||||
|
||||
int disk_access_ioctl(u8_t cmd, void *buf)
|
||||
static int disk_sdhc_access_ioctl(struct disk_info *disk, u8_t cmd, void *buf)
|
||||
{
|
||||
struct device *dev = sdhc_get_device();
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -958,7 +964,7 @@ int disk_access_ioctl(u8_t cmd, void *buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int disk_access_init(void)
|
||||
static int disk_sdhc_access_init(struct disk_info *disk)
|
||||
{
|
||||
struct device *dev = sdhc_get_device();
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
@ -975,6 +981,28 @@ int disk_access_init(void)
|
|||
return err;
|
||||
}
|
||||
|
||||
static const struct disk_operations sdhc_disk_ops = {
|
||||
.init = disk_sdhc_access_init,
|
||||
.status = disk_sdhc_access_status,
|
||||
.read = disk_sdhc_access_read,
|
||||
.write = disk_sdhc_access_write,
|
||||
.ioctl = disk_sdhc_access_ioctl,
|
||||
};
|
||||
|
||||
static struct disk_info sdhc_disk = {
|
||||
.name = CONFIG_DISK_SDHC_VOLUME_NAME,
|
||||
.ops = &sdhc_disk_ops,
|
||||
};
|
||||
|
||||
static int disk_sdhc_init(struct device *dev)
|
||||
{
|
||||
struct sdhc_data *data = dev->driver_data;
|
||||
|
||||
data->status = DISK_STATUS_UNINIT;
|
||||
|
||||
return disk_access_register(&sdhc_disk);
|
||||
}
|
||||
|
||||
static struct sdhc_data sdhc_data_0;
|
||||
|
||||
DEVICE_AND_API_INIT(sdhc_0, "sdhc_0", sdhc_init, &sdhc_data_0, NULL,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue