serial: sc16is7xx: remove global regmap from struct sc16is7xx_port
commit f6959c5217bd799bcb770b95d3c09b3244e175c6 upstream. 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> Link: https://lore.kernel.org/r/20231211171353.2901416-3-hugo@hugovil.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9bcb019aee
commit
6dca71e6e1
@ -335,7 +335,6 @@ struct sc16is7xx_one {
|
|||||||
|
|
||||||
struct sc16is7xx_port {
|
struct sc16is7xx_port {
|
||||||
const struct sc16is7xx_devtype *devtype;
|
const struct sc16is7xx_devtype *devtype;
|
||||||
struct regmap *regmap;
|
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
#ifdef CONFIG_GPIOLIB
|
#ifdef CONFIG_GPIOLIB
|
||||||
struct gpio_chip gpio;
|
struct gpio_chip gpio;
|
||||||
@ -1415,7 +1414,8 @@ static int sc16is7xx_setup_gpio_chip(struct sc16is7xx_port *s)
|
|||||||
/*
|
/*
|
||||||
* Configure ports designated to operate as modem control lines.
|
* 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 i;
|
||||||
int ret;
|
int ret;
|
||||||
@ -1444,7 +1444,7 @@ static int sc16is7xx_setup_mctrl_ports(struct sc16is7xx_port *s)
|
|||||||
|
|
||||||
if (s->mctrl_mask)
|
if (s->mctrl_mask)
|
||||||
regmap_update_bits(
|
regmap_update_bits(
|
||||||
s->regmap,
|
regmap,
|
||||||
SC16IS7XX_IOCONTROL_REG,
|
SC16IS7XX_IOCONTROL_REG,
|
||||||
SC16IS7XX_IOCONTROL_MODEM_A_BIT |
|
SC16IS7XX_IOCONTROL_MODEM_A_BIT |
|
||||||
SC16IS7XX_IOCONTROL_MODEM_B_BIT, s->mctrl_mask);
|
SC16IS7XX_IOCONTROL_MODEM_B_BIT, s->mctrl_mask);
|
||||||
@ -1476,6 +1476,10 @@ static int sc16is7xx_probe(struct device *dev,
|
|||||||
* This device does not have an identification register that would
|
* This device does not have an identification register that would
|
||||||
* tell us if we are really connected to the correct device.
|
* 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.
|
* 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);
|
ret = regmap_read(regmaps[0], SC16IS7XX_LSR_REG, &val);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -1511,7 +1515,6 @@ static int sc16is7xx_probe(struct device *dev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->regmap = regmaps[0];
|
|
||||||
s->devtype = devtype;
|
s->devtype = devtype;
|
||||||
dev_set_drvdata(dev, s);
|
dev_set_drvdata(dev, s);
|
||||||
mutex_init(&s->efr_lock);
|
mutex_init(&s->efr_lock);
|
||||||
@ -1526,7 +1529,7 @@ static int sc16is7xx_probe(struct device *dev,
|
|||||||
sched_set_fifo(s->kworker_task);
|
sched_set_fifo(s->kworker_task);
|
||||||
|
|
||||||
/* reset device, purging any pending irq / data */
|
/* 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);
|
SC16IS7XX_IOCONTROL_SRESET_BIT);
|
||||||
|
|
||||||
for (i = 0; i < devtype->nr_uart; ++i) {
|
for (i = 0; i < devtype->nr_uart; ++i) {
|
||||||
@ -1606,7 +1609,7 @@ static int sc16is7xx_probe(struct device *dev,
|
|||||||
s->p[u].irda_mode = true;
|
s->p[u].irda_mode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = sc16is7xx_setup_mctrl_ports(s);
|
ret = sc16is7xx_setup_mctrl_ports(s, regmaps[0]);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_ports;
|
goto out_ports;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user