* or name of the IP component in a System on Chip.
  * @data: per-instance data assigned by the driver
  * @list: links gpio_device:s together for traversal
+ * @notifier: used to notify subscribers about lines being requested, released
+ *            or reconfigured
+ * @pin_ranges: range of pins served by the GPIO driver
  *
  * This state container holds most of the runtime variable data
  * for a GPIO device and can hold references and live on after the
 /* gpio suffixes used for ACPI and device tree lookup */
 static __maybe_unused const char * const gpio_suffixes[] = { "gpios", "gpio" };
 
+/**
+ * struct gpio_array - Opaque descriptor for a structure of GPIO array attributes
+ *
+ * @desc:              Array of pointers to the GPIO descriptors
+ * @size:              Number of elements in desc
+ * @chip:              Parent GPIO chip
+ * @get_mask:          Get mask used in fastpath
+ * @set_mask:          Set mask used in fastpath
+ * @invert_mask:       Invert mask used in fastpath
+ *
+ * This structure is attached to struct gpiod_descs obtained from
+ * gpiod_get_array() and can be passed back to get/set array functions in order
+ * to activate fast processing path if applicable.
+ */
 struct gpio_array {
        struct gpio_desc        **desc;
        unsigned int            size;
 extern spinlock_t gpio_lock;
 extern struct list_head gpio_devices;
 
+
+/**
+ * struct gpio_desc - Opaque descriptor for a GPIO
+ *
+ * @gdev:              Pointer to the parent GPIO device
+ * @flags:             Binary descriptor flags
+ * @label:             Name of the consumer
+ * @name:              Line name
+ * @hog:               Pointer to the device node that hogs this line (if any)
+ * @debounce_period_us:        Debounce period in microseconds
+ *
+ * These are obtained using gpiod_get() and are preferable to the old
+ * integer-based handles.
+ *
+ * Contrary to integers, a pointer to a &struct gpio_desc is guaranteed to be
+ * valid until the GPIO is released.
+ */
 struct gpio_desc {
        struct gpio_device      *gdev;
        unsigned long           flags;
 
 #include <linux/err.h>
 
 struct device;
-
-/**
- * Opaque descriptor for a GPIO. These are obtained using gpiod_get() and are
- * preferable to the old integer-based handles.
- *
- * Contrary to integers, a pointer to a gpio_desc is guaranteed to be valid
- * until the GPIO is released.
- */
 struct gpio_desc;
-
-/**
- * Opaque descriptor for a structure of GPIO array attributes.  This structure
- * is attached to struct gpiod_descs obtained from gpiod_get_array() and can be
- * passed back to get/set array functions in order to activate fast processing
- * path if applicable.
- */
 struct gpio_array;
 
 /**
- * Struct containing an array of descriptors that can be obtained using
- * gpiod_get_array().
+ * struct gpio_descs - Struct containing an array of descriptors that can be
+ *                     obtained using gpiod_get_array()
+ *
+ * @info:      Pointer to the opaque gpio_array structure
+ * @ndescs:    Number of held descriptors
+ * @desc:      Array of pointers to GPIO descriptors
  */
 struct gpio_descs {
        struct gpio_array *info;
 #define GPIOD_FLAGS_BIT_NONEXCLUSIVE   BIT(4)
 
 /**
- * Optional flags that can be passed to one of gpiod_* to configure direction
- * and output value. These values cannot be OR'd.
+ * enum gpiod_flags - Optional flags that can be passed to one of gpiod_* to
+ *                    configure direction and output value. These values
+ *                    cannot be OR'd.
+ *
+ * @GPIOD_ASIS:                        Don't change anything
+ * @GPIOD_IN:                  Set lines to input mode
+ * @GPIOD_OUT_LOW:             Set lines to output and drive them low
+ * @GPIOD_OUT_HIGH:            Set lines to output and drive them high
+ * @GPIOD_OUT_LOW_OPEN_DRAIN:  Set lines to open-drain output and drive them low
+ * @GPIOD_OUT_HIGH_OPEN_DRAIN: Set lines to open-drain output and drive them high
  */
 enum gpiod_flags {
        GPIOD_ASIS      = 0,