mirror of https://gitee.com/openkylin/linux.git
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: David Daney <david.daney@cavium.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
bbe760041a
commit
f5cc554e1c
|
@ -41,7 +41,7 @@ struct octeon_gpio {
|
|||
|
||||
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);
|
||||
return 0;
|
||||
|
@ -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)
|
||||
{
|
||||
struct octeon_gpio *gpio = container_of(chip, struct octeon_gpio, chip);
|
||||
struct octeon_gpio *gpio = gpiochip_get_data(chip);
|
||||
u64 mask = 1ull << offset;
|
||||
u64 reg = gpio->register_base + (value ? TX_SET : TX_CLEAR);
|
||||
cvmx_write_csr(reg, mask);
|
||||
|
@ -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,
|
||||
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;
|
||||
|
||||
octeon_gpio_set(chip, offset, value);
|
||||
|
@ -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)
|
||||
{
|
||||
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);
|
||||
|
||||
return ((1ull << offset) & read_bits) != 0;
|
||||
|
@ -117,7 +117,7 @@ static int octeon_gpio_probe(struct platform_device *pdev)
|
|||
chip->get = octeon_gpio_get;
|
||||
chip->direction_output = octeon_gpio_dir_out;
|
||||
chip->set = octeon_gpio_set;
|
||||
err = gpiochip_add(chip);
|
||||
err = gpiochip_add_data(chip, gpio);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
|
Loading…
Reference in New Issue