mirror of https://gitee.com/openkylin/linux.git
gpio: rcar: reference device instead of platform device
The change simplifies dereferences to the mediated struct device, also it allows to limit the scope of the platform device usage to probe and remove functions only. Non-functional change. Signed-off-by: Vladimir Zapolskiy <vz@mleia.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
81c85ec15a
commit
a53f79534f
|
@ -35,7 +35,7 @@ struct gpio_rcar_bank_info {
|
||||||
struct gpio_rcar_priv {
|
struct gpio_rcar_priv {
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
struct platform_device *pdev;
|
struct device *dev;
|
||||||
struct gpio_chip gpio_chip;
|
struct gpio_chip gpio_chip;
|
||||||
struct irq_chip irq_chip;
|
struct irq_chip irq_chip;
|
||||||
unsigned int irq_parent;
|
unsigned int irq_parent;
|
||||||
|
@ -140,7 +140,7 @@ static int gpio_rcar_irq_set_type(struct irq_data *d, unsigned int type)
|
||||||
struct gpio_rcar_priv *p = gpiochip_get_data(gc);
|
struct gpio_rcar_priv *p = gpiochip_get_data(gc);
|
||||||
unsigned int hwirq = irqd_to_hwirq(d);
|
unsigned int hwirq = irqd_to_hwirq(d);
|
||||||
|
|
||||||
dev_dbg(&p->pdev->dev, "sense irq = %d, type = %d\n", hwirq, type);
|
dev_dbg(p->dev, "sense irq = %d, type = %d\n", hwirq, type);
|
||||||
|
|
||||||
switch (type & IRQ_TYPE_SENSE_MASK) {
|
switch (type & IRQ_TYPE_SENSE_MASK) {
|
||||||
case IRQ_TYPE_LEVEL_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
|
@ -180,8 +180,7 @@ static int gpio_rcar_irq_set_wake(struct irq_data *d, unsigned int on)
|
||||||
if (p->irq_parent) {
|
if (p->irq_parent) {
|
||||||
error = irq_set_irq_wake(p->irq_parent, on);
|
error = irq_set_irq_wake(p->irq_parent, on);
|
||||||
if (error) {
|
if (error) {
|
||||||
dev_dbg(&p->pdev->dev,
|
dev_dbg(p->dev, "irq %u doesn't support irq_set_wake\n",
|
||||||
"irq %u doesn't support irq_set_wake\n",
|
|
||||||
p->irq_parent);
|
p->irq_parent);
|
||||||
p->irq_parent = 0;
|
p->irq_parent = 0;
|
||||||
}
|
}
|
||||||
|
@ -244,13 +243,13 @@ static int gpio_rcar_request(struct gpio_chip *chip, unsigned offset)
|
||||||
struct gpio_rcar_priv *p = gpiochip_get_data(chip);
|
struct gpio_rcar_priv *p = gpiochip_get_data(chip);
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
error = pm_runtime_get_sync(&p->pdev->dev);
|
error = pm_runtime_get_sync(p->dev);
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = pinctrl_gpio_request(chip->base + offset);
|
error = pinctrl_gpio_request(chip->base + offset);
|
||||||
if (error)
|
if (error)
|
||||||
pm_runtime_put(&p->pdev->dev);
|
pm_runtime_put(p->dev);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -267,7 +266,7 @@ static void gpio_rcar_free(struct gpio_chip *chip, unsigned offset)
|
||||||
*/
|
*/
|
||||||
gpio_rcar_config_general_input_output_mode(chip, offset, false);
|
gpio_rcar_config_general_input_output_mode(chip, offset, false);
|
||||||
|
|
||||||
pm_runtime_put(&p->pdev->dev);
|
pm_runtime_put(p->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gpio_rcar_get_direction(struct gpio_chip *chip, unsigned int offset)
|
static int gpio_rcar_get_direction(struct gpio_chip *chip, unsigned int offset)
|
||||||
|
@ -398,21 +397,20 @@ MODULE_DEVICE_TABLE(of, gpio_rcar_of_table);
|
||||||
|
|
||||||
static int gpio_rcar_parse_dt(struct gpio_rcar_priv *p, unsigned int *npins)
|
static int gpio_rcar_parse_dt(struct gpio_rcar_priv *p, unsigned int *npins)
|
||||||
{
|
{
|
||||||
struct device_node *np = p->pdev->dev.of_node;
|
struct device_node *np = p->dev->of_node;
|
||||||
const struct gpio_rcar_info *info;
|
const struct gpio_rcar_info *info;
|
||||||
struct of_phandle_args args;
|
struct of_phandle_args args;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
info = of_device_get_match_data(&p->pdev->dev);
|
info = of_device_get_match_data(p->dev);
|
||||||
|
|
||||||
ret = of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, 0, &args);
|
ret = of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, 0, &args);
|
||||||
*npins = ret == 0 ? args.args[2] : RCAR_MAX_GPIO_PER_BANK;
|
*npins = ret == 0 ? args.args[2] : RCAR_MAX_GPIO_PER_BANK;
|
||||||
p->has_both_edge_trigger = info->has_both_edge_trigger;
|
p->has_both_edge_trigger = info->has_both_edge_trigger;
|
||||||
|
|
||||||
if (*npins == 0 || *npins > RCAR_MAX_GPIO_PER_BANK) {
|
if (*npins == 0 || *npins > RCAR_MAX_GPIO_PER_BANK) {
|
||||||
dev_warn(&p->pdev->dev,
|
dev_warn(p->dev, "Invalid number of gpio lines %u, using %u\n",
|
||||||
"Invalid number of gpio lines %u, using %u\n", *npins,
|
*npins, RCAR_MAX_GPIO_PER_BANK);
|
||||||
RCAR_MAX_GPIO_PER_BANK);
|
|
||||||
*npins = RCAR_MAX_GPIO_PER_BANK;
|
*npins = RCAR_MAX_GPIO_PER_BANK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +432,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
|
||||||
if (!p)
|
if (!p)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
p->pdev = pdev;
|
p->dev = dev;
|
||||||
spin_lock_init(&p->lock);
|
spin_lock_init(&p->lock);
|
||||||
|
|
||||||
/* Get device configuration from DT node */
|
/* Get device configuration from DT node */
|
||||||
|
|
Loading…
Reference in New Issue