Commit f5cc554e authored by Linus Walleij's avatar Linus Walleij

gpio: octeon: 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().
Reviewed-by: default avatarDavid Daney <david.daney@cavium.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent bbe76004
...@@ -41,7 +41,7 @@ struct octeon_gpio { ...@@ -41,7 +41,7 @@ struct octeon_gpio {
static int octeon_gpio_dir_in(struct gpio_chip *chip, unsigned offset) static int octeon_gpio_dir_in(struct gpio_chip *chip, unsigned offset)
{ {
struct octeon_gpio *gpio = container_of(chip, struct octeon_gpio, chip); struct octeon_gpio *gpio = gpiochip_get_data(chip);
cvmx_write_csr(gpio->register_base + bit_cfg_reg(offset), 0); cvmx_write_csr(gpio->register_base + bit_cfg_reg(offset), 0);
return 0; return 0;
...@@ -49,7 +49,7 @@ static int octeon_gpio_dir_in(struct gpio_chip *chip, unsigned offset) ...@@ -49,7 +49,7 @@ static int octeon_gpio_dir_in(struct gpio_chip *chip, unsigned offset)
static void octeon_gpio_set(struct gpio_chip *chip, unsigned offset, int value) static void octeon_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
{ {
struct octeon_gpio *gpio = container_of(chip, struct octeon_gpio, chip); struct octeon_gpio *gpio = gpiochip_get_data(chip);
u64 mask = 1ull << offset; u64 mask = 1ull << offset;
u64 reg = gpio->register_base + (value ? TX_SET : TX_CLEAR); u64 reg = gpio->register_base + (value ? TX_SET : TX_CLEAR);
cvmx_write_csr(reg, mask); cvmx_write_csr(reg, mask);
...@@ -58,7 +58,7 @@ static void octeon_gpio_set(struct gpio_chip *chip, unsigned offset, int value) ...@@ -58,7 +58,7 @@ static void octeon_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
static int octeon_gpio_dir_out(struct gpio_chip *chip, unsigned offset, static int octeon_gpio_dir_out(struct gpio_chip *chip, unsigned offset,
int value) int value)
{ {
struct octeon_gpio *gpio = container_of(chip, struct octeon_gpio, chip); struct octeon_gpio *gpio = gpiochip_get_data(chip);
union cvmx_gpio_bit_cfgx cfgx; union cvmx_gpio_bit_cfgx cfgx;
octeon_gpio_set(chip, offset, value); octeon_gpio_set(chip, offset, value);
...@@ -72,7 +72,7 @@ static int octeon_gpio_dir_out(struct gpio_chip *chip, unsigned offset, ...@@ -72,7 +72,7 @@ static int octeon_gpio_dir_out(struct gpio_chip *chip, unsigned offset,
static int octeon_gpio_get(struct gpio_chip *chip, unsigned offset) static int octeon_gpio_get(struct gpio_chip *chip, unsigned offset)
{ {
struct octeon_gpio *gpio = container_of(chip, struct octeon_gpio, chip); struct octeon_gpio *gpio = gpiochip_get_data(chip);
u64 read_bits = cvmx_read_csr(gpio->register_base + RX_DAT); u64 read_bits = cvmx_read_csr(gpio->register_base + RX_DAT);
return ((1ull << offset) & read_bits) != 0; return ((1ull << offset) & read_bits) != 0;
...@@ -117,7 +117,7 @@ static int octeon_gpio_probe(struct platform_device *pdev) ...@@ -117,7 +117,7 @@ static int octeon_gpio_probe(struct platform_device *pdev)
chip->get = octeon_gpio_get; chip->get = octeon_gpio_get;
chip->direction_output = octeon_gpio_dir_out; chip->direction_output = octeon_gpio_dir_out;
chip->set = octeon_gpio_set; chip->set = octeon_gpio_set;
err = gpiochip_add(chip); err = gpiochip_add_data(chip, gpio);
if (err) if (err)
goto out; goto out;
......
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