[PATCH] i.MX: vf610: Add support for ZII VF610 Dev Family
Andrey Smirnov
andrew.smirnov at gmail.com
Fri Feb 3 07:27:13 PST 2017
On Sun, Jan 29, 2017 at 11:05 PM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> On Thu, Jan 26, 2017 at 02:38:12PM -0800, Andrey Smirnov wrote:
>> On Tue, Jan 24, 2017 at 12:09 AM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
>> > Hi Andrey,
>> >
>> > On Sun, Jan 22, 2017 at 09:57:34PM -0800, Andrey Smirnov wrote:
>> >> Add support for ZII VF610 Dev based designs such as:
>> >>
>> >> - VF610 Dev, revision B
>> >> - VF610 Dev, revision C
>> >> - CFU1, revision A
>> >> - SPU3, revision A
>> >> - SCU4 AIB, revision C
>> >>
>> >> Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>
>> >> ---
>> >>
>> >> Sascha, this patch is rebased on 'next' instead of 'master' so that
>> >> you won't have to resolve conflicts with RDU2 patches in 'next'. Let
>> >> me know if you'd rather have it rebased on 'master'.
>> >
>> > It's fine to base on next in this case.
>> >
>> >> +struct named_signal {
>> >> + unsigned int gpio;
>> >> + const char *name;
>> >> + int value;
>> >> +};
>> >> +
>> >> +static int expose_signals(const struct named_signal *signals,
>> >> + size_t signal_num)
>> >> +{
>> >> + int ret, i;
>> >> +
>> >> + for (i = 0; i < signal_num; i++) {
>> >> + const struct named_signal *signal = &signals[i];
>> >> +
>> >> + if (signal->value < 0)
>> >> + ret = gpio_direction_input(signal->gpio);
>> >> + else
>> >> + ret = gpio_direction_output(signal->gpio, signal->value);
>> >> +
>> >> + if (ret) {
>> >> + pr_err("Failed to configure \"%s\"\n", signal->name);
>> >> + return ret;
>> >> + }
>> >
>> > This looks like gpio_request_array(). Could you use this instead?
>>
>> Almost. Unfortunately, gpio_request_array doesn't do much with "label'
>> portion of a descriptor, except to use it when displaying information
>> about GPIOs.
>>
>> What I am doing here as well is exposing those GPIO in a very
>> primitive way by calling
>>
>> export_env_ull(signal->name, signal->gpio);
>
> What I meant was something like:
>
> static int expose_signals(const struct gpio *array, size_t num)
> {
> int ret;
>
> ret = gpio_request_array(gpios);
> if (ret)
> returen ret;
>
> for (i = 0; i < num; i++) {
> const struct gpio *gpio = &array[i];
> export_env_ull(gpio->label, gpio->gpio);
> }
> }
Doh, I completely missed the fact that I can avoid declaring a
pointless custom type if I do this. Good idea, will fix in v2.
Thanks,
Andrey
More information about the barebox
mailing list