From 737e645e2a4e063be4b70e51bb19fad30a7c497e Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Sun, 5 May 2013 18:54:51 +0200 Subject: w1_bq27000: properly register platform device Signed-off-by: Paul Kocialkowski --- drivers/w1/slaves/w1_bq27000.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/w1/slaves/w1_bq27000.c b/drivers/w1/slaves/w1_bq27000.c index c876e37..24b919f 100644 --- a/drivers/w1/slaves/w1_bq27000.c +++ b/drivers/w1/slaves/w1_bq27000.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "../w1.h" #include "../w1_int.h" @@ -27,7 +28,7 @@ static int F_ID; void w1_bq27000_write(struct device *dev, u8 buf, u8 reg) { - struct w1_slave *sl = container_of(dev, struct w1_slave, dev); + struct w1_slave *sl = container_of(dev->parent, struct w1_slave, dev); if (!dev) { pr_info("Could not obtain slave dev ptr\n"); @@ -39,10 +40,10 @@ void w1_bq27000_write(struct device *dev, u8 buf, u8 reg) } EXPORT_SYMBOL(w1_bq27000_write); -int w1_bq27000_read(struct device *dev, u8 reg) +int w1_bq27000_read(struct device *dev, unsigned int reg) { u8 val; - struct w1_slave *sl = container_of(dev, struct w1_slave, dev); + struct w1_slave *sl = container_of(dev->parent, struct w1_slave, dev); if (!dev) return 0; @@ -56,17 +57,24 @@ int w1_bq27000_read(struct device *dev, u8 reg) } EXPORT_SYMBOL(w1_bq27000_read); +static struct bq27000_platform_data bq27000_battery_info = { + .read = w1_bq27000_read, + .name = "bq27000-battery", +}; + static int w1_bq27000_add_slave(struct w1_slave *sl) { int ret; - int id = 1; struct platform_device *pdev; - pdev = platform_device_alloc("bq27000-battery", id); + pdev = platform_device_alloc("bq27000-battery", -1); if (!pdev) { ret = -ENOMEM; return ret; } + ret = platform_device_add_data(pdev, + &bq27000_battery_info, + sizeof(bq27000_battery_info)); pdev->dev.parent = &sl->dev; ret = platform_device_add(pdev); -- cgit v1.1