I am trying to bring up my custom hardware with AD9528 and AD9371 chip. I am using ultrascale ZCU 102. But when it is trying to probe SPI. SPI read verify fails every time with different ID I know the AD9528_SPI_MAGIC should be 0x00FF05. But some time it is reading A2FFF0 and next time 96FFA0. I have checked the SPI lines. It seems OK. Previously we have done this on the ZCU102 evaluation board.
It's hard to tell what is wrong. I would verify first the state of the AD9528 RESET pin (be aware that this input is Active Low).
It's the problem of reset. In our hardware Reset GPIO is connected on the MIO pin while in EVM it is on EMIO. When ad9528 driver is calling st->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_LOW); it fails. We have verified the gpio controller node in device tree and reset-gpio in spi node. It looks OK.
Second thing we have done only for checking only spi communication:
1. Expose spidev in application layer.
2. The MIO pin is accessible in Linux so, we are giving manual reset before spi configuration(we have checked the voltage, it is coming on reset pin).
3. We are simply trying to read and write on SPI(we are using AD provided headless.c application layer code for 9528 SPI read/write). When we are reading the registers. values are coming are as below:
Register No. Value
00 0x3C (conf. write)
01 0x80 (conf. write)
03 0x1D(read wrong should be 0x05)
04 0xFF(read OK)
05 0x1F(read wrong should be 0x00)
06 0x1F(read wrong should be 0x03)
0C 0x56(read OK)
0D 0x1C(read wrong should be 0x04)