Hello all,
I find your response to my question in Dvel Archive
<http://sel4.systems/pipermail/devel/2020-January/002652.html>. I changed
the parameter of gpio_new() that I am calling in my gpio_init_pin() (I
changed it from 0 to 1 to have output direction).
But I keep getting same error:
imx6_gpio_init@gpio.c:96 Invalid GPIO
Assertion failed: bank->data == v (libplatsupport/src/plat/imx6/gpio.c:
imx6_gpio_set_level: 136)
My question is that could it be because of pin number that I pass to
gpio_new function.
Here I have copied parts of my code:
******************************************
gpio_sys_t gpio_sys;
gpio_t pins[32*7];
mux_sys_t mux_sys;
void gpio__init()
{
imx6_mux_init(NULL, &mux_sys);
imx6_gpio_sys_init((void*)gpio0, (void*)gpio1, (void*)gpio2, (void*)gpio3,
(void*)gpio4, (void*)gpio5, (void*)gpio6, &mux_sys, &gpio_sys);
}
void gpio_init_pin(int pin, int direction)
{
if(pin>0 && pin< sizeof(pins)/sizeof(pins[0]))
{
gpio_new(&gpio_sys, pin, (enum gpio_dir)direction, &pins[pin]);
}
}

void gpio_set_pin(int pin, int value)
{
if(pin >= 0 && pin < (sizeof(pins)/sizeof(pins[0])))
{
        if(value)
        {
            gpio_set(&pins[pin]);
        }
        else
        {
            gpio_clr(&pins[pin]);
        }
    }
}

int gpio_read_pin(int pin)
{
if(pin>0 && pin< sizeof(pins)/sizeof(pins[0]))
{
return gpio_get(&pins[pin]);
}
return -1;
}
******************************************
Can any one help me to solve this problem?

Thank you,
Parvaneh.

On Tue, Jan 28, 2020 at 12:40 PM Parvaneh Ahgajani <
aghajani.parva...@gmail.com> wrote:

> Hello all,
>
> I am working with sabre lite board and using camkes framework.
> In my implementation I have a driver component that has 7 dataport buf and
> I connected these buffers to hardware component.
> In source of component driver I am initialize gpio_sys, mux_sys and pins
> using these functions:
> - imx6_mux_init()
> - imx6_gpio_sys_init()
> - gpio_new()
>
> Here I have copied some part of my code:
> ******************************************
> gpio_sys_t gpio_sys;
> gpio_t pins[32*7];
> mux_sys_t mux_sys;
> void gpio__init()
> {
> imx6_mux_init(NULL, &mux_sys);
> imx6_gpio_sys_init((void*)gpio0, (void*)gpio1, (void*)gpio2, (void*)gpio3,
> (void*)gpio4, (void*)gpio5, (void*)gpio6, &mux_sys, &gpio_sys);
> }
> void gpio_init_pin(int pin, int direction)
> {
> if(pin>0 && pin< sizeof(pins)/sizeof(pins[0]))
> {
> gpio_new(&gpio_sys, pin, (enum gpio_dir)direction, &pins[pin]);
> }
> }
>
> void gpio_set_pin(int pin, int value)
> {
> if(pin >= 0 && pin < (sizeof(pins)/sizeof(pins[0])))
> {
>         if(value)
>         {
>             gpio_set(&pins[pin]);
>         }
>         else
>         {
>             gpio_clr(&pins[pin]);
>         }
>     }
> }
>
> int gpio_read_pin(int pin)
> {
> if(pin>0 && pin< sizeof(pins)/sizeof(pins[0]))
> {
> return gpio_get(&pins[pin]);
> }
> return -1;
> }
> ******************************************
> By calling "gpio_init_pin(ALARM_PIN= 28, 0);" I am getting this error:
> Assertion failed: bank->data == v
> (PATH/projects/util_libs/libplatsupport/src/plat/imx6/gpio.c:
> imx6_gpio_write: 144)
> How can I fix this error? How should I specify the GPIO pins?
>
> Thank you for your time and consideration,
> Parvaneh.
>
_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to