> The regmap API supports IO port accessors so we can take advantage of > regmap abstractions rather than handling access to the device registers > directly in the driver. > > The WinSystems WS16C48 provides the following registers: > > Offset 0x0-0x5: Port 0-5 I/O > Offset 0x6: Int_Pending > Offset 0x7: Page/Lock > Offset 0x8-0xA (Page 1): Pol_0-Pol_2 > Offset 0x8-0xA (Page 2): Enab_0-Enab_2 > Offset 0x8-0xA (Page 3): Int_ID0-Int_ID2 > > Port 0-5 I/O provides access to 48 lines of digital I/O across six > registers, each bit position corresponding to the respective line. > Writing a 1 to a respective bit position causes that output pin to sink > current, while writing a 0 to the same bit position causes that output > pin to go to a high-impedance state and allows it to be used an input. > Reads on a port report the inverted state (0 = high, 1 = low) of an I/O > pin when used in input mode. Interrupts are supported on Port 0-2. > > Int_Pending is a read-only register that reports the combined state of > the INT_ID0 through INT_ID2 registers; an interrupt pending is indicated > when any of the low three bits are set. > > The Page/Lock register provides the following bits: > > Bit 0-5: Port 0-5 I/O Lock > Bit 6-7: Page 0-3 Selection > > For Bits 0-5, writing a 1 to a respective bit position locks the output > state of the corresponding I/O port. Writing the page number to Bits 6-7 > selects that respective register page for use. > > Pol_0-Pol_2 are accessible when Page 1 is selected. Writing a 1 to a > respective bit position selects the rising edge detection interrupts for > that input line, while writing a 0 to the same bit position selects the > falling edge detection interrupts. > > Enab_0-Enab_2 are accessible when Page 2 is selected. Writing a 1 to a > respective bit position enables interrupts for that input line, while > writing a 0 to that same bit position clears and disables interrupts for > that input line. > > Int_ID0-Int_ID2 are accessible when Page 3 is selected. A respective bit > when read as a 1 indicates that an edge of the polarity set in the > corresponding polarity register was detected for the corresponding input > line. Writing any value to this register clears all pending interrupts > for the register. > > Cc: Paul Demetrotion <pdemetrotion@xxxxxxxxxxxxxx> > Suggested-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: William Breathitt Gray <william.gray@xxxxxxxxxx> Same here, gpio-regmap part looks good: Reviewed-by: Michael Walle <michael@xxxxxxxx> -michael