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