/**
 * struct pinctrl_dev - pin control class device
 * @node: node to include this pin controller in the global pin controller list
 * @desc: the pin controller descriptor supplied when initializing this pin
 * controller
 * @pin_desc_tree: each pin descriptor for this pin controller is stored in
 * this radix tree
 * @gpio_ranges: a list of GPIO ranges that is handled by this pin controller,
 * ranges are added to this list at runtime
 * @dev: the device entry for this pin controller
 * @owner: module providing the pin controller, used for refcounting
 * @driver_data: driver data for drivers registering to the pin controller
 * subsystem
 * @p: result of pinctrl_get() for this device
 * @hog_default: default state for pins hogged by this device
 * @hog_sleep: sleep state for pins hogged by this device
 * @mutex: mutex taken on each pin controller specific action
 * @device_root: debugfs root for this device
 */
struct pinctrl_dev {
 struct list_head node;
 struct pinctrl_desc *desc;
 struct radix_tree_root pin_desc_tree;
 struct list_head gpio_ranges;
 struct device *dev;
 struct module *owner;
 void *driver_data;
 struct pinctrl *p;
 struct pinctrl_state *hog_default;
 struct pinctrl_state *hog_sleep;
 struct mutex mutex;
#ifdef CONFIG_DEBUG_FS
 struct dentry *device_root;
#endif
};