Hi Sameer,
I try to use devmem2 tools to control the SPI register, but the system halt, these are my test step.
How do I correctly use the devmem2 tool to control the SPI register on Jetson Nano?
I add the printk in tegra_spi_readl() and tegra_spi_writel() on spi-tegra114.c
static inline u32 tegra_spi_readl(struct tegra_spi_data *tspi,
unsigned long reg)
{
printk("tegra_spi_readl(), reg:0x%lx\n", reg);
return readl(tspi->base + reg);
}
static inline void tegra_spi_writel(struct tegra_spi_data *tspi,
u32 val, unsigned long reg)
{
/* Read back register to make sure that register writes completed */
if ((reg == SPI_COMMAND1) && (val & SPI_PIO))
readl(tspi->base + SPI_COMMAND1);
printk("tegra_spi_writel(), reg:0x%lx, val:0x%x\n", reg, val);
writel(val, tspi->base + reg);
}
I send one byte using spidev_test tool.
root@pesi-desktop:/home/pesi/t4_module_spi_slave_test# ./spidev_test -D /dev/spidev0.0 -s 1000000 -H -O -p "\x55"
spi mode: 0x3
bits per word: 8
max speed: 1000000 Hz (1000 KHz)
RX | 00 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ | .
The spi-tegra114.c debug log are as follows:
Mar 5 17:03:09 pesi-desktop kernel: [ 173.863406] tegra_spi_readl(), reg:0x18c
Mar 5 17:03:09 pesi-desktop kernel: [ 173.863453] tegra_spi_writel(), reg:0x18c, val:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.863465] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.863851] tegra_spi_readl(), reg:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865424] tegra_spi_readl(), reg:0x18c
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865436] tegra_spi_writel(), reg:0x18c, val:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865444] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865493] tegra_spi_readl(), reg:0x18c
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865502] tegra_spi_writel(), reg:0x18c, val:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.865510] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869857] tegra_spi_readl(), reg:0x14
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869878] tegra_spi_readl(), reg:0x10
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869896] tegra_spi_writel(), reg:0x10, val:0xff0000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869912] tegra_spi_writel(), reg:0x0, val:0x73e01807
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869922] tegra_spi_writel(), reg:0x108, val:0x55
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869929] tegra_spi_writel(), reg:0x24, val:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.869959] tegra_spi_writel(), reg:0x0, val:0xf3e01807
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870020] tegra_spi_readl(), reg:0x14
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870047] tegra_spi_readl(), reg:0x10
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870070] tegra_spi_writel(), reg:0x10, val:0x40ff0001
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870187] tegra_spi_readl(), reg:0x188
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870271] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870280] tegra_spi_readl(), reg:0x0
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870311] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870318] tegra_spi_writel(), reg:0x0, val:0x73d08000
Mar 5 17:03:09 pesi-desktop kernel: [ 173.870519] tegra_spi_readl(), reg:0x0
Run “devmem2 0x7000d58c” to read SPI interrupt mask register (0x18c), the system do not response and halt.
root@pesi-desktop:/home/pesi/spitest# cat /proc/iomem | grep spi
7000d400-7000d5ff : /spi@7000d400
7000d600-7000d7ff : /spi@7000d600
root@pesi-desktop:/home/pesi/spitest# devmem2 0x7000d400
~~ No any response ~~
Thanks,
Will Lin