eeprom: at24: add ST M24C64-D Additional Write lockable page support
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Fri, 13 Oct 2023 06:30:08 +0000 (08:30 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 16 Oct 2023 06:49:15 +0000 (08:49 +0200)
The ST M24C64-D behaves as a regular M24C64, except for the -D variant
which uses up another I2C address for Additional Write lockable page.
This page is 32 Bytes long and can contain additional data. Add entry
for it, so users can describe that page in DT. Note that users still
have to describe the main M24C64 area separately as that is on separate
I2C address from this page.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/misc/eeprom/at24.c

index 616e63efc98641da490869d7d5e043da007f6298..f61a80597a22d01fd7741f0491f088545b97cb29 100644 (file)
@@ -196,6 +196,8 @@ AT24_CHIP_DATA(at24_data_24c32d_wlp, 32, AT24_FLAG_ADDR16);
 AT24_CHIP_DATA(at24_data_24cs32, 16,
        AT24_FLAG_ADDR16 | AT24_FLAG_SERIAL | AT24_FLAG_READONLY);
 AT24_CHIP_DATA(at24_data_24c64, 65536 / 8, AT24_FLAG_ADDR16);
+/* M24C64-D Additional Write lockable page (M24C64-D order codes) */
+AT24_CHIP_DATA(at24_data_24c64d_wlp, 32, AT24_FLAG_ADDR16);
 AT24_CHIP_DATA(at24_data_24cs64, 16,
        AT24_FLAG_ADDR16 | AT24_FLAG_SERIAL | AT24_FLAG_READONLY);
 AT24_CHIP_DATA(at24_data_24c128, 131072 / 8, AT24_FLAG_ADDR16);
@@ -227,6 +229,7 @@ static const struct i2c_device_id at24_ids[] = {
        { "24c32d-wl",  (kernel_ulong_t)&at24_data_24c32d_wlp },
        { "24cs32",     (kernel_ulong_t)&at24_data_24cs32 },
        { "24c64",      (kernel_ulong_t)&at24_data_24c64 },
+       { "24c64-wl",   (kernel_ulong_t)&at24_data_24c64d_wlp },
        { "24cs64",     (kernel_ulong_t)&at24_data_24cs64 },
        { "24c128",     (kernel_ulong_t)&at24_data_24c128 },
        { "24c256",     (kernel_ulong_t)&at24_data_24c256 },
@@ -258,6 +261,7 @@ static const struct of_device_id at24_of_match[] = {
        { .compatible = "atmel,24c32d-wl",      .data = &at24_data_24c32d_wlp },
        { .compatible = "atmel,24cs32",         .data = &at24_data_24cs32 },
        { .compatible = "atmel,24c64",          .data = &at24_data_24c64 },
+       { .compatible = "atmel,24c64d-wl",      .data = &at24_data_24c64d_wlp },
        { .compatible = "atmel,24cs64",         .data = &at24_data_24cs64 },
        { .compatible = "atmel,24c128",         .data = &at24_data_24c128 },
        { .compatible = "atmel,24c256",         .data = &at24_data_24c256 },