lkml.org 
[lkml]   [2023]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v2 2/6] serial: sc16is7xx: remove global regmap from struct sc16is7xx_port
    From: Hugo Villeneuve <hvilleneuve@dimonoff.com>

    Remove global struct regmap so that it is more obvious that this
    regmap is to be used only in the probe function.

    Also add a comment to that effect in probe function.

    Fixes: 3837a0379533 ("serial: sc16is7xx: improve regmap debugfs by using one regmap per port")
    Cc: stable@vger.kernel.org
    Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
    ---
    drivers/tty/serial/sc16is7xx.c | 15 +++++++++------
    1 file changed, 9 insertions(+), 6 deletions(-)

    diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
    index 8d1de4982b65..a4ad3ae8cae2 100644
    --- a/drivers/tty/serial/sc16is7xx.c
    +++ b/drivers/tty/serial/sc16is7xx.c
    @@ -334,7 +334,6 @@ struct sc16is7xx_one {

    struct sc16is7xx_port {
    const struct sc16is7xx_devtype *devtype;
    - struct regmap *regmap;
    struct clk *clk;
    #ifdef CONFIG_GPIOLIB
    struct gpio_chip gpio;
    @@ -1434,7 +1433,8 @@ static void sc16is7xx_setup_irda_ports(struct sc16is7xx_port *s)
    /*
    * Configure ports designated to operate as modem control lines.
    */
    -static int sc16is7xx_setup_mctrl_ports(struct sc16is7xx_port *s)
    +static int sc16is7xx_setup_mctrl_ports(struct sc16is7xx_port *s,
    + struct regmap *regmap)
    {
    int i;
    int ret;
    @@ -1463,7 +1463,7 @@ static int sc16is7xx_setup_mctrl_ports(struct sc16is7xx_port *s)

    if (s->mctrl_mask)
    regmap_update_bits(
    - s->regmap,
    + regmap,
    SC16IS7XX_IOCONTROL_REG,
    SC16IS7XX_IOCONTROL_MODEM_A_BIT |
    SC16IS7XX_IOCONTROL_MODEM_B_BIT, s->mctrl_mask);
    @@ -1495,6 +1495,10 @@ static int sc16is7xx_probe(struct device *dev,
    * This device does not have an identification register that would
    * tell us if we are really connected to the correct device.
    * The best we can do is to check if communication is at all possible.
    + *
    + * Note: regmap[0] is used in the probe function to access registers
    + * common to all channels/ports, as it is guaranteed to be present on
    + * all variants.
    */
    ret = regmap_read(regmaps[0], SC16IS7XX_LSR_REG, &val);
    if (ret < 0)
    @@ -1530,7 +1534,6 @@ static int sc16is7xx_probe(struct device *dev,
    return -EINVAL;
    }

    - s->regmap = regmaps[0];
    s->devtype = devtype;
    dev_set_drvdata(dev, s);
    mutex_init(&s->efr_lock);
    @@ -1545,7 +1548,7 @@ static int sc16is7xx_probe(struct device *dev,
    sched_set_fifo(s->kworker_task);

    /* reset device, purging any pending irq / data */
    - regmap_write(s->regmap, SC16IS7XX_IOCONTROL_REG,
    + regmap_write(regmaps[0], SC16IS7XX_IOCONTROL_REG,
    SC16IS7XX_IOCONTROL_SRESET_BIT);

    for (i = 0; i < devtype->nr_uart; ++i) {
    @@ -1616,7 +1619,7 @@ static int sc16is7xx_probe(struct device *dev,

    sc16is7xx_setup_irda_ports(s);

    - ret = sc16is7xx_setup_mctrl_ports(s);
    + ret = sc16is7xx_setup_mctrl_ports(s, regmaps[0]);
    if (ret)
    goto out_ports;

    --
    2.39.2
    \
     
     \ /
      Last update: 2023-12-11 18:15    [W:2.990 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site