[PATCH 2/3] pinctrl: mediatek: Add driver for MT6858
Nikolai Burov
nikolai.burov+review at abscue.de
Mon Jul 13 05:51:40 PDT 2026
On 7/13/26 10:01 AM, AngeloGioacchino Del Regno wrote:
[...]
>> + [PINCTRL_PIN_REG_MODE] = MTK_RANGE(mt6858_pin_mode_range),
>> + [PINCTRL_PIN_REG_DIR] = MTK_RANGE(mt6858_pin_dir_range),
>> + [PINCTRL_PIN_REG_DI] = MTK_RANGE(mt6858_pin_di_range),
>> + [PINCTRL_PIN_REG_DO] = MTK_RANGE(mt6858_pin_do_range),
>> + [PINCTRL_PIN_REG_SR] = MTK_RANGE(mt6858_pin_dir_range),
>
> This is Slew Rate, not Direction... And I think this is wrong.
>
> If you don't know where the slew rate registers are, or if that is an
> unsupported operation, just omit PINCTRL_PIN_REG_SR.
Thanks for noticing this! This seems to be a mistake in the downstream
driver that I unintentionally copied over. I will remove the slew rate.
>
>> + [PINCTRL_PIN_REG_SMT] = MTK_RANGE(mt6858_pin_smt_range),
>> + [PINCTRL_PIN_REG_IES] = MTK_RANGE(mt6858_pin_ies_range),
>> + [PINCTRL_PIN_REG_PU] = MTK_RANGE(mt6858_pin_pu_range),
>> + [PINCTRL_PIN_REG_PD] = MTK_RANGE(mt6858_pin_pd_range),
>> + [PINCTRL_PIN_REG_DRV] = MTK_RANGE(mt6858_pin_drv_range),
>> + [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt6858_pin_pupd_range),
>> + [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt6858_pin_r0_range),
>> + [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt6858_pin_r1_range),
>> + [PINCTRL_PIN_REG_DRV_ADV] = MTK_RANGE(mt6858_pin_drv_adv_range),
>> + [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt6858_pin_rsel_range),
>> +};
>> +
>> +static const char * const mt6858_pinctrl_register_base_names[] = {
>> + "base", "lm", "rb", "bm2", "bm", "bm1", "lt", "lt1", "rt", "rt1",
>
> Fix ordering:
>
> "base", "lm", "rb", "bm", "bm1", "bm2", "lt", "lt1", "rt", "rt1",
The bases are already in ascending address order. I don't know what the
1 and 2 suffixes in the names of the iocfg regions mean, they may just
be a historical leftover. Are the names more important than the
addresses here?
[...]
>> +static const struct of_device_id mt6858_pinctrl_of_match[] = {
>> + { .compatible = "mediatek,mt6858-pinctrl", .data = &mt6858_data },
>> + { }
>
> { /* sentinel */ }
Thanks!
[...]
>> + MTK_EINT_PIN(119, 0, 72, 0),
>> + MTK_EINT_PIN(120, 0, 73, 0),
>> + MTK_EINT_PIN(121, 0, 74, 0),
>
> Looks like you're missing ~70 pins here?
>
> If those have no EINT support, you can declare them as
>
> MTK_EINT_PIN(122, EINT_INVALID_BASE, 0, 0),
>
> ...or you can add a macro to add a (sequential) range of pins with no
> EINT support.
Adding a variable number of mtk_eint_pin structs (with a different pin
number inside each struct) doesn't seem possible using a single macro,
so I'll just manually add all of them to the list.
While writing this, I was looking at the mt6878 driver, which also omits
a range of pins. Should that be fixed as well?
--
Best regards,
Nikolai
More information about the Linux-mediatek
mailing list