mbox series

[v4,0/6] Initial support for the Realtek interrupt controller

Message ID 20231228060825.1380439-1-james.tai@realtek.com
Headers show
Series Initial support for the Realtek interrupt controller | expand

Message

James Tai Dec. 28, 2023, 6:08 a.m. UTC
Introduce an interrupt controller driver for Realtek DHC
(Digital Home Center) SoCs.

Change log:
v3 -> v4:
- Adjusted the allOf block to add constraints on the interrupts per variant
- Adjusted the error path and label
- Added the 'irq_domain_remove' to the error path
- Removed the 'devm_kfree' from the error path
- Replaced the 'irq_of_parse_and_map' with 'of_irq_get'
- Replaced the 'raw_spin_lock' with 'raw_spin_lock_irqsave'
- Adjusted the return value of the 'realtek_intc_subset'
- Replaced the '~1' with macro 'CLEAN_INTC_STATUS'
- Improved code comments and description
- Fixed coding style issues
- Fixed the incorrect control register in mask and unmask functions
- Changed the 'EXPORT_SYMBOL' to the 'EXPORT_SYMBOL_GPL'
- Renamed the 'realtek_intc_subset_cfg' to 'realtek_intc_mask'
- Removed unused and unnecessary code
- Removed 'irq_enable' and 'irq_disable' callback
- Replaced the 'core_initcall' with 'module_init'
- Removed redundant header files
- Moved the function of suspend and resume to common code
- Improved the description of config

v2 -> v3:
- Retested the bindings using the new version of the dtschema
- Fixed the order of property items
- Removed redundant files and replaced them with 'realtek,intc.yaml'
- Replaced 'interrupts-extended' with 'interrupts'
- Added a description for 'interrupts'
- Reduced the example code
- Resolved kernel test robot build warnings

v1 -> v2:
- Tested the bindings using 'make dt_binding_check'
- Fixed code style issues
- Resolved kernel test robot build warnings
- Replaced spin_lock_irqsave with raw_spin_lock
- Replaced magic number with macro
- Removed the realtek_intc_set_affinity function

James Tai (6):
  dt-bindings: interrupt-controller: Add support for Realtek DHC SoCs
  irqchip: Add interrupt controller support for Realtek DHC SoCs
  irqchip: Introduce RTD1319 support using the Realtek common interrupt
    controller driver
  irqchip: Introduce RTD1319D support using the Realtek common interrupt
    controller driver
  irqchip: Introduce RTD1325 support using the Realtek common interrupt
    controller driver
  irqchip: Introduce RTD1619B support using the Realtek common interrupt
    controller driver

 .../interrupt-controller/realtek,intc.yaml    | 131 +++++++++++
 drivers/irqchip/Kconfig                       |  44 ++++
 drivers/irqchip/Makefile                      |   5 +
 drivers/irqchip/irq-realtek-intc-common.c     | 211 ++++++++++++++++++
 drivers/irqchip/irq-realtek-intc-common.h     |  76 +++++++
 drivers/irqchip/irq-realtek-rtd1319.c         | 187 ++++++++++++++++
 drivers/irqchip/irq-realtek-rtd1319d.c        | 196 ++++++++++++++++
 drivers/irqchip/irq-realtek-rtd1325.c         | 196 ++++++++++++++++
 drivers/irqchip/irq-realtek-rtd1619b.c        | 186 +++++++++++++++
 9 files changed, 1232 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/realtek,intc.yaml
 create mode 100644 drivers/irqchip/irq-realtek-intc-common.c
 create mode 100644 drivers/irqchip/irq-realtek-intc-common.h
 create mode 100644 drivers/irqchip/irq-realtek-rtd1319.c
 create mode 100644 drivers/irqchip/irq-realtek-rtd1319d.c
 create mode 100644 drivers/irqchip/irq-realtek-rtd1325.c
 create mode 100644 drivers/irqchip/irq-realtek-rtd1619b.c

Comments

James Tai Dec. 29, 2023, 3:59 p.m. UTC | #1
Hi Krzysztof,

>> Add the YAML documentation for Realtek DHC (Digital Home Center) SoCs.
>>
>> Signed-off-by: James Tai <james.tai@realtek.com>
>
>Thank you for your patch. There is something to discuss/improve.
>
>> +  interrupts:
>> +    minItems: 1
>> +    maxItems: 3
>> +    description:
>> +      Contains the GIC SPI IRQs mapped to the external interrupt lines.
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - interrupt-controller
>> +  - '#interrupt-cells'
>> +  - '#address-cells'
>> +  - interrupts
>> +
>> +additionalProperties: false
>> +
>> +allOf:
>
>If there is going to be new version/resend, allOf: block goes before
>additionalProperties:.
>
I will move the 'allOf: block' to go before 'additionalPropertie' in next patches.

>> +  - $ref: /schemas/interrupt-controller.yaml#
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum:
>> +            - realtek,rtd1319-intc-iso
>> +    then:
>> +      properties:
>> +        interrupts:
>> +          minItems: 1
>
>Why the second interrupt is optional? It's a SoC, the pins are not configurable
>usually. Same question for other cases.
>
I thought it was defined this way to accommodate different SoCs.
I will remove the 'minItems'. Should the correct version look like the following?

allOf:
  - $ref: /schemas/interrupt-controller.yaml#
  - if:
      properties:
        compatible:
          enum:
            - realtek,rtd1319-intc-iso
    then:
      properties:
        interrupts:
          items:
            - description: isolation irqs
            - description: rtc irq
...
...

Thanks for your feedback.

Regards,
James