Hi Krzysztof / Sam, On Wed, 6 Dec 2023 at 11:38, Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote: > > On 02/12/2023 02:36, Alim Akhtar wrote: > > > >> > >> On Fri, Dec 1, 2023 at 10:11 AM Peter Griffin <peter.griffin@xxxxxxxxxx> > >> wrote: > >>> > >>> Add support for the pin-controller found on the gs101 SoC used in > >>> Pixel 6 phones. > >>> > >>> Signed-off-by: Peter Griffin <peter.griffin@xxxxxxxxxx> > >>> --- > >>> .../pinctrl/samsung/pinctrl-exynos-arm64.c | 159 ++++++++++++++++++ > >>> drivers/pinctrl/samsung/pinctrl-exynos.c | 2 + > >>> drivers/pinctrl/samsung/pinctrl-exynos.h | 34 ++++ > >>> drivers/pinctrl/samsung/pinctrl-samsung.c | 2 + > >>> drivers/pinctrl/samsung/pinctrl-samsung.h | 1 + > >>> 5 files changed, 198 insertions(+) > >>> > >>> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c > >>> b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c > >>> index cb965cf93705..e1a0668ecb16 100644 > >>> --- a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c > >>> +++ b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c > >>> @@ -796,3 +796,162 @@ const struct samsung_pinctrl_of_match_data > >> fsd_of_data __initconst = { > >>> .ctrl = fsd_pin_ctrl, > >>> .num_ctrl = ARRAY_SIZE(fsd_pin_ctrl), > >>> }; > >>> + > >>> +/* > >>> + * bank type for non-alive type > >>> + * (CON bit field: 4, DAT bit field: 1, PUD bit field: 4, DRV bit > >>> +field: 4) > >>> + * (CONPDN bit field: 2, PUDPDN bit field: 4) */ static struct > >>> +samsung_pin_bank_type gs101_bank_type_off = { > >>> + .fld_width = { 4, 1, 4, 4, 2, 4, }, > >>> + .reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, }, }; > >> > >> This is just the same as exynos850_bank_type_off (100% duplication). > >> Here is what I suggest. Now that it's obvious there is some common platform > >> for moder Exynos SoCs, and it's probably Exynos9, I'd suggest next course of > >> action (if maintainers agree): > >> 1. Remove this one > >> 2. Rename exynos850_bank_type_off to exynos9_bank_type_off > >> 3. Use it for both gs101 and exynos850 > >> > >> Does it make sense? > >> > > My opinion is to reuse exynos850 for gs101 (wherever applicable), same philosophy was historically followed in this file. > > That way (using exynos850 for gs101) things will be simple. > > Adding exynos9_* is not adding any benefit, rather it create confusion. > > I don't see much value in renaming exynos850 bank type to exynos9 > considering: > 1. We don't really know the bank types for all of Exynos9xxx SoCs, > 2. Exynos7885 also uses Exynos850 bank types. Exynos7885 was much > earlier than Exynos9xxx family. Thanks Alim and Krzysztof for your input. Exynos7885 (Exynos 8 family) using Exynos850 bank types looks like a mistake to me. I found some downstream code for 7885, and it doesn't look like selecting a filter was supported downstream [1] [2]. As Sam confirmed this hardware is present on e850 downstream, so 7885 and e850 have different hardware at least for these banks. As the EXYNOS850_PIN_BANK_EINTW macro is being used by Exynos850, exynosautov9 and exynos7885 using a generic macro with gs101 doesn't look possible (I have no way to find out these filter register offsets, or if those platforms actually have these registers). Therefore I propose: 1. For bank types that match exactly use exynos850 versions 2. For bank types which have fltcon_offset we add a new macro EXYNOS9_PIN_BANK_EINTW like it exists in this series or GS101_PIN_BANK_EINTW if people prefer that That still leaves us in the rather unfortunate position that if Exynos850 wants selectable filter support then it wouldn't be using the EXYNOS850_PIN_BANK_EINTW macro. But I suggest we cross that bridge if/when Sam decides to support selectable filters on e850. We could do some sort of macro renaming, but what we rename it to though I have no idea EXYNOS7885_blah or EXYNOSAUTOV9_blah. @Chanho do you know if ExynosAutov9 supports selectable filters on alive banks? regards, Peter [1] https://github.com/samsungexynos7885/android_kernel_samsung_universal7885/blob/android-9.0/drivers/pinctrl/samsung/pinctrl-exynos.c#L1696 [2] https://github.com/samsungexynos7885/android_kernel_samsung_universal7885/blob/android-9.0/drivers/pinctrl/samsung/pinctrl-exynos.h#L108