summaryrefslogtreecommitdiffstats
path: root/drivers/misc/eeprom
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-06 13:23:50 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-06 13:23:50 -0500
commitbc914532a08892b30954030a0ba68f8534c67f76 (patch)
tree5e98212add9bbdc31860877ef9ff6860479b7a00 /drivers/misc/eeprom
parent54727e6e950aacd14ec9cd4260e9fe498322828c (diff)
parent271bb1773b1eeff6153f1bba16ff0cff23f064b6 (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.c22
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};
132MODULE_DEVICE_TABLE(i2c, at24_ids); 133MODULE_DEVICE_TABLE(i2c, at24_ids);
133 134
135static const struct acpi_device_id at24_acpi_ids[] = {
136 { "INT3499", AT24_DEVICE_MAGIC(8192 / 8, 0) },
137 { }
138};
139MODULE_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,
467static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) 474static 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)
661static struct i2c_driver at24_driver = { 676static 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,