Commit 435cc3d4 authored by Linus Walleij's avatar Linus Walleij

gpio: crystalcove: use gpiochip data pointer

This makes the driver use the data pointer added to the gpio_chip
to store a pointer to the state container instead of relying on
container_of().

Cc: Shobhit Kumar <shobhit.kumar@intel.com>
Cc: Zhu, Lejun <lejun.zhu@linux.intel.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent e51b5523
...@@ -86,11 +86,6 @@ struct crystalcove_gpio { ...@@ -86,11 +86,6 @@ struct crystalcove_gpio {
bool set_irq_mask; bool set_irq_mask;
}; };
static inline struct crystalcove_gpio *to_cg(struct gpio_chip *gc)
{
return container_of(gc, struct crystalcove_gpio, chip);
}
static inline int to_reg(int gpio, enum ctrl_register reg_type) static inline int to_reg(int gpio, enum ctrl_register reg_type)
{ {
int reg; int reg;
...@@ -134,7 +129,7 @@ static void crystalcove_update_irq_ctrl(struct crystalcove_gpio *cg, int gpio) ...@@ -134,7 +129,7 @@ static void crystalcove_update_irq_ctrl(struct crystalcove_gpio *cg, int gpio)
static int crystalcove_gpio_dir_in(struct gpio_chip *chip, unsigned gpio) static int crystalcove_gpio_dir_in(struct gpio_chip *chip, unsigned gpio)
{ {
struct crystalcove_gpio *cg = to_cg(chip); struct crystalcove_gpio *cg = gpiochip_get_data(chip);
if (gpio > CRYSTALCOVE_VGPIO_NUM) if (gpio > CRYSTALCOVE_VGPIO_NUM)
return 0; return 0;
...@@ -146,7 +141,7 @@ static int crystalcove_gpio_dir_in(struct gpio_chip *chip, unsigned gpio) ...@@ -146,7 +141,7 @@ static int crystalcove_gpio_dir_in(struct gpio_chip *chip, unsigned gpio)
static int crystalcove_gpio_dir_out(struct gpio_chip *chip, unsigned gpio, static int crystalcove_gpio_dir_out(struct gpio_chip *chip, unsigned gpio,
int value) int value)
{ {
struct crystalcove_gpio *cg = to_cg(chip); struct crystalcove_gpio *cg = gpiochip_get_data(chip);
if (gpio > CRYSTALCOVE_VGPIO_NUM) if (gpio > CRYSTALCOVE_VGPIO_NUM)
return 0; return 0;
...@@ -157,7 +152,7 @@ static int crystalcove_gpio_dir_out(struct gpio_chip *chip, unsigned gpio, ...@@ -157,7 +152,7 @@ static int crystalcove_gpio_dir_out(struct gpio_chip *chip, unsigned gpio,
static int crystalcove_gpio_get(struct gpio_chip *chip, unsigned gpio) static int crystalcove_gpio_get(struct gpio_chip *chip, unsigned gpio)
{ {
struct crystalcove_gpio *cg = to_cg(chip); struct crystalcove_gpio *cg = gpiochip_get_data(chip);
int ret; int ret;
unsigned int val; unsigned int val;
...@@ -174,7 +169,7 @@ static int crystalcove_gpio_get(struct gpio_chip *chip, unsigned gpio) ...@@ -174,7 +169,7 @@ static int crystalcove_gpio_get(struct gpio_chip *chip, unsigned gpio)
static void crystalcove_gpio_set(struct gpio_chip *chip, static void crystalcove_gpio_set(struct gpio_chip *chip,
unsigned gpio, int value) unsigned gpio, int value)
{ {
struct crystalcove_gpio *cg = to_cg(chip); struct crystalcove_gpio *cg = gpiochip_get_data(chip);
if (gpio > CRYSTALCOVE_VGPIO_NUM) if (gpio > CRYSTALCOVE_VGPIO_NUM)
return; return;
...@@ -187,7 +182,8 @@ static void crystalcove_gpio_set(struct gpio_chip *chip, ...@@ -187,7 +182,8 @@ static void crystalcove_gpio_set(struct gpio_chip *chip,
static int crystalcove_irq_type(struct irq_data *data, unsigned type) static int crystalcove_irq_type(struct irq_data *data, unsigned type)
{ {
struct crystalcove_gpio *cg = to_cg(irq_data_get_irq_chip_data(data)); struct crystalcove_gpio *cg =
gpiochip_get_data(irq_data_get_irq_chip_data(data));
switch (type) { switch (type) {
case IRQ_TYPE_NONE: case IRQ_TYPE_NONE:
...@@ -213,14 +209,16 @@ static int crystalcove_irq_type(struct irq_data *data, unsigned type) ...@@ -213,14 +209,16 @@ static int crystalcove_irq_type(struct irq_data *data, unsigned type)
static void crystalcove_bus_lock(struct irq_data *data) static void crystalcove_bus_lock(struct irq_data *data)
{ {
struct crystalcove_gpio *cg = to_cg(irq_data_get_irq_chip_data(data)); struct crystalcove_gpio *cg =
gpiochip_get_data(irq_data_get_irq_chip_data(data));
mutex_lock(&cg->buslock); mutex_lock(&cg->buslock);
} }
static void crystalcove_bus_sync_unlock(struct irq_data *data) static void crystalcove_bus_sync_unlock(struct irq_data *data)
{ {
struct crystalcove_gpio *cg = to_cg(irq_data_get_irq_chip_data(data)); struct crystalcove_gpio *cg =
gpiochip_get_data(irq_data_get_irq_chip_data(data));
int gpio = data->hwirq; int gpio = data->hwirq;
if (cg->update & UPDATE_IRQ_TYPE) if (cg->update & UPDATE_IRQ_TYPE)
...@@ -234,7 +232,8 @@ static void crystalcove_bus_sync_unlock(struct irq_data *data) ...@@ -234,7 +232,8 @@ static void crystalcove_bus_sync_unlock(struct irq_data *data)
static void crystalcove_irq_unmask(struct irq_data *data) static void crystalcove_irq_unmask(struct irq_data *data)
{ {
struct crystalcove_gpio *cg = to_cg(irq_data_get_irq_chip_data(data)); struct crystalcove_gpio *cg =
gpiochip_get_data(irq_data_get_irq_chip_data(data));
cg->set_irq_mask = false; cg->set_irq_mask = false;
cg->update |= UPDATE_IRQ_MASK; cg->update |= UPDATE_IRQ_MASK;
...@@ -242,7 +241,8 @@ static void crystalcove_irq_unmask(struct irq_data *data) ...@@ -242,7 +241,8 @@ static void crystalcove_irq_unmask(struct irq_data *data)
static void crystalcove_irq_mask(struct irq_data *data) static void crystalcove_irq_mask(struct irq_data *data)
{ {
struct crystalcove_gpio *cg = to_cg(irq_data_get_irq_chip_data(data)); struct crystalcove_gpio *cg =
gpiochip_get_data(irq_data_get_irq_chip_data(data));
cg->set_irq_mask = true; cg->set_irq_mask = true;
cg->update |= UPDATE_IRQ_MASK; cg->update |= UPDATE_IRQ_MASK;
...@@ -288,7 +288,7 @@ static irqreturn_t crystalcove_gpio_irq_handler(int irq, void *data) ...@@ -288,7 +288,7 @@ static irqreturn_t crystalcove_gpio_irq_handler(int irq, void *data)
static void crystalcove_gpio_dbg_show(struct seq_file *s, static void crystalcove_gpio_dbg_show(struct seq_file *s,
struct gpio_chip *chip) struct gpio_chip *chip)
{ {
struct crystalcove_gpio *cg = to_cg(chip); struct crystalcove_gpio *cg = gpiochip_get_data(chip);
int gpio, offset; int gpio, offset;
unsigned int ctlo, ctli, mirqs0, mirqsx, irq; unsigned int ctlo, ctli, mirqs0, mirqsx, irq;
...@@ -345,7 +345,7 @@ static int crystalcove_gpio_probe(struct platform_device *pdev) ...@@ -345,7 +345,7 @@ static int crystalcove_gpio_probe(struct platform_device *pdev)
cg->chip.dbg_show = crystalcove_gpio_dbg_show; cg->chip.dbg_show = crystalcove_gpio_dbg_show;
cg->regmap = pmic->regmap; cg->regmap = pmic->regmap;
retval = gpiochip_add(&cg->chip); retval = gpiochip_add_data(&cg->chip, cg);
if (retval) { if (retval) {
dev_warn(&pdev->dev, "add gpio chip error: %d\n", retval); dev_warn(&pdev->dev, "add gpio chip error: %d\n", retval);
return retval; return retval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment