[PATCH V3] eeprom: at24: support second page of ST M24M01-D*

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The M24M01-D* eeproms are in effect 2 eeproms under 2 I2C addresses:

1. a standard 1Mbit eeprom (driver model 24c1024 is working)

2. a 256 Byte write lockable "ID page".
   As the ID page demands 2 byte addresses, the 24c02 driver model
   can not be used.

So a new model 24cm02 is introduced.

In the device tree, refer to the ID page of the eeprom as

	compatible = "st,m24m01-d", "atmel,24cm02";

Signed-off-by: Johannes Poehlmann <Johannes.Poehlmann@xxxxxxxxxxx>
---
 Documentation/devicetree/bindings/eeprom/at24.txt | 1 +
 drivers/misc/eeprom/at24.c                        | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/eeprom/at24.txt b/Documentation/devicetree/bindings/eeprom/at24.txt
index 1812c84..c62c960 100644
--- a/Documentation/devicetree/bindings/eeprom/at24.txt
+++ b/Documentation/devicetree/bindings/eeprom/at24.txt
@@ -10,6 +10,7 @@ Required properties:
                 "atmel,24cs01",
                 "atmel,24c02",
                 "atmel,24cs02",
+                "atmel,24cm02",
                 "atmel,24mac402",
                 "atmel,24mac602",
                 "atmel,spd",
diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 01f9c49..5afeb1a 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -146,6 +146,7 @@ AT24_CHIP_DATA(at24_data_24c01, 1024 / 8, 0);
 AT24_CHIP_DATA(at24_data_24cs01, 16,
 	AT24_FLAG_SERIAL | AT24_FLAG_READONLY);
 AT24_CHIP_DATA(at24_data_24c02, 2048 / 8, 0);
+AT24_CHIP_DATA(at24_data_24cm02, 2048 / 8, AT24_FLAG_ADDR16);
 AT24_CHIP_DATA(at24_data_24cs02, 16,
 	AT24_FLAG_SERIAL | AT24_FLAG_READONLY);
 AT24_CHIP_DATA(at24_data_24mac402, 48 / 8,
@@ -184,6 +185,7 @@ static const struct i2c_device_id at24_ids[] = {
 	{ "24cs01",	(kernel_ulong_t)&at24_data_24cs01 },
 	{ "24c02",	(kernel_ulong_t)&at24_data_24c02 },
 	{ "24cs02",	(kernel_ulong_t)&at24_data_24cs02 },
+	{ "24cm02",	(kernel_ulong_t)&at24_data_24cm02 },
 	{ "24mac402",	(kernel_ulong_t)&at24_data_24mac402 },
 	{ "24mac602",	(kernel_ulong_t)&at24_data_24mac602 },
 	{ "spd",	(kernel_ulong_t)&at24_data_spd },
@@ -212,6 +214,7 @@ static const struct of_device_id at24_of_match[] = {
 	{ .compatible = "atmel,24cs01",		.data = &at24_data_24cs01 },
 	{ .compatible = "atmel,24c02",		.data = &at24_data_24c02 },
 	{ .compatible = "atmel,24cs02",		.data = &at24_data_24cs02 },
+	{ .compatible = "atmel,24cm02",		.data = &at24_data_24cm02 },
 	{ .compatible = "atmel,24mac402",	.data = &at24_data_24mac402 },
 	{ .compatible = "atmel,24mac602",	.data = &at24_data_24mac602 },
 	{ .compatible = "atmel,spd",		.data = &at24_data_spd },
-- 
2.1.4




[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux