mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-10 07:44:23 +08:00
a6ff90f3fb
The blamed commit adds support for irq, but the reqisters for irq are
outside of the memory size. They are at address 0x108. Therefore update
the memory size to cover all the registers used by the device.
Fixes: 01a9350bdd
("dt-bindings: pinctrl: pinctrl-microchip-sgpio: Add irq support")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Link: https://lore.kernel.org/r/20220204153535.465827-2-horatiu.vultur@microchip.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
169 lines
4.3 KiB
YAML
169 lines
4.3 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/pinctrl/microchip,sparx5-sgpio.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Microsemi/Microchip Serial GPIO controller
|
|
|
|
maintainers:
|
|
- Lars Povlsen <lars.povlsen@microchip.com>
|
|
|
|
description: |
|
|
By using a serial interface, the SIO controller significantly extend
|
|
the number of available GPIOs with a minimum number of additional
|
|
pins on the device. The primary purpose of the SIO controllers is to
|
|
connect control signals from SFP modules and to act as an LED
|
|
controller.
|
|
|
|
properties:
|
|
$nodename:
|
|
pattern: "^gpio@[0-9a-f]+$"
|
|
|
|
compatible:
|
|
enum:
|
|
- microchip,sparx5-sgpio
|
|
- mscc,ocelot-sgpio
|
|
- mscc,luton-sgpio
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
|
|
"#size-cells":
|
|
const: 0
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
maxItems: 1
|
|
|
|
microchip,sgpio-port-ranges:
|
|
description: This is a sequence of tuples, defining intervals of
|
|
enabled ports in the serial input stream. The enabled ports must
|
|
match the hardware configuration in order for signals to be
|
|
properly written/read to/from the controller holding
|
|
registers. Being tuples, then number of arguments must be
|
|
even. The tuples mast be ordered (low, high) and are
|
|
inclusive.
|
|
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
|
items:
|
|
items:
|
|
- description: |
|
|
"low" indicates start bit number of range
|
|
minimum: 0
|
|
maximum: 31
|
|
- description: |
|
|
"high" indicates end bit number of range
|
|
minimum: 0
|
|
maximum: 31
|
|
minItems: 1
|
|
maxItems: 32
|
|
|
|
bus-frequency:
|
|
description: The sgpio controller frequency (Hz). This dictates
|
|
the serial bitstream speed, which again affects the latency in
|
|
getting control signals back and forth between external shift
|
|
registers. The speed must be no larger than half the system
|
|
clock, and larger than zero.
|
|
default: 12500000
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
reset-names:
|
|
items:
|
|
- const: switch
|
|
|
|
patternProperties:
|
|
"^gpio@[0-1]$":
|
|
type: object
|
|
properties:
|
|
compatible:
|
|
const: microchip,sparx5-sgpio-bank
|
|
|
|
reg:
|
|
description: |
|
|
The GPIO bank number. "0" is designates the input pin bank,
|
|
"1" the output bank.
|
|
maxItems: 1
|
|
|
|
gpio-controller: true
|
|
|
|
'#gpio-cells':
|
|
description: |
|
|
Specifies the pin (port and bit) and flags. Note that the
|
|
SGIO pin is defined by *2* numbers, a port number between 0
|
|
and 31, and a bit index, 0 to 3. The maximum bit number is
|
|
controlled indirectly by the "ngpios" property: (ngpios/32).
|
|
const: 3
|
|
|
|
interrupts:
|
|
description: Specifies the sgpio IRQ (in parent controller)
|
|
maxItems: 1
|
|
|
|
interrupt-controller: true
|
|
|
|
'#interrupt-cells':
|
|
description:
|
|
Specifies the pin (port and bit) and flags, as defined in
|
|
defined in include/dt-bindings/interrupt-controller/irq.h
|
|
const: 3
|
|
|
|
ngpios:
|
|
description: The numbers of GPIO's exposed. This must be a
|
|
multiple of 32.
|
|
minimum: 32
|
|
maximum: 128
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- gpio-controller
|
|
- '#gpio-cells'
|
|
- ngpios
|
|
|
|
additionalProperties: false
|
|
|
|
additionalProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- clocks
|
|
- microchip,sgpio-port-ranges
|
|
- "#address-cells"
|
|
- "#size-cells"
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
sgpio2: gpio@1101059c {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "microchip,sparx5-sgpio";
|
|
clocks = <&sys_clk>;
|
|
pinctrl-0 = <&sgpio2_pins>;
|
|
pinctrl-names = "default";
|
|
reg = <0x1101059c 0x118>;
|
|
microchip,sgpio-port-ranges = <0 0>, <16 18>, <28 31>;
|
|
bus-frequency = <25000000>;
|
|
sgpio_in2: gpio@0 {
|
|
reg = <0>;
|
|
compatible = "microchip,sparx5-sgpio-bank";
|
|
gpio-controller;
|
|
#gpio-cells = <3>;
|
|
ngpios = <96>;
|
|
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <3>;
|
|
};
|
|
sgpio_out2: gpio@1 {
|
|
compatible = "microchip,sparx5-sgpio-bank";
|
|
reg = <1>;
|
|
gpio-controller;
|
|
#gpio-cells = <3>;
|
|
ngpios = <96>;
|
|
};
|
|
};
|