
I have a custom board based on a TI AM3356 processor (quite similar to a BeagleBone) with an Everspin MR25H256 MRAM attached to the SPI bus, currently using U-Boot 2015.10 to boot a 3.18.9-rt5 Linux kernel.
I'd like to use this MRAM to store the MAC address for one of the Ethernet interfaces, but I'm having a bit of trouble getting started on how support for this should be added.
I can access the MRAM just fine from Linux (using the m25p80 driver and the MTD framework), so with the appropriate drivers compiled into the kernel, Linux picks the chip up without any issue by simply adding the following to the device tree:
mram: m25p80@0 { #address-cells = <1>; #size-cells = <1>; compatible = "mr25h256"; reg = <0>; spi-max-frequency = <40000000>; status = "okay"; };
I'd like U-Boot to do something similar, but there are a few issues: 1. The chip is not JEDEC compatible, so it cannot be probed like the other chips currently listed in drivers/mtd/spi/sf_params.c 2. Since it's an MRAM, it doesn't need to be erased before being written - Linux has a flag for this, but it doesn't seem as if U-Boot has anything similar. (Not that I need this currently though, as I only need to be able to read the chip for now - but it'd be nice to have, and others might be able to use it too.)
I've tried having a look at doc/driver-model/spi-howto.txt, hoping that this would have up-to-date information on how to implement/modify a SPI driver, but when I for instance look at spi_setup_slave_fdt(), which seems to be one of the necessary functions, I can only find it implemented in drivers/spi/spi-uclass.c, with a comment saying that it is only for compatibility, and that it is to be removed?...
If anyone can help me with a few hints on how to get started adding support for this chip, it'd be much appreciated!
Thanks in advance and best regards, Simon Falsig simon@newtec.dk