]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ptp: ocp: convert serial ports to array
authorVadim Fedorenko <vadfed@meta.com>
Thu, 29 Aug 2024 18:36:01 +0000 (11:36 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 3 Sep 2024 13:37:47 +0000 (15:37 +0200)
Simplify serial port management code by using array of ports and helpers
to get the name of the port. This change is needed to make the next
patch simplier.

Signed-off-by: Vadim Fedorenko <vadfed@meta.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/ptp/ptp_ocp.c

index ee2ced88ab34faba382b7afc2051f8eea24ad4df..46369de8e30bb2832bd0abe9a20d42fa4b529430 100644 (file)
@@ -316,6 +316,15 @@ struct ptp_ocp_serial_port {
 #define OCP_SERIAL_LEN                 6
 #define OCP_SMA_NUM                    4
 
+enum {
+       PORT_GNSS,
+       PORT_GNSS2,
+       PORT_MAC, /* miniature atomic clock */
+       PORT_NMEA,
+
+       __PORT_COUNT,
+};
+
 struct ptp_ocp {
        struct pci_dev          *pdev;
        struct device           dev;
@@ -357,10 +366,7 @@ struct ptp_ocp {
        struct delayed_work     sync_work;
        int                     id;
        int                     n_irqs;
-       struct ptp_ocp_serial_port      gnss_port;
-       struct ptp_ocp_serial_port      gnss2_port;
-       struct ptp_ocp_serial_port      mac_port;   /* miniature atomic clock */
-       struct ptp_ocp_serial_port      nmea_port;
+       struct ptp_ocp_serial_port      port[__PORT_COUNT];
        bool                    fw_loader;
        u8                      fw_tag;
        u16                     fw_version;
@@ -655,28 +661,28 @@ static struct ocp_resource ocp_fb_resource[] = {
                },
        },
        {
-               OCP_SERIAL_RESOURCE(gnss_port),
+               OCP_SERIAL_RESOURCE(port[PORT_GNSS]),
                .offset = 0x00160000 + 0x1000, .irq_vec = 3,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 115200,
                },
        },
        {
-               OCP_SERIAL_RESOURCE(gnss2_port),
+               OCP_SERIAL_RESOURCE(port[PORT_GNSS2]),
                .offset = 0x00170000 + 0x1000, .irq_vec = 4,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 115200,
                },
        },
        {
-               OCP_SERIAL_RESOURCE(mac_port),
+               OCP_SERIAL_RESOURCE(port[PORT_MAC]),
                .offset = 0x00180000 + 0x1000, .irq_vec = 5,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 57600,
                },
        },
        {
-               OCP_SERIAL_RESOURCE(nmea_port),
+               OCP_SERIAL_RESOURCE(port[PORT_NMEA]),
                .offset = 0x00190000 + 0x1000, .irq_vec = 10,
        },
        {
@@ -740,7 +746,7 @@ static struct ocp_resource ocp_art_resource[] = {
                .offset = 0x01000000, .size = 0x10000,
        },
        {
-               OCP_SERIAL_RESOURCE(gnss_port),
+               OCP_SERIAL_RESOURCE(port[PORT_GNSS]),
                .offset = 0x00160000 + 0x1000, .irq_vec = 3,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 115200,
@@ -839,7 +845,7 @@ static struct ocp_resource ocp_art_resource[] = {
                },
        },
        {
-               OCP_SERIAL_RESOURCE(mac_port),
+               OCP_SERIAL_RESOURCE(port[PORT_MAC]),
                .offset = 0x00190000, .irq_vec = 7,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 9600,
@@ -950,14 +956,14 @@ static struct ocp_resource ocp_adva_resource[] = {
                .offset = 0x00220000, .size = 0x1000,
        },
        {
-               OCP_SERIAL_RESOURCE(gnss_port),
+               OCP_SERIAL_RESOURCE(port[PORT_GNSS]),
                .offset = 0x00160000 + 0x1000, .irq_vec = 3,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 9600,
                },
        },
        {
-               OCP_SERIAL_RESOURCE(mac_port),
+               OCP_SERIAL_RESOURCE(port[PORT_MAC]),
                .offset = 0x00180000 + 0x1000, .irq_vec = 5,
                .extra = &(struct ptp_ocp_serial_port) {
                        .baud = 115200,
@@ -1649,6 +1655,15 @@ ptp_ocp_tod_gnss_name(int idx)
        return gnss_name[idx];
 }
 
+static const char *
+ptp_ocp_tty_port_name(int idx)
+{
+       static const char * const tty_name[] = {
+               "GNSS", "GNSS2", "MAC", "NMEA"
+       };
+       return tty_name[idx];
+}
+
 struct ptp_ocp_nvmem_match_info {
        struct ptp_ocp *bp;
        const void * const tag;
@@ -3960,16 +3975,11 @@ ptp_ocp_summary_show(struct seq_file *s, void *data)
        bp = dev_get_drvdata(dev);
 
        seq_printf(s, "%7s: /dev/ptp%d\n", "PTP", ptp_clock_index(bp->ptp));
-       if (bp->gnss_port.line != -1)
-               seq_printf(s, "%7s: /dev/ttyS%d\n", "GNSS1",
-                          bp->gnss_port.line);
-       if (bp->gnss2_port.line != -1)
-               seq_printf(s, "%7s: /dev/ttyS%d\n", "GNSS2",
-                          bp->gnss2_port.line);
-       if (bp->mac_port.line != -1)
-               seq_printf(s, "%7s: /dev/ttyS%d\n", "MAC", bp->mac_port.line);
-       if (bp->nmea_port.line != -1)
-               seq_printf(s, "%7s: /dev/ttyS%d\n", "NMEA", bp->nmea_port.line);
+       for (i = 0; i < __PORT_COUNT; i++) {
+               if (bp->port[i].line != -1)
+                       seq_printf(s, "%7s: /dev/ttyS%d\n", ptp_ocp_tty_port_name(i),
+                                  bp->port[i].line);
+       }
 
        memset(sma_val, 0xff, sizeof(sma_val));
        if (bp->sma_map1) {
@@ -4279,7 +4289,7 @@ ptp_ocp_dev_release(struct device *dev)
 static int
 ptp_ocp_device_init(struct ptp_ocp *bp, struct pci_dev *pdev)
 {
-       int err;
+       int i, err;
 
        mutex_lock(&ptp_ocp_lock);
        err = idr_alloc(&ptp_ocp_idr, bp, 0, 0, GFP_KERNEL);
@@ -4292,10 +4302,10 @@ ptp_ocp_device_init(struct ptp_ocp *bp, struct pci_dev *pdev)
 
        bp->ptp_info = ptp_ocp_clock_info;
        spin_lock_init(&bp->lock);
-       bp->gnss_port.line = -1;
-       bp->gnss2_port.line = -1;
-       bp->mac_port.line = -1;
-       bp->nmea_port.line = -1;
+
+       for (i = 0; i < __PORT_COUNT; i++)
+               bp->port[i].line = -1;
+
        bp->pdev = pdev;
 
        device_initialize(&bp->dev);
@@ -4351,23 +4361,15 @@ ptp_ocp_complete(struct ptp_ocp *bp)
 {
        struct pps_device *pps;
        char buf[32];
+       int i;
 
-       if (bp->gnss_port.line != -1) {
-               sprintf(buf, "ttyS%d", bp->gnss_port.line);
-               ptp_ocp_link_child(bp, buf, "ttyGNSS");
-       }
-       if (bp->gnss2_port.line != -1) {
-               sprintf(buf, "ttyS%d", bp->gnss2_port.line);
-               ptp_ocp_link_child(bp, buf, "ttyGNSS2");
-       }
-       if (bp->mac_port.line != -1) {
-               sprintf(buf, "ttyS%d", bp->mac_port.line);
-               ptp_ocp_link_child(bp, buf, "ttyMAC");
-       }
-       if (bp->nmea_port.line != -1) {
-               sprintf(buf, "ttyS%d", bp->nmea_port.line);
-               ptp_ocp_link_child(bp, buf, "ttyNMEA");
+       for (i = 0; i < __PORT_COUNT; i++) {
+               if (bp->port[i].line != -1) {
+                       sprintf(buf, "ttyS%d", bp->port[i].line);
+                       ptp_ocp_link_child(bp, buf, ptp_ocp_tty_port_name(i));
+               }
        }
+
        sprintf(buf, "ptp%d", ptp_clock_index(bp->ptp));
        ptp_ocp_link_child(bp, buf, "ptp");
 
@@ -4416,23 +4418,20 @@ ptp_ocp_info(struct ptp_ocp *bp)
        };
        struct device *dev = &bp->pdev->dev;
        u32 reg;
+       int i;
 
        ptp_ocp_phc_info(bp);
 
-       ptp_ocp_serial_info(dev, "GNSS", bp->gnss_port.line,
-                           bp->gnss_port.baud);
-       ptp_ocp_serial_info(dev, "GNSS2", bp->gnss2_port.line,
-                           bp->gnss2_port.baud);
-       ptp_ocp_serial_info(dev, "MAC", bp->mac_port.line, bp->mac_port.baud);
-       if (bp->nmea_out && bp->nmea_port.line != -1) {
-               bp->nmea_port.baud = -1;
+       for (i = 0; i < __PORT_COUNT; i++) {
+               if (i == PORT_NMEA && bp->nmea_out && bp->port[PORT_NMEA].line != -1) {
+                       bp->port[PORT_NMEA].baud = -1;
 
-               reg = ioread32(&bp->nmea_out->uart_baud);
-               if (reg < ARRAY_SIZE(nmea_baud))
-                       bp->nmea_port.baud = nmea_baud[reg];
-
-               ptp_ocp_serial_info(dev, "NMEA", bp->nmea_port.line,
-                                   bp->nmea_port.baud);
+                       reg = ioread32(&bp->nmea_out->uart_baud);
+                       if (reg < ARRAY_SIZE(nmea_baud))
+                               bp->port[PORT_NMEA].baud = nmea_baud[reg];
+               }
+               ptp_ocp_serial_info(dev, ptp_ocp_tty_port_name(i), bp->port[i].line,
+                                   bp->port[i].baud);
        }
 }
 
@@ -4473,14 +4472,9 @@ ptp_ocp_detach(struct ptp_ocp *bp)
        for (i = 0; i < 4; i++)
                if (bp->signal_out[i])
                        ptp_ocp_unregister_ext(bp->signal_out[i]);
-       if (bp->gnss_port.line != -1)
-               serial8250_unregister_port(bp->gnss_port.line);
-       if (bp->gnss2_port.line != -1)
-               serial8250_unregister_port(bp->gnss2_port.line);
-       if (bp->mac_port.line != -1)
-               serial8250_unregister_port(bp->mac_port.line);
-       if (bp->nmea_port.line != -1)
-               serial8250_unregister_port(bp->nmea_port.line);
+       for (i = 0; i < __PORT_COUNT; i++)
+               if (bp->port[i].line != -1)
+                       serial8250_unregister_port(bp->port[i].line);
        platform_device_unregister(bp->spi_flash);
        platform_device_unregister(bp->i2c_ctrl);
        if (bp->i2c_clk)