On Thu, Feb 02, 2023 at 05:12:22PM +0200, Andy Shevchenko wrote: > On Mon, Jan 30, 2023 at 09:59:30PM +0100, Levente Révész wrote: > > Hi All, > > > > The pca953x driver supports many chips. These all have the basic 4 > > registers: input, output, invert and direction. Most of them have > > additional registers for various functions, like pull-up and > > pull-down control, interrupt status and mask, hardware debounce. > > > > Different chip types have various register layouts. These layouts differ > > even in the basic 4 registers. > > > > This patch series > > > > 1. Cleans up chip type handling, and > > 2. Replaces register address calculations. The proposed scheme > > works with every register of every chip type. > > > > These changes make it possible to add support for extended functions for > > more chip types, including: > > > > * Interrupt mask for PCA950X, PCA9698, PCA957X and XRA120X > > * Interrupt status for PCA957X and XRA120X > > * Bias for PCA957X and XRA120X > > * Debounce for PCAL65XX and XRA120X > > > > References: > > 1. Previous discussion about the chip types > > https://lore.kernel.org/linux-gpio/Y1q52efyv93%2Fz8BC@xxxxxxxxxxxxxxxxxx/ > > 2. An overview of pca953x chip types > > https://lore.kernel.org/linux-gpio/67bba210-09ac-32fb-bb97-8bfc40c2c200@xxxxxxxxxx/ > > Now as I'm thinking more of your nice job, it may be less effort to everybody > if you start from moving the driver to be a real pin control driver united with > GPIO handling. > > That said, start drivers/pinctrl/pinctrl-pca953x.c from scratch with all your > ideas in it. To make it better for review and testing, split by series in which > you add the main chip family, i.e. PCA953x one (without interrupt?) and then > adding each type one-by-one. > > Also prepare some documentation file in Documentation/...gpio.../pca953x or > start a brand new pinctrl folder (we do not have it yet) where you describe > all your research. > > Note, this will be quite useful to enable PWM support later on for some chips. And to avoid messing up with the existing driver, add Kconfig part at last. -- With Best Regards, Andy Shevchenko