Quantcast
Viewing all articles
Browse latest Browse all 4919

C/C++ • Failed requesting GPIO pins for Kernel Driver

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:

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);
dmesg output when I run the driver

Code:

[ 9306.267638] gpio_example: Failed to request GPIO 23
When I toggle the gpio's using other means such as this.. it works perfectly

Code:

gpioset gpiochip0 23=1 gpioset gpiochip0 23=0 
When I check which GPIOs are reserved...

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



Viewing all articles
Browse latest Browse all 4919

Trending Articles