]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/commitdiff
Make configuration of SPI devices target dependent
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 28 Aug 2015 12:20:13 +0000 (14:20 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 28 Aug 2015 14:23:32 +0000 (16:23 +0200)
i.e. move it from driver to a separate, target-specific file.

Makefile.var
rpp/include/drv/_tms570_rpp/spi_def.h [new file with mode: 0644]
rpp/include/drv/spi_def.h [new file with mode: 0644]
rpp/include/drv/spi_tms570.h
rpp/src/drv/_tms570_rpp/spi_def.c [new file with mode: 0644]
rpp/src/drv/spi_tms570.c
rpp/src/rpp/dac.c
rpp/src/rpp/din.c
rpp/src/rpp/fr.c
rpp/src/rpp/hbr.c
rpp/src/rpp/lout.c

index bf3e1034dd4b0bd4c4f87dbf5d20a4e7e8e71620..30da060366203a1ce310559318e43f6d688114ad 100644 (file)
@@ -141,7 +141,8 @@ rpp_lib_SOURCES_$(TARGET_HAS_DMM) += rpp/src/sys/ti_drv_dmm.c
 
 rpp_lib_SOURCES_$(TARGET_HAS_SPI) +=                   \
        rpp/src/drv/spi.c                                               \
-       rpp/src/drv/spi_tms570.c
+       rpp/src/drv/spi_tms570.c                                        \
+       rpp/src/drv/_$(TARGET)/spi_def.c                        \
 
 rpp_lib_SOURCES_posix = \
        os/$(rpp_lib_OS)/src/rpp/sci_posix.c
diff --git a/rpp/include/drv/_tms570_rpp/spi_def.h b/rpp/include/drv/_tms570_rpp/spi_def.h
new file mode 100644 (file)
index 0000000..77c8641
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 Czech Technical University in Prague
+ *
+ * Authors:
+ *     - Michal Sojka <sojkam1@fel.cvut.cz>
+ *
+ * This document contains proprietary information belonging to Czech
+ * Technical University in Prague. Passing on and copying of this
+ * document, and communication of its contents is not permitted
+ * without prior written authorization.
+ *
+ */
+
+#ifndef _TMS570_RPP_SPI_DEF_H
+#define _TMS570_RPP_SPI_DEF_H
+
+#include "drv/spi_tms570.h"
+
+/* Identifiers of SPI devices (=chips) bound to particular
+ * interfaces */
+
+enum spi_ifc1_devices {
+       SPIDEV_MC33972 = 0,
+       SPIDEV_NCV7608_2x,
+};
+enum spi_ifc2_devices {
+       SPIDEV_SDCARD = 0
+};
+enum spi_ifc3_devices {
+       SPIDEV_MCP4922_1 = 0,
+       SPIDEV_MCP4922_2,
+       SPIDEV_MCP4922_3
+};
+enum spi_ifc4_devices {
+       SPIDEV_L99H01 = 0,
+       SPIDEV_TJA1082_1,
+       SPIDEV_TJA1082_2
+};
+
+extern spi_tms570_drv_t spi_ifcs[4];
+
+#endif
diff --git a/rpp/include/drv/spi_def.h b/rpp/include/drv/spi_def.h
new file mode 100644 (file)
index 0000000..102d548
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 Czech Technical University in Prague
+ *
+ * Authors:
+ *     - Michal Sojka <sojkam1@fel.cvut.cz>
+ *
+ * This document contains proprietary information belonging to Czech
+ * Technical University in Prague. Passing on and copying of this
+ * document, and communication of its contents is not permitted
+ * without prior written authorization.
+ *
+ */
+
+#ifndef DRV_SPI_DEF_H
+#define DRV_SPI_DEF_H
+
+/* Definition of spi names (enum spi_id) */
+
+#if defined(TARGET_POSIX)
+//#include "drv/_rm48_hdk/spi_def.h"
+#elif defined(TARGET_RM48_HDK)
+//#include "drv/_rm48_hdk/spi_def.h"
+#elif defined(TARGET_TMS570_HDK)
+//#include "drv/_tms570_hdk/spi_def.h"
+#elif defined(TARGET_TMS570_HYDCTR)
+//#include "drv/_tms570_hydctr/spi_def.h"
+#elif defined(TARGET_TMS570_RPP)
+#include "drv/_tms570_rpp/spi_def.h"
+#else
+#error No supported target specified!
+#endif
+
+#endif
index cde2f336e33b057c456f95be04299ee46f215fb2..4919452af0578a7af42ba40a95b869454acbfe23 100644 (file)
@@ -2,9 +2,14 @@
  *
  * @file spi_resp_transl.h
  *
- * @copyright Copyright (C) 2012-2013 Czech Technical University in Prague
+ * @copyright Copyright (C) 2012-2013, 2015 Czech Technical University in Prague
  *
  * @author Michal Horn <hornmich@fel.cvut.cz>
+ *
+ * This document contains proprietary information belonging to Czech
+ * Technical University in Prague. Passing on and copying of this
+ * document, and communication of its contents is not permitted
+ * without prior written authorization.
  */
 
 #ifndef _MYSPI_H_
@@ -199,7 +204,7 @@ typedef struct spi_tms570_drv {
 
 //extern spi_tms570_drv_t spi_tms570_ifcs[4];
 //extern spi_dev_t spi_devs[];
-int spi_tms570_init(void);
+int spi_tms570_init(spi_tms570_drv_t *ifcs, int count);
 
 spi_drv_t *spi_find_drv(char *name, int number);
 
diff --git a/rpp/src/drv/_tms570_rpp/spi_def.c b/rpp/src/drv/_tms570_rpp/spi_def.c
new file mode 100644 (file)
index 0000000..0aef333
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2015 Czech Technical University in Prague
+ *
+ * Authors:
+ *     - Michal Sojka <sojkam1@fel.cvut.cz>
+ *
+ * This document contains proprietary information belonging to Czech
+ * Technical University in Prague. Passing on and copying of this
+ * document, and communication of its contents is not permitted
+ * without prior written authorization.
+ *
+ */
+
+#include "drv/spi_def.h"
+#include "drv/spi_tms570.h"
+
+static spi_dev_t spi_ifc1_devs[] = {
+       [SPIDEV_MC33972] = {
+               .cs = SPI_CS_3,
+               .dfsel = 0,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       },
+       [SPIDEV_NCV7608_2x] = {
+               .cs = SPI_CS_4,
+               .dfsel = 0,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       }
+};
+
+static spi_dev_t spi_ifc2_devs[] = {
+       [SPIDEV_SDCARD] = {
+               .cs = SPI_CS_0,
+               .dfsel = 0,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       }
+};
+
+static spi_dev_t spi_ifc3_devs[] = {
+       [SPIDEV_MCP4922_1] = {
+               .cs = SPI_CS_0,
+               .dfsel = 1,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       },
+       [SPIDEV_MCP4922_2] = {
+               .cs = SPI_CS_4,
+               .dfsel = 1,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       },
+       [SPIDEV_MCP4922_3] = {
+               .cs = SPI_CS_5,
+               .dfsel = 1,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       }
+};
+
+static spi_dev_t spi_ifc4_devs[] = {
+       [SPIDEV_L99H01] = {
+               .cs = SPI_CS_0 | SPI_CS_DMM0,
+               .dfsel = 1,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       },
+       [SPIDEV_TJA1082_1] = {
+               .cs = SPI_CS_0 | SPI_CS_DMM1,
+               .dfsel = 0,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       },
+       [SPIDEV_TJA1082_2] = {
+               .cs = SPI_CS_0 | SPI_CS_DMM2,
+               .dfsel = 0,
+               .wdel = 0,
+               .cshold = 1,
+               .dlen = 0
+       }
+};
+
+/* Each SPI interface has its own static spi_tms570_drv_t struct
+   Index to this array is "SPI Interface ID -1" */
+spi_tms570_drv_t spi_ifcs[4] = {
+       [0] = {
+               .spi = mibspi_compat_REG1,
+               .spi_devs = spi_ifc1_devs,
+       },
+       [1] = {
+               .spi = spi_compat_REG2,
+               .spi_devs = spi_ifc2_devs,
+       },
+       [2] = {
+               .spi = mibspi_compat_REG3,
+               .spi_devs = spi_ifc3_devs,
+       },
+       [3] = {
+               .spi = spi_compat_REG4,
+               .spi_devs = spi_ifc4_devs,
+       },
+};
index 64f94a1b3e8633bea8dfd8845c735f52688764b5..f2565b0ca5f146c4b4d4bd04d15f650c33599205 100644 (file)
 //#include "sys_common.h"
 //#include "ti_drv_dmm.h"
 #include "sys/ti_drv_dmm.h"
+#include "drv/spi_def.h"
 
 static int spi_tms570_ctrl_fnc(spi_drv_t *ifc, int ctrl, void *p);
 
-
-/* Each SPI interface has its own static spi_tms570_drv_t struct
-   Index to this array is "SPI Interface ID -1" */
-spi_tms570_drv_t spi_tms570_ifcs[4];
-
-/* Addresses of SPI devices (=chips) bound to particular interfaces */
-enum spi_ifc1_devices {
-       SPIDEV_MC33972 = 0, SPIDEV_NCV7608_2x
-};
-enum spi_ifc2_devices {
-       SPIDEV_SDCARD = 0
-};
-enum spi_ifc3_devices {
-       SPIDEV_MCP4922_1 = 0, SPIDEV_MCP4922_2, SPIDEV_MCP4922_3
-};
-enum spi_ifc4_devices {
-       SPIDEV_L99H01 = 0, SPIDEV_TJA1082_1, SPIDEV_TJA1082_2
-};
-
-spi_dev_t spi_ifc1_devs[] = {
-       [SPIDEV_MC33972] = {
-               .cs = SPI_CS_3,
-               .dfsel = 0,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       },
-       [SPIDEV_NCV7608_2x] = {
-               .cs = SPI_CS_4,
-               .dfsel = 0,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       }
-};
-
-spi_dev_t spi_ifc2_devs[] = {
-       [SPIDEV_SDCARD] = {
-               .cs = SPI_CS_0,
-               .dfsel = 0,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       }
-};
-
-spi_dev_t spi_ifc3_devs[] = {
-       [SPIDEV_MCP4922_1] = {
-               .cs = SPI_CS_0,
-               .dfsel = 1,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       },
-       [SPIDEV_MCP4922_2] = {
-               .cs = SPI_CS_4,
-               .dfsel = 1,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       },
-       [SPIDEV_MCP4922_3] = {
-               .cs = SPI_CS_5,
-               .dfsel = 1,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       }
-};
-
-spi_dev_t spi_ifc4_devs[] = {
-       [SPIDEV_L99H01] = {
-               .cs = SPI_CS_0 | SPI_CS_DMM0,
-               .dfsel = 1,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       },
-       [SPIDEV_TJA1082_1] = {
-               .cs = SPI_CS_0 | SPI_CS_DMM1,
-               .dfsel = 0,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       },
-       [SPIDEV_TJA1082_2] = {
-               .cs = SPI_CS_0 | SPI_CS_DMM2,
-               .dfsel = 0,
-               .wdel = 0,
-               .cshold = 1,
-               .dlen = 0
-       }
-};
-
 /*
    Universal piece of code initializing SPI or MibSPI
    devices in "compatibility" mode.
@@ -305,30 +212,19 @@ void spiInit(spiBASE_compat_t *spiREG)
 
 static boolean_t spi_initialized = FALSE;
 
-int spi_tms570_init(void)
+int spi_tms570_init(spi_tms570_drv_t *ifcs, int count)
 {
        if (spi_initialized == TRUE)
                return FAILURE;
        spi_initialized = TRUE;
        int i;
 
-       spi_tms570_ifcs[0].spi = mibspi_compat_REG1;
-       spi_tms570_ifcs[1].spi = spi_compat_REG2;
-       spi_tms570_ifcs[2].spi = mibspi_compat_REG3;
-       spi_tms570_ifcs[3].spi = spi_compat_REG4;
-
-       spi_tms570_ifcs[0].spi_devs = spi_ifc1_devs;
-       spi_tms570_ifcs[1].spi_devs = spi_ifc2_devs;
-       spi_tms570_ifcs[2].spi_devs = spi_ifc3_devs;
-       spi_tms570_ifcs[3].spi_devs = spi_ifc4_devs;
-
-
-       for (i = 0; i <= 3; i++) {
-               spiInit(spi_tms570_ifcs[i].spi);
-               spi_tms570_ifcs[i].spi_drv.ctrl_fnc = spi_tms570_ctrl_fnc;
-               spi_rq_queue_init_head(&(spi_tms570_ifcs[i].spi_drv));
-               spi_tms570_ifcs[i].spi_drv.msg_act = NULL;
-               spi_tms570_ifcs[i].spi_drv.flags = SPI_IFC_ON;
+       for (i = 0; i < count; i++) {
+               spiInit(ifcs[i].spi);
+               ifcs[i].spi_drv.ctrl_fnc = spi_tms570_ctrl_fnc;
+               spi_rq_queue_init_head(&(ifcs[i].spi_drv));
+               ifcs[i].spi_drv.msg_act = NULL;
+               ifcs[i].spi_drv.flags = SPI_IFC_ON;
        }
 
        //dmmREG->PC5 = (1 << DMM_DATA5); /* Set to L */
@@ -375,9 +271,7 @@ static int spi_tms570_ctrl_fnc(spi_drv_t *ifc, int ctrl, void *p)
 void spi_tms570_isr(int spi_ifc, uint32_t flags)
 {
        spi_msg_head_t *msg;
-       spi_tms570_drv_t *spi_tms570_drv;
-
-       spi_tms570_drv = &spi_tms570_ifcs[spi_ifc];
+       spi_tms570_drv_t *spi_tms570_drv = &spi_ifcs[spi_ifc];
        spi_isr_lock_level_t saveif;
        uint8_t val_to_wr;
        uint32_t cs;
@@ -509,10 +403,10 @@ void spi_tms570_isr(int spi_ifc, uint32_t flags)
 
 spi_drv_t *spi_find_drv(char *name, int number)
 {
-       if (number < 1 || number > (sizeof(spi_tms570_ifcs)/sizeof(spi_tms570_ifcs[0])))
+       if (number < 1 || number > ARRAY_SIZE(spi_ifcs))
                return NULL;
 
-       return &spi_tms570_ifcs[number - 1].spi_drv;
+       return &spi_ifcs[number - 1].spi_drv;
 }
 
 #pragma INTERRUPT(spi2LowLevelInterrupt, IRQ)
index f2bdbe0527050b7581f10da24bf5f44fba1d62b3..e5dfc8359724173aeb87abbeac09e49ff4e46911 100644 (file)
@@ -23,7 +23,7 @@
 
 #ifndef FREERTOS_POSIX
 #include "drv/dac.h"
-#include "drv/spi_tms570.h"
+#include "drv/spi_def.h"
 #endif
 
 RPP_MUTEX_DEFINE(mutex_dac);
@@ -38,7 +38,7 @@ int8_t rpp_dac_init()
                return FAILURE;
        initialized = TRUE;
 #ifndef FREERTOS_POSIX
-       spi_tms570_init();
+       spi_tms570_init(spi_ifcs, ARRAY_SIZE(spi_ifcs));
 #endif
        // Configure board
        // FIXME find out why board has default output of ~3.8V
index e65380a059a82d8d66335dac61c1e7484757cd92..0405645ba60c3cf7011b3aaec69acb541d7568cd 100644 (file)
@@ -23,7 +23,7 @@
 
 #ifndef FREERTOS_POSIX
 #include "drv/din.h"
-#include "drv/spi_tms570.h"
+#include "drv/spi_def.h"
 #endif
 
 RPP_MUTEX_DEFINE(mutex_din);
@@ -41,7 +41,7 @@ int8_t rpp_din_init()
        dmmInit();
        gioInit();
        hetInit();
-       spi_tms570_init();
+       spi_tms570_init(spi_ifcs, ARRAY_SIZE(spi_ifcs));
 #endif
 
        return SUCCESS;
index 728ee8053facfc58673bfb975b5c1f92954d6274..3b37befeee3aff960a4d4e34733530164887224c 100644 (file)
@@ -26,7 +26,7 @@
 #include "stdio.h"
 #include "string.h"
 #include "drv/drv.h"
-#include "drv/spi_tms570.h"
+#include "drv/spi_def.h"
 #include "rpp/mutex.h"
 
 RPP_MUTEX_DEFINE(mutex_fr);
@@ -40,7 +40,7 @@ int8_t rpp_fr_init_driver(const Fr_ConfigType *config_ptr, uint32_t *error)
        if (rpp_fr_state >= RPP_FR_DRV_INITIALIZED)
                return FAILURE;
 #ifndef FREERTOS_POSIX
-       spi_tms570_init();
+       spi_tms570_init(spi_ifcs, ARRAY_SIZE(spi_ifcs));
 #endif
        if (!RPP_MUTEX_INIT(mutex_fr))
                return FAILURE;
index eb411198371c72a8523274e4a5e798c2b684c41a..d628092b7f2daa0252cec53985dfeac2b3598d11 100644 (file)
@@ -23,7 +23,7 @@
 
 #ifndef FREERTOS_POSIX
 #include "drv/hbridge.h"
-#include "drv/spi_tms570.h"
+#include "drv/spi_def.h"
 #endif
 
 RPP_MUTEX_DEFINE(mutex_hbr);
@@ -40,7 +40,7 @@ int8_t rpp_hbr_init()
 #ifndef FREERTOS_POSIX
        dmmInit();
        hetInit();
-       spi_tms570_init();
+       spi_tms570_init(spi_ifcs, ARRAY_SIZE(spi_ifcs));
 #endif
        return SUCCESS;
 }
index ca2366574fc936d57b328b19d6c2cf20666769f2..798a2c607d1b265513eb6e0425ca4702efbfc25e 100644 (file)
@@ -25,7 +25,7 @@ RPP_MUTEX_DEFINE(mutex_lout);
 
 #ifndef FREERTOS_POSIX
 #include "drv/lout.h"
-#include "drv/spi_tms570.h"
+#include "drv/spi_def.h"
 #endif
 
 static boolean_t initialized = FALSE;
@@ -38,7 +38,7 @@ int8_t rpp_lout_init()
                return FAILURE;
        initialized = TRUE;
 #ifndef FREERTOS_POSIX
-       spi_tms570_init();
+       spi_tms570_init(spi_ifcs, ARRAY_SIZE(spi_ifcs));
 #endif
 
        // FIXME: Implement.