diff options
author | Nikita Shubin <nikita.shubin@maquefel.me> | 2023-08-23 12:47:28 +0300 |
---|---|---|
committer | Damien Le Moal <dlemoal@kernel.org> | 2023-08-25 22:09:43 +0900 |
commit | db15538ba6a4a38b020258cf07174edf16f94b74 (patch) | |
tree | bf3799fdc57ea9501cc39350ec04361b6e6002fe /drivers/ata | |
parent | 41203f93e2be757c0c8a8dd050938261ce49ab7c (diff) | |
download | lwn-db15538ba6a4a38b020258cf07174edf16f94b74.tar.gz lwn-db15538ba6a4a38b020258cf07174edf16f94b74.zip |
ata: pata_ep93xx: use soc_device_match for UDMA modes
Replace ep93xx_chip_revision() with soc_device_match(), so
ep93xx_chip_revision() can be safetly dropped from exported functions.
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/pata_ep93xx.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c index 47bff06202f4..c84a20892f1b 100644 --- a/drivers/ata/pata_ep93xx.c +++ b/drivers/ata/pata_ep93xx.c @@ -40,6 +40,7 @@ #include <linux/ata.h> #include <linux/libata.h> #include <linux/platform_device.h> +#include <linux/sys_soc.h> #include <linux/delay.h> #include <linux/dmaengine.h> #include <linux/ktime.h> @@ -910,6 +911,12 @@ static struct ata_port_operations ep93xx_pata_port_ops = { .port_start = ep93xx_pata_port_start, }; +static const struct soc_device_attribute ep93xx_soc_table[] = { + { .revision = "E1", .data = (void *)ATA_UDMA3 }, + { .revision = "E2", .data = (void *)ATA_UDMA4 }, + { /* sentinel */ } +}; + static int ep93xx_pata_probe(struct platform_device *pdev) { struct ep93xx_pata_data *drv_data; @@ -976,12 +983,11 @@ static int ep93xx_pata_probe(struct platform_device *pdev) * so this driver supports only UDMA modes. */ if (drv_data->dma_rx_channel && drv_data->dma_tx_channel) { - int chip_rev = ep93xx_chip_revision(); + const struct soc_device_attribute *match; - if (chip_rev == EP93XX_CHIP_REV_E1) - ap->udma_mask = ATA_UDMA3; - else if (chip_rev == EP93XX_CHIP_REV_E2) - ap->udma_mask = ATA_UDMA4; + match = soc_device_match(ep93xx_soc_table); + if (match) + ap->udma_mask = (unsigned int) match->data; else ap->udma_mask = ATA_UDMA2; } |