Why eeprom driver is read-only ?

Ranran ranshalit at gmail.com
Tue Nov 20 01:44:50 EST 2018


On Tue, Nov 20, 2018 at 12:32 AM <valdis.kletnieks at vt.edu> wrote:
>
> On Tue, 20 Nov 2018 00:04:03 +0200, Ranran said:
>
> > That's interesting...
> > I think the name is confusing, because this chips are also writable.
> >
> > Not only this, but in arm the eeprom (at24) is writable!
> > But in the x86 I am using, it is readonly in kernel code:
> > https://android.googlesource.com/kernel/omap/+/glass-omap-xrr02/drivers/misc/eeprom/eeprom.c
> > static struct bin_attribute eeprom_attr = {
> > .attr = {
> > .name = "eeprom",
> > .mode = S_IRUGO,
> > },
> > .size = EEPROM_SIZE,
> > .read = eeprom_read,
> > };
>
> Well, at least in the mainline kernel, we have this at the top of the eeprom.c file:
>
> /* Addresses to scan */
> static const unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54,
>                                         0x55, 0x56, 0x57, I2C_CLIENT_END };
>
>
> /* Size of EEPROM in bytes */
> #define EEPROM_SIZE             256
>
> which is pretty obviously intended for "very small eeprom hanging off an I2C adapter",
> and thus probably *NOT* the boot ROM that the BIOS lives in.

although I think that in my system it is a flash rom which stores the
BIOS, so I really don't know what's the use of the eeprom....

I need a very small amout of data (several bytes) to save some non
volatile information in x86 system.
I can't use disk for this, but can use any other peripheral or even
x86 chip on board.
Now it also seems that I can't use the eeprom becuase of the kernel
limitation (can I open it for writing if the BIOS is not stored
there??)

I don't have any idea where I can find such storage.
Does x86 include some programmable registers ?
Do you have any idea where I can store the data ?

Thanks



More information about the Kernelnewbies mailing list