Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'mfd-fixes-4.9.1' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd

Pull MFD fixes from Lee Jones:
"Received a copule of last minute fixes for v4.9.

The patches from Viresh are fixing issues displayed in KernelCI"

* tag 'mfd-fixes-4.9.1' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
mfd: wm8994-core: Don't use managed regulator bulk get API
mfd: wm8994-core: Disable regulators before removing them
mfd: syscon: Support native-endian regmaps

+15 -5
+3 -1
drivers/mfd/syscon.c
··· 73 73 /* Parse the device's DT node for an endianness specification */ 74 74 if (of_property_read_bool(np, "big-endian")) 75 75 syscon_config.val_format_endian = REGMAP_ENDIAN_BIG; 76 - else if (of_property_read_bool(np, "little-endian")) 76 + else if (of_property_read_bool(np, "little-endian")) 77 77 syscon_config.val_format_endian = REGMAP_ENDIAN_LITTLE; 78 + else if (of_property_read_bool(np, "native-endian")) 79 + syscon_config.val_format_endian = REGMAP_ENDIAN_NATIVE; 78 80 79 81 /* 80 82 * search for reg-io-width property in DT. If it is not provided,
+12 -4
drivers/mfd/wm8994-core.c
··· 393 393 BUG(); 394 394 goto err; 395 395 } 396 - 397 - ret = devm_regulator_bulk_get(wm8994->dev, wm8994->num_supplies, 396 + 397 + /* 398 + * Can't use devres helper here as some of the supplies are provided by 399 + * wm8994->dev's children (regulators) and those regulators are 400 + * unregistered by the devres core before the supplies are freed. 401 + */ 402 + ret = regulator_bulk_get(wm8994->dev, wm8994->num_supplies, 398 403 wm8994->supplies); 399 404 if (ret != 0) { 400 405 dev_err(wm8994->dev, "Failed to get supplies: %d\n", ret); ··· 410 405 wm8994->supplies); 411 406 if (ret != 0) { 412 407 dev_err(wm8994->dev, "Failed to enable supplies: %d\n", ret); 413 - goto err; 408 + goto err_regulator_free; 414 409 } 415 410 416 411 ret = wm8994_reg_read(wm8994, WM8994_SOFTWARE_RESET); ··· 601 596 err_enable: 602 597 regulator_bulk_disable(wm8994->num_supplies, 603 598 wm8994->supplies); 599 + err_regulator_free: 600 + regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); 604 601 err: 605 602 mfd_remove_devices(wm8994->dev); 606 603 return ret; ··· 611 604 static void wm8994_device_exit(struct wm8994 *wm8994) 612 605 { 613 606 pm_runtime_disable(wm8994->dev); 614 - mfd_remove_devices(wm8994->dev); 615 607 wm8994_irq_exit(wm8994); 616 608 regulator_bulk_disable(wm8994->num_supplies, 617 609 wm8994->supplies); 610 + regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); 611 + mfd_remove_devices(wm8994->dev); 618 612 } 619 613 620 614 static const struct of_device_id wm8994_of_match[] = {