Starting to look at developing a MCSPI driver for the AM5728. I have processor_sdk_rtos_am57xx_2_00_00_00 which includes pdk_am57xx_1_0_0. In the packages\ti\csl folder I find the file cslr_mcspi.h which seems to define the registers and fields for the MCSPI, but starting with SOFTRESET it does not seem to match the TRM, AM572x_SR1.1_TRM_vD.pdf.
For example, from the cslr_mcspi.h
/* HL_SYSCONFIG */
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_MASK (0x0000000CU)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_SHIFT (2U)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_RESETVAL (0x00000002U)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_SMARTIDLEWAKEUP (0x00000003U)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_FORCEIDLE (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_NOIDLE (0x00000001U)
#define CSL_MCSPI_HL_SYSCONFIG_IDLEMODE_SMARTIDLE (0x00000002U)
#define CSL_MCSPI_HL_SYSCONFIG_RSVD_MASK (0xFFFFFFF0U)
#define CSL_MCSPI_HL_SYSCONFIG_RSVD_SHIFT (4U)
#define CSL_MCSPI_HL_SYSCONFIG_RSVD_RESETVAL (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_RSVD_MAX (0x0fffffffU)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_MASK (0x00000001U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_SHIFT (0U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_RESETVAL (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_RESETDONE (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_NOACTION (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_SOFTRESET (0x00000001U)
#define CSL_MCSPI_HL_SYSCONFIG_SOFTRESET_RESETONGOING (0x00000001U)
#define CSL_MCSPI_HL_SYSCONFIG_FREEEMU_MASK (0x00000002U)
#define CSL_MCSPI_HL_SYSCONFIG_FREEEMU_SHIFT (1U)
#define CSL_MCSPI_HL_SYSCONFIG_FREEEMU_RESETVAL (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_FREEEMU_EMUDIS (0x00000001U)
#define CSL_MCSPI_HL_SYSCONFIG_FREEEMU_EMUEN (0x00000000U)
#define CSL_MCSPI_HL_SYSCONFIG_RESETVAL (0x00000008U)
That tells me that SOFTRESET is bit 0.
From the TRM,
The other fields also don't agree. I feel like cslr_mcspi.h is not the correct file for the AM5728.
Can someone explain what I am doing wrong here? Is there an update I am missing maybe? I also feel like there should be some higher level of integration available for this. I noticed in the spi_test_idkAM572x.cfg file they load a spi driver...
/* Load the spi package */
var socType = "am572x";
var Spi = xdc.loadPackage('ti.drv.spi');
Spi.Settings.socType = socType;
Should I not be writing a low level driver? When I asked this question previously I felt like the drivers did not exist, but now I am thinking they do. For example, it seems like pdk_am57xx_1_0_0\packages\ti\drv\spi\SPI.h probably offers me all I need to use the MCSPI.
Thanks.