mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 21:52:04 +00:00
pinctrl: intel: Share struct intel_pinctrl for wider use
There are few drivers for Intel SoC GPIO which may utilize the same data structure to describe this IP. Share struct intel_pinctrl for wider user. Acked-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
6a304752eb
commit
66c812d22e
@ -8,8 +8,8 @@
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
@ -85,39 +85,6 @@ struct intel_community_context {
|
||||
u32 *hostown;
|
||||
};
|
||||
|
||||
struct intel_pinctrl_context {
|
||||
struct intel_pad_context *pads;
|
||||
struct intel_community_context *communities;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct intel_pinctrl - Intel pinctrl private structure
|
||||
* @dev: Pointer to the device structure
|
||||
* @lock: Lock to serialize register access
|
||||
* @pctldesc: Pin controller description
|
||||
* @pctldev: Pointer to the pin controller device
|
||||
* @chip: GPIO chip in this pin controller
|
||||
* @irqchip: IRQ chip in this pin controller
|
||||
* @soc: SoC/PCH specific pin configuration data
|
||||
* @communities: All communities in this pin controller
|
||||
* @ncommunities: Number of communities in this pin controller
|
||||
* @context: Configuration saved over system sleep
|
||||
* @irq: pinctrl/GPIO chip irq number
|
||||
*/
|
||||
struct intel_pinctrl {
|
||||
struct device *dev;
|
||||
raw_spinlock_t lock;
|
||||
struct pinctrl_desc pctldesc;
|
||||
struct pinctrl_dev *pctldev;
|
||||
struct gpio_chip chip;
|
||||
struct irq_chip irqchip;
|
||||
const struct intel_pinctrl_soc_data *soc;
|
||||
struct intel_community *communities;
|
||||
size_t ncommunities;
|
||||
struct intel_pinctrl_context context;
|
||||
int irq;
|
||||
};
|
||||
|
||||
#define pin_to_padno(c, p) ((p) - (c)->pin_base)
|
||||
#define padgroup_offset(g, p) ((p) - (g)->base)
|
||||
|
||||
|
@ -10,7 +10,10 @@
|
||||
#ifndef PINCTRL_INTEL_H
|
||||
#define PINCTRL_INTEL_H
|
||||
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/spinlock_types.h>
|
||||
|
||||
struct pinctrl_pin_desc;
|
||||
struct platform_device;
|
||||
@ -174,6 +177,47 @@ struct intel_pinctrl_soc_data {
|
||||
size_t ncommunities;
|
||||
};
|
||||
|
||||
struct intel_pad_context;
|
||||
struct intel_community_context;
|
||||
|
||||
/**
|
||||
* struct intel_pinctrl_context - context to be saved during suspend-resume
|
||||
* @pads: Opaque context per pad (driver dependent)
|
||||
* @communities: Opaque context per community (driver dependent)
|
||||
*/
|
||||
struct intel_pinctrl_context {
|
||||
struct intel_pad_context *pads;
|
||||
struct intel_community_context *communities;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct intel_pinctrl - Intel pinctrl private structure
|
||||
* @dev: Pointer to the device structure
|
||||
* @lock: Lock to serialize register access
|
||||
* @pctldesc: Pin controller description
|
||||
* @pctldev: Pointer to the pin controller device
|
||||
* @chip: GPIO chip in this pin controller
|
||||
* @irqchip: IRQ chip in this pin controller
|
||||
* @soc: SoC/PCH specific pin configuration data
|
||||
* @communities: All communities in this pin controller
|
||||
* @ncommunities: Number of communities in this pin controller
|
||||
* @context: Configuration saved over system sleep
|
||||
* @irq: pinctrl/GPIO chip irq number
|
||||
*/
|
||||
struct intel_pinctrl {
|
||||
struct device *dev;
|
||||
raw_spinlock_t lock;
|
||||
struct pinctrl_desc pctldesc;
|
||||
struct pinctrl_dev *pctldev;
|
||||
struct gpio_chip chip;
|
||||
struct irq_chip irqchip;
|
||||
const struct intel_pinctrl_soc_data *soc;
|
||||
struct intel_community *communities;
|
||||
size_t ncommunities;
|
||||
struct intel_pinctrl_context context;
|
||||
int irq;
|
||||
};
|
||||
|
||||
int intel_pinctrl_probe_by_hid(struct platform_device *pdev);
|
||||
int intel_pinctrl_probe_by_uid(struct platform_device *pdev);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user