Message ID | 1458830767-23816-9-git-send-email-bgolaszewski@baylibre.com |
---|---|
State | Superseded |
Headers | show |
Hi Bartosz, [auto build test ERROR on next-20160324] [cannot apply to v4.5-rc7 v4.5-rc6 v4.5-rc5 v4.5] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Bartosz-Golaszewski/eeprom-support-for-at24cs-and-at24mac/20160324-230008 config: x86_64-randconfig-x012-201612 (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/misc/eeprom/at24.c: In function 'at24_probe': >> drivers/misc/eeprom/at24.c:617:18: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] at24->read_func = at24_read; ^ drivers/misc/eeprom/at24.c:618:19: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] at24->write_func = at24_write; ^ cc1: some warnings being treated as errors vim +617 drivers/misc/eeprom/at24.c 611 mutex_init(&at24->wrbuf_lock); 612 at24->use_smbus = use_smbus; 613 at24->use_smbus_write = use_smbus_write; 614 at24->chip = chip; 615 at24->num_addresses = num_addresses; 616 > 617 at24->read_func = at24_read; 618 at24->write_func = at24_write; 619 620 writable = !(chip.flags & AT24_FLAG_READONLY); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Bartosz, [auto build test WARNING on next-20160324] [cannot apply to v4.5-rc7 v4.5-rc6 v4.5-rc5 v4.5] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Bartosz-Golaszewski/eeprom-support-for-at24cs-and-at24mac/20160324-230008 config: sparc64-allyesconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sparc64 All warnings (new ones prefixed by >>): drivers/misc/eeprom/at24.c: In function 'at24_probe': >> drivers/misc/eeprom/at24.c:617:18: warning: assignment from incompatible pointer type at24->read_func = at24_read; ^ drivers/misc/eeprom/at24.c:618:19: warning: assignment from incompatible pointer type at24->write_func = at24_write; ^ vim +617 drivers/misc/eeprom/at24.c 601 num_addresses = 8; 602 else 603 num_addresses = DIV_ROUND_UP(chip.byte_len, 604 (chip.flags & AT24_FLAG_ADDR16) ? 65536 : 256); 605 606 at24 = devm_kzalloc(&client->dev, sizeof(struct at24_data) + 607 num_addresses * sizeof(struct i2c_client *), GFP_KERNEL); 608 if (!at24) 609 return -ENOMEM; 610 611 mutex_init(&at24->wrbuf_lock); 612 at24->use_smbus = use_smbus; 613 at24->use_smbus_write = use_smbus_write; 614 at24->chip = chip; 615 at24->num_addresses = num_addresses; 616 > 617 at24->read_func = at24_read; 618 at24->write_func = at24_write; 619 620 writable = !(chip.flags & AT24_FLAG_READONLY); 621 if (writable) { 622 if (!use_smbus || use_smbus_write) { 623 624 unsigned write_max = chip.page_size; 625 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c index a7d6c15..5b484bc 100644 --- a/drivers/misc/eeprom/at24.c +++ b/drivers/misc/eeprom/at24.c @@ -59,6 +59,9 @@ struct at24_data { int use_smbus; int use_smbus_write; + int (*read_func)(struct at24_data *, char *, loff_t, size_t); + int (*write_func)(struct at24_data *, const char *, loff_t, size_t); + u8 *writebuf; struct mutex wrbuf_lock; unsigned write_max; @@ -458,7 +461,7 @@ static int at24_regmap_read(void *context, const void *reg, size_t reg_size, off_t offset = *(u32 *)reg; int err; - err = at24_read(at24, val, offset, val_size); + err = at24->read_func(at24, val, offset, val_size); if (err) return err; return 0; @@ -476,7 +479,7 @@ static int at24_regmap_write(void *context, const void *data, size_t count) buf = (const char *)data + sizeof(offset); len = count - sizeof(offset); - err = at24_write(at24, buf, offset, len); + err = at24->write_func(at24, buf, offset, len); if (err) return err; return 0; @@ -611,6 +614,9 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) at24->chip = chip; at24->num_addresses = num_addresses; + at24->read_func = at24_read; + at24->write_func = at24_write; + writable = !(chip.flags & AT24_FLAG_READONLY); if (writable) { if (!use_smbus || use_smbus_write) {
In order to support non-standard read/write functions (as part of the at24cs series support) introduce two function pointers in struct at24_data to which different implementations can be assigned. For now we continue to use the regular read/write routines by default. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> --- drivers/misc/eeprom/at24.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)