Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:43

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  * Header file for GRASCS RTEMS driver
0005  *
0006  * COPYRIGHT (c) 2008.
0007  * Cobham Gaisler AB.
0008  *
0009  * Redistribution and use in source and binary forms, with or without
0010  * modification, are permitted provided that the following conditions
0011  * are met:
0012  * 1. Redistributions of source code must retain the above copyright
0013  *    notice, this list of conditions and the following disclaimer.
0014  * 2. Redistributions in binary form must reproduce the above copyright
0015  *    notice, this list of conditions and the following disclaimer in the
0016  *    documentation and/or other materials provided with the distribution.
0017  *
0018  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0019  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0020  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0021  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0022  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0023  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0024  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0026  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0027  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0028  * POSSIBILITY OF SUCH DAMAGE.
0029  */
0030 
0031 #ifndef __GRASCS_H__
0032 #define __GRASCS_H__
0033 
0034 #ifdef __cplusplus
0035 extern "C" {
0036 #endif
0037 
0038 /* Minimum and maximum system frequency */
0039 #define GRASCS_MIN_SFREQ 10000
0040 #define GRASCS_MAX_SFREQ 255000
0041 
0042 /* Default, minimum and maximum ETR pulse frequency */
0043 #define GRASCS_DEFAULT_ETRFREQ 10
0044 #define GRASCS_MIN_ETRFREQ 1
0045 #define GRASCS_MAX_ETRFREQ 100
0046 
0047 /* Maximum number of external time markers */
0048 #define GRASCS_MAX_TMS 6
0049 
0050 /* Error codes */
0051 #define GRASCS_ERROR_STARTSTOP 1 /* Serial/synch interface is running/stopped */
0052 #define GRASCS_ERROR_TRANSACTIVE 2 /* Busy with transaction */
0053 #define GRASCS_ERROR_CAPFAULT 3 /* Core capabilities prohibit request */
0054 
0055 /* Command register */
0056 #define GRASCS_CMD_RESET (1 << 0)
0057 #define GRASCS_CMD_STARTSTOP (1 << 1)
0058 #define GRASCS_CMD_ESTARTSTOP (1 << 2)
0059 #define GRASCS_CMD_SENDTM (1 << 3)
0060 #define GRASCS_CMD_ETRCTRL (7 << 4)
0061 #define GRASCS_CMD_ETRCTRL_BITS 4
0062 #define GRASCS_CMD_SLAVESEL (15 << 8)
0063 #define GRASCS_CMD_SLAVESEL_BITS 8
0064 #define GRASCS_CMD_TCDONE (1 << 12)
0065 #define GRASCS_CMD_TMDONE (1 << 13)
0066 #define GRASCS_CMD_US1 (255 << 16)
0067 #define GRASCS_CMD_US1_BITS 16
0068 #define GRASCS_CMD_US1C (1 << 24)
0069 
0070 /* Clock scale register */
0071 #define GRASCS_CLK_ETRFREQ_BITS 12
0072 
0073 /* Status register */
0074 #define GRASCS_STS_RUNNING (1 << 0)
0075 #define GRASCS_STS_ERUNNING (1 << 1)
0076 #define GRASCS_STS_TCDONE (1 << 4)
0077 #define GRASCS_STS_TMDONE (1 << 5)
0078 #define GRASCS_STS_DBITS_BITS 8
0079 #define GRASCS_STS_NSLAVES_BITS 13
0080 #define GRASCS_STS_USCONF_BITS 18
0081 #define GRASCS_STS_TMCONF_BITS 19
0082 
0083 extern int ASCS_init(void);
0084 
0085 extern int ASCS_input_select(int slave);
0086 
0087 extern int ASCS_etr_select(int etr, int freq);
0088 
0089 extern void ASCS_start(void);
0090 
0091 extern void ASCS_stop(void);
0092 
0093 extern int ASCS_iface_status(void);
0094 
0095 extern int ASCS_TC_send(int *word);
0096 
0097 extern int ASCS_TC_send_block(int *block, int ntrans);
0098 
0099 extern void ASCS_TC_sync_start(void);
0100 
0101 extern void ASCS_TC_sync_stop(void);
0102 
0103 extern int ASCS_TM_recv(int *word);
0104 
0105 extern int ASCS_TM_recv_block(int *block, int ntrans);
0106 
0107 #ifdef __cplusplus
0108 }
0109 #endif
0110 
0111 #endif