Hi,
I'm working on the board Ralink MT7628 with an Atmel AT86RF212B by SPI.
I've configured the transceiver to be on cs1. I plugged cs from the
transceiver to pin 6 of MT7628. Here is my .dts:
palmbus@10000000 {
spi@b00 {
status = "okay";
m25p80@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "en25q64";
reg = <0 0>;
...
};
at86rf212@0 {
compatible = "atmel,at86rf212";
reg = <1>;
interrupts = <15 4>;
interrupt-parent = <&intc>;
reset-gpio = <&gpio0 16 1>;
sleep-gpio = <&gpio0 17 1>;
spi-max-frequency = <1000000>;
};
};
};
Unfortunately, the spi driver for this board doesn't support two
slaves (spi-mt7621.c)
So I've edited spi-mt7621.c to allow two slaves on SPI master as follow:
static void mt7621_spi_set_cs(struct spi_device *spi, int enable)
{
struct mt7621_spi *rs = spidev_to_mt7621_spi(spi);
u32 polar = mt7621_spi_read(rs, MT7621_SPI_POLAR);
if (enable) {
if (spi->chip_select) {
polar |= 0x02;
} else {
polar |= 0x01;
}
} else {
if (spi->chip_select) {
polar &= ~0x02;
} else {
polar &= ~0x01;
}
}
mt7621_spi_write(rs, MT7621_SPI_POLAR, polar);
}
And updated the num-chipselect:
master->num_chipselect = 2;
Here is my dmesg | grep spi:
[ 0.440000] rt2880-pinmux pinctrl: found group selector 8 for spi
[ 0.440000] rt2880-pinmux pinctrl: request pin 7 (io7) for 10000b00.spi
[ 0.440000] rt2880-pinmux pinctrl: request pin 8 (io8) for 10000b00.spi
[ 0.440000] rt2880-pinmux pinctrl: request pin 9 (io9) for 10000b00.spi
[ 0.440000] rt2880-pinmux pinctrl: request pin 10 (io10) for 10000b00.spi
[ 0.440000] m25p80 spi32766.0: found w25q128, expected en25q64
[ 0.460000] m25p80 spi32766.0: w25q128 (16384 Kbytes)
[ 0.470000] m25p80 spi32766.0: using chunked io
[ 0.470000] 4 ofpart partitions found on MTD device spi32766.0
[ 0.490000] Creating 4 MTD partitions on "spi32766.0":
[ 11.830000] at86rf230 spi32766.1: Non-Atmel dev found (MAN_ID 00 00)
[ 11.840000] at86rf230: probe of spi32766.1 failed with error -22
While looking at pin 6, it seems that it stays at high state instead
of going up and down when we go through mt7621_spi_set_cs().
Here we can see that pin 6 is not part of spi pins group. Well it is
defined in spi_cs1 group.
>From the datasheet:
5:4 SPI_CS1_MODE SPI CS1 GPIO mode
2: REFCLK
1: GPIO
0: SPI CS1
and SPI
12 SPI_MODE SPI GPIO mode
1: GPIO
0: SPI
(from REG 10000060 GPIO1 MODE)
I'm wondering if pinmux is well set?
How may I be sure that this register is well configured? and gpio is
correctly configured for that purpose? And how and where may
I configure them?
Feel free to ask questions if it doesn't make sense.
Cheers,
Baptiste
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html