Hi
I am struggling with reading and writing to mcsp registers and I would be grateful if anyone can share an example.
I need to modify and read mcspi2 registers for my GPIO driver and have tried phys_to_virt macro which returns an address which is not same as the virtual address when mcspi2 master is registered.
If I had code the virtual address of mcspi2 at the time of registration and read the registers it returns all 0's
The debug statement shows this
[ 0.038635] omap2_mcspi omap2_mcspi.1: r->start 48098000 r->end 480980ff mcspi->base cd89936c
[ 0.043792] omap2_mcspi omap2_mcspi.1: registered master spi1
[ 0.051788] omap2_mcspi omap2_mcspi.2: r->start 4809a000 r->end 4809a0ff mcspi->base cd89916c
[ 0.056884] omap2_mcspi omap2_mcspi.2: registered master spi2
[ 0.063171] spi spi2.0: setup: speed 1500000, sample leading edge, clk normal
[ 0.068634] spi spi2.0: setup mode 0, 8 bits/w, 1500000 Hz max --> 0
[ 0.073791] omap2_mcspi omap2_mcspi.2: registered child spi2.0
[ 0.080169] spi spi2.1: setup: speed 12000000, sample leading edge, clk normal
[ 0.085693] spi spi2.1: setup mode 0, 8 bits/w, 12000000 Hz max --> 0
[ 0.090820] omap2_mcspi omap2_mcspi.2: registered child spi2.1
[ 0.098785] omap2_mcspi omap2_mcspi.3: r->start 480b8000 r->end 480b80ff mcspi->base cd8afb6c
[ 0.103851] omap2_mcspi omap2_mcspi.3: registered master spi3
[ 0.111816] omap2_mcspi omap2_mcspi.4: r->start 480ba000 r->end 480ba0ff mcspi->base cd8af96c
[ 0.116882] omap2_mcspi omap2_mcspi.4: registered master spi4
this is what i get when i use
*************************************
struct xra1405
{
struct spi_device *spi;
struct device *dev;
struct xra1405_platform_data *pdata;
struct spi_message *msg[5];
struct spi_transfer *xfer[18];
struct mutex lock;
int cs_change;
void __iomem *base;
unsigned long phys;
};
*************************************
struct xra1405 *ts;
ts->base = phys_to_virt(0x4809A000);
On reading registers I get
[ 6.230163] xra1405 spi2.1: xra1405->base cdabb938
[ 6.238128] READ REGISTER OMAP2_MCSPI_REVISION fa09a000
[ 6.246704] READ REGISTER OMAP2_MCSPI_SYSCONFIG 00000000
[ 6.255371] READ REGISTER OMAP2_MCSPI_SYSSTATUS 00000000
[ 6.264038] READ REGISTER OMAP2_MCSPI_IRQSTATUS 00000000
[ 6.272705] READ REGISTER OMAP2_MCSPI_IRQENABLE 00000000
[ 6.281555] READ REGISTER OMAP2_MCSPI_WAKEUPENABLE 00000000
[ 6.290161] READ REGISTER OMAP2_MCSPI_SYST 00000000
[ 6.298370] READ REGISTER OMAP2_MCSPI_MODULCTRL 00000000
Can someone share an exaple of how to access mcspi->base value from specific driver say forexaple GPIO, Touchscreen etc.
Any help would be great.
Thanks