On Thu, May 25, 2023 at 12:03:25AM -0400, Hugo Villeneuve wrote: > From: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx> > > With this driver, it is very hard to debug the registers using > the /sys/kernel/debug/regmap interface. > > The main reason is that bits 0 and 1 of the register address > correspond to the channels bits, so the register address itself starts > at bit 2, so we must 'mentally' shift each register address by 2 bits > to get its offset. > > Also, only channels 0 and 1 are supported, so combinations of bits > 0 and 1 being 10b and 11b are invalid, and the display of these > registers is useless. > > For example: > > cat /sys/kernel/debug/regmap/spi0.0/registers > 04: 10 -> Port 0, register offset 1 > 05: 10 -> Port 1, register offset 1 > 06: 00 -> Port 2, register offset 1 -> invalid > 07: 00 -> port 3, register offset 1 -> invalid > ... > > Add a debug module parameter to call a custom dump function for each > port registers after the probe phase to help debug. > > Signed-off-by: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx> > --- > drivers/tty/serial/sc16is7xx.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c > index 03d00b144304..693b6cc371f8 100644 > --- a/drivers/tty/serial/sc16is7xx.c > +++ b/drivers/tty/serial/sc16is7xx.c > @@ -347,6 +347,10 @@ struct sc16is7xx_port { > struct sc16is7xx_one p[]; > }; > > +static bool debug; > +module_param(debug, bool, 0644); > +MODULE_PARM_DESC(debug, "enable/disable debug messages"); Sorry, but no, use the normal dynamic debugging logic that the whole rest of the kernel uses. Do not add random per-driver module parameters like this, that would be a regression from the existing infrastructure that we have in place already. thanks, greg k-h