mirror of https://gitee.com/openkylin/linux.git
greybus: gpio-gb.c: it now builds properly
This commit is contained in:
parent
c16854c3bf
commit
e9023d227a
|
@ -10,11 +10,13 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/gpio/driver.h>
|
||||||
#include "greybus.h"
|
#include "greybus.h"
|
||||||
|
|
||||||
struct gb_gpio {
|
struct gb_gpio {
|
||||||
struct gpio_chip chip;
|
struct gpio_chip chip;
|
||||||
struct greybus_device *gdev;
|
struct greybus_device *gdev;
|
||||||
|
struct gpio_chip *gpio;
|
||||||
// FIXME - some lock?
|
// FIXME - some lock?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -25,7 +27,7 @@ static const struct greybus_device_id id_table[] = {
|
||||||
|
|
||||||
static int direction_input(struct gpio_chip *gpio, unsigned nr)
|
static int direction_input(struct gpio_chip *gpio, unsigned nr)
|
||||||
{
|
{
|
||||||
struct gp_gpio *gp_gpio = container_of(gpio, struct gp_gpio, chip);
|
// struct gb_gpio *gb_gpio = container_of(gpio, struct gb_gpio, chip);
|
||||||
|
|
||||||
// FIXME - do something there
|
// FIXME - do something there
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -43,24 +45,25 @@ static int gpio_get(struct gpio_chip *gpio, unsigned nr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gpio_set(struct gpio_chip *gpio, unsigned nr, int val)
|
static void gpio_set(struct gpio_chip *gpio, unsigned nr, int val)
|
||||||
{
|
{
|
||||||
// FIXME - do something there
|
// FIXME - do something there
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gpio_gb_probe(struct greybus_device *gdev, const struct greybus_device_id *id)
|
static int gpio_gb_probe(struct greybus_device *gdev, const struct greybus_device_id *id)
|
||||||
{
|
{
|
||||||
struct gp_gpio *gp_gpio;
|
struct gb_gpio *gb_gpio;
|
||||||
struct gpio_chip *gpio;
|
struct gpio_chip *gpio;
|
||||||
struct device *dev = &gdev->dev;
|
struct device *dev = &gdev->dev;
|
||||||
|
int retval;
|
||||||
|
|
||||||
gp_gpio = devm_kzalloc(dev, sizeof(*gp_gpio), GFP_KERNEL);
|
gb_gpio = devm_kzalloc(dev, sizeof(*gb_gpio), GFP_KERNEL);
|
||||||
if (!gp_gpio)
|
if (!gb_gpio)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
gp_gpio->gdev = gdev;
|
gb_gpio->gdev = gdev;
|
||||||
|
|
||||||
gpio = &gp_gpio->gpio;
|
gpio = &gb_gpio->chip;
|
||||||
|
|
||||||
gpio->label = "greybus_gpio";
|
gpio->label = "greybus_gpio";
|
||||||
gpio->owner = THIS_MODULE;
|
gpio->owner = THIS_MODULE;
|
||||||
|
@ -73,9 +76,9 @@ static int gpio_gb_probe(struct greybus_device *gdev, const struct greybus_devic
|
||||||
gpio->ngpio = 42; // FIXME!!!
|
gpio->ngpio = 42; // FIXME!!!
|
||||||
gpio->can_sleep = false; // FIXME!!!
|
gpio->can_sleep = false; // FIXME!!!
|
||||||
|
|
||||||
greybus_set_drvdata(gdev, gp_gpio);
|
greybus_set_drvdata(gdev, gb_gpio);
|
||||||
|
|
||||||
retval = gpio_chip_add(gpio);
|
retval = gpiochip_add(gpio);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
dev_err(dev, "Failed to register GPIO\n");
|
dev_err(dev, "Failed to register GPIO\n");
|
||||||
return retval;
|
return retval;
|
||||||
|
@ -86,14 +89,11 @@ static int gpio_gb_probe(struct greybus_device *gdev, const struct greybus_devic
|
||||||
|
|
||||||
static void gpio_gb_disconnect(struct greybus_device *gdev)
|
static void gpio_gb_disconnect(struct greybus_device *gdev)
|
||||||
{
|
{
|
||||||
struct mmc_host *mmc;
|
struct gb_gpio *gb_gpio;
|
||||||
struct sd_gb_host *host;
|
|
||||||
|
|
||||||
host = greybus_get_drvdata(gdev);
|
gb_gpio = greybus_get_drvdata(gdev);
|
||||||
mmc = host->mmc;
|
|
||||||
|
|
||||||
mmc_remove_host(mmc);
|
gpiochip_remove(&gb_gpio->chip);
|
||||||
mmc_free_host(mmc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct greybus_driver gpio_gb_driver = {
|
static struct greybus_driver gpio_gb_driver = {
|
||||||
|
|
Loading…
Reference in New Issue