I was looking to exactly do thanks, thanks for doing it before us :) On 10-10-16, 10:39, Linus Walleij wrote: > static int gb_gpio_probe(struct gbphy_device *gbphy_dev, > const struct gbphy_device_id *id) > { > @@ -690,7 +556,6 @@ static int gb_gpio_probe(struct gbphy_device *gbphy_dev, > gpio->get = gb_gpio_get; > gpio->set = gb_gpio_set; > gpio->set_debounce = gb_gpio_set_debounce; > - gpio->to_irq = gb_gpio_to_irq; > gpio->base = -1; /* Allocate base dynamically */ > gpio->ngpio = ggc->line_max + 1; > gpio->can_sleep = true; > @@ -699,26 +564,26 @@ static int gb_gpio_probe(struct gbphy_device *gbphy_dev, > if (ret) > goto exit_line_free; > > - ret = gb_gpio_irqchip_add(gpio, irqc, 0, > - handle_level_irq, IRQ_TYPE_NONE); > + ret = devm_gpiochip_add_data(&connection->bundle->dev, We should be using gbphy_dev->dev here instead. > + gpio, ggc); > if (ret) { > dev_err(&connection->bundle->dev, And also at these places. I will send a patch to fix these separately though. > - "failed to add irq chip: %d\n", ret); > + "failed to add gpio chip: %d\n", ret); > goto exit_line_free; > } > > - ret = gpiochip_add(gpio); > + ret = gpiochip_irqchip_add(gpio, irqc, > + 0, handle_level_irq, > + IRQ_TYPE_NONE); > if (ret) { > dev_err(&connection->bundle->dev, > - "failed to add gpio chip: %d\n", ret); > - goto exit_gpio_irqchip_remove; > + "failed to add gpio irqchip: %d\n", ret); > + goto exit_line_free; > } > > gbphy_runtime_put_autosuspend(gbphy_dev); > return 0; > > -exit_gpio_irqchip_remove: > - gb_gpio_irqchip_remove(ggc); > exit_line_free: > kfree(ggc->lines); > exit_connection_disable: > @@ -741,8 +606,6 @@ static void gb_gpio_remove(struct gbphy_device *gbphy_dev) > gbphy_runtime_get_noresume(gbphy_dev); > > gb_connection_disable_rx(connection); > - gpiochip_remove(&ggc->chip); This should stay as is, right? > - gb_gpio_irqchip_remove(ggc); > gb_connection_disable(connection); > gb_connection_destroy(connection); > kfree(ggc->lines); -- viresh _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel