ata: pata_ep93xx: use soc_device_match for UDMA modes
authorNikita Shubin <nikita.shubin@maquefel.me>
Wed, 23 Aug 2023 09:47:28 +0000 (12:47 +0300)
committerDamien Le Moal <dlemoal@kernel.org>
Fri, 25 Aug 2023 13:09:43 +0000 (22:09 +0900)
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>
drivers/ata/pata_ep93xx.c

index 47bff06..c84a208 100644 (file)
@@ -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;
        }