mbox series

[v10,0/3] Adding support for Microchip/Microsemi serial GPIO controller

Message ID 20201113145151.68900-1-lars.povlsen@microchip.com
Headers show
Series Adding support for Microchip/Microsemi serial GPIO controller | expand

Message

Lars Povlsen Nov. 13, 2020, 2:51 p.m. UTC
The series add support for the serial GPIO controller used by
Microchip Sparx5, as well as (MSCC) ocelot/jaguar2 SoCs.

v10 changes - anniversary edition (from Andy):
 - Fixed "Author" comment
 - Added missing "break;" in default switch case
 - Return -EINVAL when requesting pin disabled in bitstream
 - Change bank consistency check to return -ERANGE if failed (-EINVAL
   previously)

v9 changes (from Andy):
 - Avoid bitfield duplication (use FIELD_PREP/FIELD_GET)
 - Introduce SGPIO_SRC_BITS define constant
 - Use ENOTSUPP instead of EOPNOTSUPP (checkpatch will complain)
 - Drop dev_err() when using pin for wrong direction
 - Replaced left-over OF code with device_property_* flavors
 - Use devm_kasprintf() instead of strnprintf()+devm_strdup()
 - Minor formatting changes, deleted comments

v8 changes (from Andy):
 - Removed OF dependency/usage entirely.
 - Trimmed+sorted include files.
 - Made local variables reverse xmas sorted.
 - Removed __func__ usage.
 - Changed some occurences of "if (x) { ..." to early return.
 - Use dev_err_probe() where possible.
 - Replace of_device_get_match_data() with device_get_match_data()
 - Some minor formatting corrections
 - Do per-pin string allocation as opposed to bulk allocation+chop.

v7 changes:
- Fixed wrong sizeof in pin string name template. (Andy)
- Collapsed sgpio_input_get() to one liner. (Andy)
- Eliminated unneeded variable in microchip_sgpio_get_value()
- Removed noisy dev_info(). (Andy)
- Replaced platform_get_resource()+devm_ioremap_resource() with
 devm_platform_ioremap_resource(). (Andy)
- Replaced device_property_read_u32() with
  of_property_read_u32(). (Andy)
- Replaced __builtin_ffsll() with __builtin_ffs() for MIPS32 targets.

v6 changes:
- Use "bus-frequency" instead of "microchip,sgpio-frequency". Drop
  '$ref'. (Robh)
- Added "ngpios" description, bumped minimum to 32. (Linus)
- Added "#size-cells" description. (Linus)
- Changed "bus-frequency" validation in driver to reflect the YAML
  description.

v5 changes (driver comments from Linus):
- Collect bank data in sgpio_bank struct
- Add is_input boolean to sgpio_bank struct
- Use single-bit bitmasks in sgpio_output_set() and sgpio_output_get()
- Eliminate superfluous struct pinctrl_dev *pctl_dev in bank data
- Fix wrong ngpio consistency check

v4 changes (binding comments from Rob):
- microchip,sgpio-port-ranges changed to uint32-matrix so tuples can
  be represented properly.
- gpio controller node name changed to "gpio@[0-1]"
- whitespace fixes
- DT files updated as per schema changes

v3 changes:
- Renamed all usage of "mchp" abbrevation with "microchip".
- Split the in/output directions into (two) separate banks.
- Eliminated the bindings include file (from above)
- Changed SPDX license to "GPL-2.0-or-later"
- Change -ENOTSUPP to -EOPNOTSUPP
- Minor type/symbol naming changes

v2 changes:
- Adds both in and output modes.
- Use direct adressing of the individual banks (#gpio-cells = <4>),
  also osoleting need for addressing macros in bindings include file.
- Property 'microchip,sgpio-ports' (uint32, bitmask) replaced by
  proper range set (array of [start,end]) 'microchip,sgpio-port-ranges'.
- Fixes whitespace issues in Kconfig file

Lars Povlsen (3):
  dt-bindings: pinctrl: Add bindings for pinctrl-microchip-sgpio driver
  pinctrl: pinctrl-microchip-sgpio: Add pinctrl driver for Microsemi
    Serial GPIO
  arm64: dts: sparx5: Add SGPIO devices

 .../pinctrl/microchip,sparx5-sgpio.yaml       | 145 ++++
 MAINTAINERS                                   |   1 +
 arch/arm64/boot/dts/microchip/sparx5.dtsi     |  91 +++
 .../boot/dts/microchip/sparx5_pcb125.dts      |   5 +
 .../dts/microchip/sparx5_pcb134_board.dtsi    | 258 +++++++
 .../dts/microchip/sparx5_pcb135_board.dtsi    |  55 ++
 drivers/pinctrl/Kconfig                       |  16 +
 drivers/pinctrl/Makefile                      |   1 +
 drivers/pinctrl/pinctrl-microchip-sgpio.c     | 709 ++++++++++++++++++
 9 files changed, 1281 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pinctrl/microchip,sparx5-sgpio.yaml
 create mode 100644 drivers/pinctrl/pinctrl-microchip-sgpio.c

--
2.25.1

Comments

Linus Walleij Nov. 23, 2020, 2:30 p.m. UTC | #1
On Fri, Nov 13, 2020 at 3:52 PM Lars Povlsen <lars.povlsen@microchip.com> wrote:

> The series add support for the serial GPIO controller used by
> Microchip Sparx5, as well as (MSCC) ocelot/jaguar2 SoCs.
>
> v10 changes - anniversary edition (from Andy):
>  - Fixed "Author" comment
>  - Added missing "break;" in default switch case
>  - Return -EINVAL when requesting pin disabled in bitstream
>  - Change bank consistency check to return -ERANGE if failed (-EINVAL
>    previously)

Patches 1 & 2 applied to the GPIO tree!

Patch 3 needs to go to the SoC tree.

Thanks for your hard work!

Yours,
Linus Walleij
Lars Povlsen Nov. 23, 2020, 3:05 p.m. UTC | #2
Linus Walleij writes:

> On Fri, Nov 13, 2020 at 3:52 PM Lars Povlsen <lars.povlsen@microchip.com> wrote:
>
>> The series add support for the serial GPIO controller used by
>> Microchip Sparx5, as well as (MSCC) ocelot/jaguar2 SoCs.
>>
>> v10 changes - anniversary edition (from Andy):
>>  - Fixed "Author" comment
>>  - Added missing "break;" in default switch case
>>  - Return -EINVAL when requesting pin disabled in bitstream
>>  - Change bank consistency check to return -ERANGE if failed (-EINVAL
>>    previously)
>
> Patches 1 & 2 applied to the GPIO tree!

Excellent!

>
> Patch 3 needs to go to the SoC tree.
>

I'll forward this in a PR for Arnd.

> Thanks for your hard work!

Thank you to both you and Any for good comments.

---Lars

>
> Yours,
> Linus Walleij