diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-06 13:23:50 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-06 13:23:50 -0500 |
commit | bc914532a08892b30954030a0ba68f8534c67f76 (patch) | |
tree | 5e98212add9bbdc31860877ef9ff6860479b7a00 /drivers/misc/eeprom | |
parent | 54727e6e950aacd14ec9cd4260e9fe498322828c (diff) | |
parent | 271bb1773b1eeff6153f1bba16ff0cff23f064b6 (diff) |
Merge tag 'mfd-for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones:
"New Device Support:
- Add support for 88pm860; 88pm80x
- Add support for 24c08 EEPROM; at24
- Add support for Broxton Whiskey Cove; intel*
- Add support for RTS522A; rts5227
- Add support for I2C devices; intel_quark_i2c_gpio
New Functionality:
- Add microphone support; arizona
- Add general purpose switch support; arizona
- Add fuel-gauge support; da9150-core
- Add shutdown support; sec-core
- Add charger support; tps65217
- Add flexible serial communication unit support; atmel-flexcom
- Add power button support; axp20x
- Add led-flash support; rt5033
Core Frameworks:
- Supply a generic macro for defining Regmap IRQs
- Rework ACPI child device matching
Fix-ups:
- Use Regmap to access registers; tps6105x
- Use DEFINE_RES_IRQ_NAMED() macro; da9150
- Re-arrange device registration order; intel_quark_i2c_gpio
- Allow OF matching; cros_ec_i2c, atmel-hlcdc, hi6421-pmic, max8997, sm501
- Handle deferred probe; twl6040
- Improve accuracy of headphone detect; arizona
- Unnecessary MODULE_ALIAS() removal; bcm590xx, rt5033
- Remove unused code; htc-i2cpld, arizona, pcf50633-irq, sec-core
- Simplify code; kempld, rts5209, da903x, lm3533, da9052, arizona
- Remove #iffery; arizona
- DT binding adaptions; many
Bug Fixes:
- Fix possible NULL pointer dereference; wm831x, tps6105x
- Fix 64bit bug; intel_soc_pmic_bxtwc
- Fix signedness issue; arizona"
* tag 'mfd-for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (73 commits)
bindings: mfd: s2mps11: Add documentation for s2mps15 PMIC
mfd: sec-core: Remove unused s2mpu02-rtc and s2mpu02-clk children
extcon: arizona: Add extcon specific device tree binding document
MAINTAINERS: Add binding docs for Cirrus Logic/Wolfson Arizona devices
mfd: arizona: Remove bindings covered in new subsystem specific docs
mfd: rt5033: Add RT5033 Flash led sub device
mfd: lpss: Add Intel Broxton PCI IDs
mfd: lpss: Add Broxton ACPI IDs
mfd: arizona: Signedness bug in arizona_runtime_suspend()
mfd: axp20x: Add a cell for the power button part of the, axp288 PMICs
mfd: dt-bindings: Document pulled down WRSTBI pin on S2MPS1X
mfd: sec-core: Disable buck voltage reset on watchdog falling edge
mfd: sec-core: Dump PMIC revision to find out the HW
mfd: arizona: Use correct type ID for device tree config
mfd: arizona: Remove use of codec build config #ifdefs
mfd: arizona: Simplify adding subdevices
mfd: arizona: Downgrade type mismatch messages to dev_warn
mfd: arizona: Factor out checking of jack detection state
mfd: arizona: Factor out DCVDD isolation control
mfd: Make TPS6105X select REGMAP_I2C
...
Diffstat (limited to 'drivers/misc/eeprom')
-rw-r--r-- | drivers/misc/eeprom/at24.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c index c6cb7f8f325e..5d7c0900fa1b 100644 --- a/drivers/misc/eeprom/at24.c +++ b/drivers/misc/eeprom/at24.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
22 | #include <linux/jiffies.h> | 22 | #include <linux/jiffies.h> |
23 | #include <linux/of.h> | 23 | #include <linux/of.h> |
24 | #include <linux/acpi.h> | ||
24 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
25 | #include <linux/platform_data/at24.h> | 26 | #include <linux/platform_data/at24.h> |
26 | 27 | ||
@@ -131,6 +132,12 @@ static const struct i2c_device_id at24_ids[] = { | |||
131 | }; | 132 | }; |
132 | MODULE_DEVICE_TABLE(i2c, at24_ids); | 133 | MODULE_DEVICE_TABLE(i2c, at24_ids); |
133 | 134 | ||
135 | static const struct acpi_device_id at24_acpi_ids[] = { | ||
136 | { "INT3499", AT24_DEVICE_MAGIC(8192 / 8, 0) }, | ||
137 | { } | ||
138 | }; | ||
139 | MODULE_DEVICE_TABLE(acpi, at24_acpi_ids); | ||
140 | |||
134 | /*-------------------------------------------------------------------------*/ | 141 | /*-------------------------------------------------------------------------*/ |
135 | 142 | ||
136 | /* | 143 | /* |
@@ -467,21 +474,29 @@ static void at24_get_ofdata(struct i2c_client *client, | |||
467 | static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) | 474 | static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) |
468 | { | 475 | { |
469 | struct at24_platform_data chip; | 476 | struct at24_platform_data chip; |
477 | kernel_ulong_t magic = 0; | ||
470 | bool writable; | 478 | bool writable; |
471 | int use_smbus = 0; | 479 | int use_smbus = 0; |
472 | int use_smbus_write = 0; | 480 | int use_smbus_write = 0; |
473 | struct at24_data *at24; | 481 | struct at24_data *at24; |
474 | int err; | 482 | int err; |
475 | unsigned i, num_addresses; | 483 | unsigned i, num_addresses; |
476 | kernel_ulong_t magic; | ||
477 | 484 | ||
478 | if (client->dev.platform_data) { | 485 | if (client->dev.platform_data) { |
479 | chip = *(struct at24_platform_data *)client->dev.platform_data; | 486 | chip = *(struct at24_platform_data *)client->dev.platform_data; |
480 | } else { | 487 | } else { |
481 | if (!id->driver_data) | 488 | if (id) { |
489 | magic = id->driver_data; | ||
490 | } else { | ||
491 | const struct acpi_device_id *aid; | ||
492 | |||
493 | aid = acpi_match_device(at24_acpi_ids, &client->dev); | ||
494 | if (aid) | ||
495 | magic = aid->driver_data; | ||
496 | } | ||
497 | if (!magic) | ||
482 | return -ENODEV; | 498 | return -ENODEV; |
483 | 499 | ||
484 | magic = id->driver_data; | ||
485 | chip.byte_len = BIT(magic & AT24_BITMASK(AT24_SIZE_BYTELEN)); | 500 | chip.byte_len = BIT(magic & AT24_BITMASK(AT24_SIZE_BYTELEN)); |
486 | magic >>= AT24_SIZE_BYTELEN; | 501 | magic >>= AT24_SIZE_BYTELEN; |
487 | chip.flags = magic & AT24_BITMASK(AT24_SIZE_FLAGS); | 502 | chip.flags = magic & AT24_BITMASK(AT24_SIZE_FLAGS); |
@@ -661,6 +676,7 @@ static int at24_remove(struct i2c_client *client) | |||
661 | static struct i2c_driver at24_driver = { | 676 | static struct i2c_driver at24_driver = { |
662 | .driver = { | 677 | .driver = { |
663 | .name = "at24", | 678 | .name = "at24", |
679 | .acpi_match_table = ACPI_PTR(at24_acpi_ids), | ||
664 | }, | 680 | }, |
665 | .probe = at24_probe, | 681 | .probe = at24_probe, |
666 | .remove = at24_remove, | 682 | .remove = at24_remove, |