|
@@ -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;
|
|
|
|