Hi all!
I am having issues requesting GPIO pins which I am trying to toggle on and off. I was wondering if anyone had encountered similar issues. Here is my summarized and relevant code:
dmesg output when I run the driverWhen I toggle the gpio's using other means such as this.. it works perfectlyWhen I check which GPIOs are reserved...
Any advice or possible solutions would be great! Thanks!
I am having issues requesting GPIO pins which I am trying to toggle on and off. I was wondering if anyone had encountered similar issues. Here is my summarized and relevant code:
Code:
#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/proc_fs.h>#include <linux/slab.h>#include <linux/io.h>#include <linux/delay.h>#include <linux/time.h>#include <linux/gpio.h>#define BCM2711_GPIO_ADDRESS 0xFE200000int data_to_gpio_map[8] = { 23, 24, 25, 8, 7, 10, 9, 11 };//Data Pinsstatic int set_gpio_value(unsigned int gpio_num, int value) { int ret; // Request the GPIO pin ret = gpio_request(gpio_num, "rpi-gpio-4"); if (ret) { printk(KERN_ERR "gpio_example: Failed to request GPIO %d\n", gpio_num); return ret; } // Set the GPIO direction to output ret = gpio_direction_output(gpio_num, 0); if (ret) { printk(KERN_ERR "gpio_example: Failed to set GPIO %d as output\n", gpio_num); gpio_free(gpio_num); return ret; }// Set the GPIO pin to the specified value gpio_set_value(gpio_num, value); printk(KERN_INFO "gpio_example: GPIO %d set to %d\n", gpio_num, value); // Release the GPIO pin gpio_free(gpio_num); return 0;}//calling function set_gpio_value(data_to_gpio_map[0], 1);
Code:
[ 9306.267638] gpio_example: Failed to request GPIO 23
Code:
gpioset gpiochip0 23=1 gpioset gpiochip0 23=0
Code:
gpio-driver/user-mode-program $ gpioinfogpiochip0 - 58 lines: line 0: "ID_SDA" unused input active-high line 1: "ID_SCL" unused input active-high line 2: "GPIO2" unused input active-high line 3: "GPIO3" unused input active-high line 4: "GPIO4" unused input active-high line 5: "GPIO5" unused input active-high line 6: "GPIO6" unused input active-high line 7: "GPIO7" unused input active-high line 8: "GPIO8" unused input active-high line 9: "GPIO9" unused input active-high line 10: "GPIO10" unused input active-high line 11: "GPIO11" unused input active-high line 12: "GPIO12" unused input active-high line 13: "GPIO13" unused input active-high line 14: "GPIO14" unused input active-high line 15: "GPIO15" unused input active-high line 16: "GPIO16" unused input active-high line 17: "GPIO17" unused input active-high line 18: "GPIO18" unused input active-high line 19: "GPIO19" unused input active-high line 20: "GPIO20" unused input active-high line 21: "GPIO21" unused input active-high line 22: "GPIO22" unused input active-high line 23: "GPIO23" unused input active-high line 24: "GPIO24" unused input active-high line 25: "GPIO25" unused input active-high line 26: "GPIO26" unused input active-high line 27: "GPIO27" unused input active-high line 28: "RGMII_MDIO" unused input active-high line 29: "RGMIO_MDC" unused input active-high line 30: "CTS0" unused input active-high line 31: "RTS0" unused input active-high line 32: "TXD0" unused input active-high line 33: "RXD0" unused input active-high line 34: "SD1_CLK" unused input active-high line 35: "SD1_CMD" unused input active-high line 36: "SD1_DATA0" unused input active-high line 37: "SD1_DATA1" unused input active-high line 38: "SD1_DATA2" unused input active-high line 39: "SD1_DATA3" unused input active-high line 40: "PWM0_MISO" unused input active-high line 41: "PWM1_MOSI" unused input active-high line 42: "STATUS_LED_G_CLK" "ACT" output active-high [used] line 43: "SPIFLASH_CE_N" unused input active-high line 44: "SDA0" unused input active-high line 45: "SCL0" unused input active-high line 46: "RGMII_RXCLK" unused input active-high line 47: "RGMII_RXCTL" unused input active-high line 48: "RGMII_RXD0" unused input active-high line 49: "RGMII_RXD1" unused input active-high line 50: "RGMII_RXD2" unused input active-high line 51: "RGMII_RXD3" unused input active-high line 52: "RGMII_TXCLK" unused input active-high line 53: "RGMII_TXCTL" unused input active-high line 54: "RGMII_TXD0" unused input active-high line 55: "RGMII_TXD1" unused input active-high line 56: "RGMII_TXD2" unused input active-high line 57: "RGMII_TXD3" unused input active-high gpiochip1 - 8 lines: line 0: "BT_ON" "shutdown" output active-high [used] line 1: "WL_ON" unused output active-high line 2: "PWR_LED_OFF" "PWR" output active-low [used] line 3: "GLOBAL_RESET" unused output active-high line 4: "VDD_SD_IO_SEL" "vdd-sd-io" output active-high [used] line 5: "CAM_GPIO" "cam1_regulator" output active-high [used] line 6: "SD_PWR_ON" "regulator-sd-vcc" output active-high [used] line 7: "SD_OC_N" unused input active-high
Any advice or possible solutions would be great! Thanks!
Statistics: Posted by LukeL46 — Tue May 21, 2024 6:35 pm