In my testing, I want to access the fpga gpio. I can use set the fpga gpio pin from user space (open /dev/mem, then use mmap, etc). However I cannot set the fpga from kernel space.
In my kernel code, I tried to ioremap the gpio0 based, and then set the gpio pin, but it doesn't work as expected.
void *ptr = ioremap(0xff708000, 0x10 );
*(ptr+offset) = 0b1;
where offset is the memory mapped slave as shown in platform designer.
I tried many ways but it doesn't work.
I found this useful link:
Please refer to it, the summary of accessing GPIO:
1- include the driver:
2- GPIOs must be allocated before use:
int gpio_request(unsigned int gpio, const char *label);
3- And GPIO can be returned to the system with:
void gpio_free(unsigned int gpio);
4- Configure GPIO as Input/Output:
int gpio_direction_input(unsigned int gpio);
int gpio_direction_output(unsigned int gpio, int value);
5- Run GPIO:
int gpio_get_value(unsigned int gpio);
void gpio_set_value(unsigned int gpio, int value);
Hope this might help.