mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
ptp: ocp: convert serial ports to array
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>
This commit is contained in:
parent
2560db6ede
commit
d7875b4b07
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user