On Mon, Dec 12, 2022 at 9:34 AM Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> wrote: > > Don't do that because the GPIO maintainers love the > > dynamic base and hate hardcoded bases. Set the base to -1 > > If you wonder why, read drivers/gpio/TODO. > > Hi Linus, > > I recenly verfied other peripheral on upstream, some peripheral driver > need use gpio number, What do you mean by upstream? If it is your own derivate kernel (what we call *downstream) then it should be fixed, not accommodated for. If it is the mainline (Torvalds) kernel you are looking at legacy code (such as boardfiles) which should be fixed or deleted. Beware that the kernel contains much old code and bad examples which should not be followed. > but if use dynamic base that gpio number will be > meaningless. in additon I notice that many gpio driver don't use > dynamic base, although bgpio_int was called. Two wrongs does not make one right. It is always possible to find bad examples in the kernel, because we maintain lots of legacy code. When in doubt, do what the maintainers say. This maintainer says this: use a dynamic base. > so I think the gpio number should be keep consistent with datasheet for > some platform that need use gpio number. So someone wrote a datasheet for a derivative, home-cooked kernel that they had not bothered to synchronize with the community and now the community should accommodate this mistake? Sorry that is not how we work. That datasheet is probably recommending old and bad practices, such as using global GPIO numbers in drivers or using GPIO sysfs. The GPIO maintainers do not approve of such stuff. What about fixing the datasheet to say: - We use dynamic GPIO number allocation - Assign GPIOs to devices in the device tree with only HW GPIO number references = <&gpio HW_NUM GPIO_ACTIVE_HIGH>; etc - For userspace access use libgpiod and /dev/gpiochipN, do not enable the legacy GPIO sysfs. Yours, Linus Walleij