Linux 内核设备驱动之GPIO驱动之GPIO 获取GPIO描述符

    xiaoxiao2021-03-25  93

    /**  * Convert a GPIO number to its descriptor  */ struct gpio_desc *gpio_to_desc(unsigned gpio) {  struct gpio_device *gdev;  unsigned long flags;

     spin_lock_irqsave(&gpio_lock, flags);

     list_for_each_entry(gdev, &gpio_devices, list) {   if (gdev->base <= gpio &&       gdev->base + gdev->ngpio > gpio) {    spin_unlock_irqrestore(&gpio_lock, flags);    return &gdev->descs[gpio - gdev->base];   }  }

     spin_unlock_irqrestore(&gpio_lock, flags);

     if (!gpio_is_valid(gpio))   WARN(1, "invalid GPIO %d\n", gpio);

     return NULL; } EXPORT_SYMBOL_GPL(gpio_to_desc);

       

    /**  * Get the GPIO descriptor corresponding to the given hw number for this chip.  */ struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip,         u16 hwnum) {  struct gpio_device *gdev = chip->gpiodev;

     if (hwnum >= gdev->ngpio)   return ERR_PTR(-EINVAL);

     return &gdev->descs[hwnum]; }

     
    转载请注明原文地址: https://ju.6miu.com/read-18300.html

    最新回复(0)