Re: [PATCH v2 1/4] dt-bindings: aspeed-sgpio: Convert txt bindings to yaml.
From: Steven Lee <hidden>
Date: 2021-05-28 04:10:04
Also in:
linux-aspeed, linux-devicetree, linux-gpio, lkml
The 05/28/2021 07:51, Linus Walleij wrote:
On Thu, May 27, 2021 at 2:55 AM Steven Lee [off-list ref] wrote:quoted
SGPIO bindings should be converted as yaml format. In addition to the file conversion, a new property max-ngpios is added in the yaml file as well. The new property is required by the enhanced sgpio driver for making the configuration of the max number of gpio pins more flexible. Signed-off-by: Steven Lee <redacted>(...)quoted
+ max-ngpios: + description: + represents the number of actual hardware-supported GPIOs (ie, + slots within the clocked serial GPIO data). Since each HW GPIO is both an + input and an output, we provide max_ngpios * 2 lines on our gpiochip + device. We also use it to define the split between the inputs and + outputs; the inputs start at line 0, the outputs start at max_ngpios. + minimum: 0 + maximum: 128Why can this not be derived from the compatible value? Normally there should be one compatible per hardware variant of the block. And this should be aligned with that, should it not? If this is not the case, maybe more detailed compatible strings are needed, maybe double compatibles with compatible per family and SoC?
Thanks for your suggestion. I add max-ngpios in dt-bindings as there is ngpios defined in dt-bindings, users can get the both max-ngpios and ngpios information from dtsi without digging sgpio driver. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/aspeed-g5.dtsi#n354 If adding more detailed compatibles is better, I will add them to sgpio driver in V3 patch and remove max-ngpios from dt-bindings. Since AST2600 has 2 sgpio controller one with 128 pins and another one with 80 pins. For supporting max-ngpios in compatibles, 2 platform data for each ast2600 sgpio controller as follows are necessary.
static const struct aspeed_sgpio_pdata ast2600_sgpiom1_pdata = {
.max_ngpios = 128;
};
static const struct aspeed_sgpio_pdata ast2600_sgpiom2_pdata = {
.max_ngpios = 80;
};
{ .compatible = "aspeed,ast2500-sgpio" , .data = &ast2400_sgpio_pdata, },
{ .compatible = "aspeed,ast2600-sgpiom1", .data = &ast2600_sgpiom1_pdata, },
{ .compatible = "aspeed,ast2600-sgpiom2", .data = &ast2600_sgpiom2_pdata, },
Thanks, Steven
Yours, Linus Walleij
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel