> Careful here !! > > The driver _should_ work for MX233 too! What I'd like to see is you > introducing > a function like: > > int mxs_gpio_is_valid(gpio) > { > char mxs_banks[PINCTRL_BANKS] = PINCTRL_BANK_COUNTS; > > if (PAD_PIN(gpio) > mxs_bank[PAD_BANK(gpio)]) > return -EINVAL; > > return 0; > }
There's a bit of a paradox here: If a name is translated into a pin, bank numbers above 7 and pin numbers above 31 will have wrapped around in translation and won't be caught here. I could check for wrapping in the translating function and check for valid numbers within the assigned bit range here, but I'd rather not see validity check spread over two functions. > And define PINCTRL_BANK_COUNTS in the section of mxs_gpio.c where all the > remaining mx28 and mx233 specific defines are hoarded (near the top of the > file). At that spot I've put in Mike's (very similar) solution now: static const int mxs_bank_pins[] = { MXS_BANK0_PINS, MXS_BANK1_PINS, MXS_BANK2_PINS, #ifdef(CONFIG_MX28) MXS_BANK3_PINS, MXS_BANK4_PINS, #endif }; I'm considering to remove the macro PINCTRL_BANKS now, and use ARRAY_SIZE(mxs_bank_pins) instead, as it yields the same number and leads to a single point of definition. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot