Commit 2bb7eae8 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

greybus: battery: some hooking up to the greybus core

Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 47ee0d13
......@@ -18,7 +18,10 @@ struct gb_battery {
// we will want to keep the battery stats in here as we will be getting
// updates from the SVC "on the fly" so we don't have to always go ask
// the battery for some information. Hopefully...
struct gb_module *gmod;
struct gb_connection *connection;
u8 version_major;
u8 version_minor;
};
#define to_gb_battery(x) container_of(x, struct gb_battery, bat)
......@@ -111,8 +114,7 @@ static enum power_supply_property battery_props[] = {
POWER_SUPPLY_PROP_VOLTAGE_NOW,
};
int gb_battery_probe(struct gb_module *gmod,
const struct greybus_module_id *id)
int gb_battery_device_init(struct gb_connection *connection)
{
struct gb_battery *gb;
struct power_supply *b;
......@@ -122,6 +124,8 @@ int gb_battery_probe(struct gb_module *gmod,
if (!gb)
return -ENOMEM;
gb->connection = connection; // FIXME refcount!
b = &gb->bat;
// FIXME - get a better (i.e. unique) name
// FIXME - anything else needs to be set?
......@@ -131,12 +135,11 @@ int gb_battery_probe(struct gb_module *gmod,
b->num_properties = ARRAY_SIZE(battery_props),
b->get_property = get_property,
retval = power_supply_register(&gmod->dev, b);
retval = power_supply_register(&connection->interface->gmod->dev, b);
if (retval) {
kfree(gb);
return retval;
}
gmod->gb_battery = gb;
return 0;
}
......
......@@ -203,10 +203,12 @@ int gb_connection_init(struct gb_connection *connection)
switch (connection->protocol) {
case GREYBUS_PROTOCOL_I2C:
return gb_i2c_device_init(connection);
case GREYBUS_PROTOCOL_CONTROL:
case GREYBUS_PROTOCOL_AP:
case GREYBUS_PROTOCOL_GPIO:
return gb_gpio_controller_init(connection);
case GREYBUS_PROTOCOL_BATTERY:
return gb_battery_device_init(connection);
case GREYBUS_PROTOCOL_CONTROL:
case GREYBUS_PROTOCOL_AP:
case GREYBUS_PROTOCOL_UART:
case GREYBUS_PROTOCOL_HID:
case GREYBUS_PROTOCOL_VENDOR:
......
......@@ -265,6 +265,7 @@ void gb_deregister_cport_complete(u16 cport_id);
extern const struct attribute_group *greybus_module_groups[];
int gb_i2c_device_init(struct gb_connection *connection);
int gb_battery_device_init(struct gb_connection *connection);
int gb_gpio_controller_init(struct gb_connection *connection);
int gb_tty_init(void);
......
......@@ -30,6 +30,7 @@ enum greybus_protocol {
GREYBUS_PROTOCOL_I2C = 0x03,
GREYBUS_PROTOCOL_UART = 0x04,
GREYBUS_PROTOCOL_HID = 0x05,
GREYBUS_PROTOCOL_BATTERY = 0x08,
/* ... */
GREYBUS_PROTOCOL_VENDOR = 0xff,
};
......
......@@ -165,6 +165,7 @@ static gb_operation_recv_handler gb_operation_recv_handlers[] = {
[GREYBUS_PROTOCOL_I2C] = gb_operation_recv_none,
[GREYBUS_PROTOCOL_UART] = NULL,
[GREYBUS_PROTOCOL_HID] = NULL,
[GREYBUS_PROTOCOL_BATTERY] = gb_operation_recv_none,
[GREYBUS_PROTOCOL_VENDOR] = NULL,
};
......
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