* [PATCH 1/2] dt-bindings: eeprom: microchip,93lc46b: add Microchip 93LC86C
2026-09-29 16:28 [PATCH 0/2] misc: eeprom_93xx46: add Microchip 93LC86C Abdurrahman Hussain
@ 2026-09-29 16:28 ` Abdurrahman Hussain
2026-09-29 18:56 ` Conor Dooley
2026-09-29 16:28 ` [PATCH 2/2] misc: eeprom_93xx46: " Abdurrahman Hussain
1 sibling, 1 reply; 4+ messages in thread
From: Abdurrahman Hussain @ 2026-09-29 16:28 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Cory Tusar,
Arnd Bergmann, Greg Kroah-Hartman
Cc: devicetree, linux-kernel, Abdurrahman Hussain
The 93LC86C is the 16 Kbit member of the family.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
Documentation/devicetree/bindings/eeprom/microchip,93lc46b.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/eeprom/microchip,93lc46b.yaml b/Documentation/devicetree/bindings/eeprom/microchip,93lc46b.yaml
index 144e86ce5c0a..8e782b70386a 100644
--- a/Documentation/devicetree/bindings/eeprom/microchip,93lc46b.yaml
+++ b/Documentation/devicetree/bindings/eeprom/microchip,93lc46b.yaml
@@ -18,6 +18,7 @@ properties:
- atmel,at93c66
- eeprom-93xx46
- microchip,93lc46b
+ - microchip,93lc86c
data-size:
description: number of data bits per word
--
2.54.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 2/2] misc: eeprom_93xx46: add Microchip 93LC86C
2026-09-29 16:28 [PATCH 0/2] misc: eeprom_93xx46: add Microchip 93LC86C Abdurrahman Hussain
2026-09-29 16:28 ` [PATCH 1/2] dt-bindings: eeprom: microchip,93lc46b: " Abdurrahman Hussain
@ 2026-09-29 16:28 ` Abdurrahman Hussain
1 sibling, 0 replies; 4+ messages in thread
From: Abdurrahman Hussain @ 2026-09-29 16:28 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Cory Tusar,
Arnd Bergmann, Greg Kroah-Hartman
Cc: devicetree, linux-kernel, Abdurrahman Hussain
The 93LC86C is the 16 Kbit member of the family: 2048 bytes, so a
10 bit word address in x16 and 11 bits in x8. Like the 93LC46B it
clocks an extra cycle out after the address during a read, so it
takes the same quirk.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/misc/eeprom/eeprom_93xx46.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/misc/eeprom/eeprom_93xx46.c b/drivers/misc/eeprom/eeprom_93xx46.c
index f9c3ab52c2f9..77fe1fb641aa 100644
--- a/drivers/misc/eeprom/eeprom_93xx46.c
+++ b/drivers/misc/eeprom/eeprom_93xx46.c
@@ -29,6 +29,7 @@ struct eeprom_93xx46_platform_data {
#define EE_SIZE1K 0x10 /* 1 kb of data, that is a 93xx46 */
#define EE_SIZE2K 0x20 /* 2 kb of data, that is a 93xx56 */
#define EE_SIZE4K 0x40 /* 4 kb of data, that is a 93xx66 */
+#define EE_SIZE16K 0x80 /* 16 kb of data, that is a 93xx86 */
unsigned int quirks;
/* Single word read transfers only; no sequential read. */
@@ -77,6 +78,11 @@ static const struct eeprom_93xx46_devtype_data microchip_93lc46b_data = {
.quirks = EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE,
};
+static const struct eeprom_93xx46_devtype_data microchip_93lc86c_data = {
+ .flags = EE_SIZE16K,
+ .quirks = EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE,
+};
+
struct eeprom_93xx46_dev {
struct spi_device *spi;
struct eeprom_93xx46_platform_data *pdata;
@@ -389,6 +395,7 @@ static const struct of_device_id eeprom_93xx46_of_table[] = {
{ .compatible = "atmel,at93c56", .data = &at93c56_data, },
{ .compatible = "atmel,at93c66", .data = &at93c66_data, },
{ .compatible = "microchip,93lc46b", .data = µchip_93lc46b_data, },
+ { .compatible = "microchip,93lc86c", .data = µchip_93lc86c_data, },
{}
};
MODULE_DEVICE_TABLE(of, eeprom_93xx46_of_table);
@@ -406,6 +413,8 @@ static const struct spi_device_id eeprom_93xx46_spi_ids[] = {
.driver_data = (kernel_ulong_t)&at93c66_data, },
{ .name = "93lc46b",
.driver_data = (kernel_ulong_t)µchip_93lc46b_data, },
+ { .name = "93lc86c",
+ .driver_data = (kernel_ulong_t)µchip_93lc86c_data, },
{}
};
MODULE_DEVICE_TABLE(spi, eeprom_93xx46_spi_ids);
@@ -482,6 +491,8 @@ static int eeprom_93xx46_probe(struct spi_device *spi)
edev->size = 256;
else if (pd->flags & EE_SIZE4K)
edev->size = 512;
+ else if (pd->flags & EE_SIZE16K)
+ edev->size = 2048;
else {
dev_err(&spi->dev, "unspecified size\n");
return -EINVAL;
--
2.54.0
^ permalink raw reply [flat|nested] 4+ messages in thread