mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
This updates the lib to the mbed lib v125

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /******************************************************************************
<> 144:ef7eb2e8f9f7 2 * @file ps2.c
<> 144:ef7eb2e8f9f7 3 * @version V1.00
<> 144:ef7eb2e8f9f7 4 * $Revision: 5 $
<> 144:ef7eb2e8f9f7 5 * $Date: 14/10/03 11:59a $
<> 144:ef7eb2e8f9f7 6 * @brief NUC472/NUC442 PS2 driver source file
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * @note
<> 144:ef7eb2e8f9f7 9 * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
<> 144:ef7eb2e8f9f7 10 *****************************************************************************/
<> 144:ef7eb2e8f9f7 11
<> 144:ef7eb2e8f9f7 12 #include <stdio.h>
<> 144:ef7eb2e8f9f7 13 #include "NUC472_442.h"
<> 144:ef7eb2e8f9f7 14
<> 144:ef7eb2e8f9f7 15 /*---------------------------------------------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 16 /* Includes of local headers */
<> 144:ef7eb2e8f9f7 17 /*---------------------------------------------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 18 //#include "ps2.h"
<> 144:ef7eb2e8f9f7 19
<> 144:ef7eb2e8f9f7 20
<> 144:ef7eb2e8f9f7 21 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
<> 144:ef7eb2e8f9f7 22 @{
<> 144:ef7eb2e8f9f7 23 */
<> 144:ef7eb2e8f9f7 24
<> 144:ef7eb2e8f9f7 25 /** @addtogroup NUC472_442_PS2_Driver PS2 Driver
<> 144:ef7eb2e8f9f7 26 @{
<> 144:ef7eb2e8f9f7 27 */
<> 144:ef7eb2e8f9f7 28
<> 144:ef7eb2e8f9f7 29
<> 144:ef7eb2e8f9f7 30 /** @addtogroup NUC472_442_PS2_EXPORTED_FUNCTIONS PS2 Exported Functions
<> 144:ef7eb2e8f9f7 31 @{
<> 144:ef7eb2e8f9f7 32 */
<> 144:ef7eb2e8f9f7 33
<> 144:ef7eb2e8f9f7 34
<> 144:ef7eb2e8f9f7 35 /**
<> 144:ef7eb2e8f9f7 36 * @brief The function is used to enable PS2 specified interrupt.
<> 144:ef7eb2e8f9f7 37 *
<> 144:ef7eb2e8f9f7 38 * @param[in] u32Mask The specified interrupt of PS2 module:
<> 144:ef7eb2e8f9f7 39 * - \ref PS2_CTL_TXIEN_Msk : PS2 Tx interrupt
<> 144:ef7eb2e8f9f7 40 * - \ref PS2_CTL_RXIEN_Msk : PS2 Rx interrupt
<> 144:ef7eb2e8f9f7 41 *
<> 144:ef7eb2e8f9f7 42 * @return None
<> 144:ef7eb2e8f9f7 43 */
<> 144:ef7eb2e8f9f7 44 void PS2_EnableInt(uint32_t u32Mask)
<> 144:ef7eb2e8f9f7 45 {
<> 144:ef7eb2e8f9f7 46 PS2->CTL |= u32Mask;
<> 144:ef7eb2e8f9f7 47 }
<> 144:ef7eb2e8f9f7 48
<> 144:ef7eb2e8f9f7 49 /**
<> 144:ef7eb2e8f9f7 50 * @brief The function is used to disable PS2 specified interrupt.
<> 144:ef7eb2e8f9f7 51 *
<> 144:ef7eb2e8f9f7 52 * @param[in] u32Mask The specified interrupt of PS2 module:
<> 144:ef7eb2e8f9f7 53 * - \ref PS2_CTL_TXIEN_Msk : PS2 Tx interrupt
<> 144:ef7eb2e8f9f7 54 * - \ref PS2_CTL_RXIEN_Msk : PS2 Rx interrupt
<> 144:ef7eb2e8f9f7 55 *
<> 144:ef7eb2e8f9f7 56 * @return None
<> 144:ef7eb2e8f9f7 57 */
<> 144:ef7eb2e8f9f7 58 void PS2_DisableInt(uint32_t u32Mask)
<> 144:ef7eb2e8f9f7 59 {
<> 144:ef7eb2e8f9f7 60 PS2->CTL &= ~u32Mask;
<> 144:ef7eb2e8f9f7 61 }
<> 144:ef7eb2e8f9f7 62
<> 144:ef7eb2e8f9f7 63 /**
<> 144:ef7eb2e8f9f7 64 * @brief This function use to enable PS2 function and set one byte per trnasfer.
<> 144:ef7eb2e8f9f7 65 *
<> 144:ef7eb2e8f9f7 66 * @param None
<> 144:ef7eb2e8f9f7 67 *
<> 144:ef7eb2e8f9f7 68 * @return None
<> 144:ef7eb2e8f9f7 69 */
<> 144:ef7eb2e8f9f7 70 void PS2_Open(void)
<> 144:ef7eb2e8f9f7 71 {
<> 144:ef7eb2e8f9f7 72 /* Reset PS2 device */
<> 144:ef7eb2e8f9f7 73 SYS->IPRST1 |= SYS_IPRST1_PS2RST_Msk;
<> 144:ef7eb2e8f9f7 74 SYS->IPRST1 &= ~SYS_IPRST1_PS2RST_Msk;
<> 144:ef7eb2e8f9f7 75
<> 144:ef7eb2e8f9f7 76 /* Enable PS2 module */
<> 144:ef7eb2e8f9f7 77 PS2->CTL |= PS2_CTL_PS2EN_Msk;
<> 144:ef7eb2e8f9f7 78
<> 144:ef7eb2e8f9f7 79 /* Set One byte per trnasfer */
<> 144:ef7eb2e8f9f7 80 PS2->CTL &= ~PS2_CTL_TXFDEPTH_Msk;
<> 144:ef7eb2e8f9f7 81
<> 144:ef7eb2e8f9f7 82 /* Clear Tx FIFO */
<> 144:ef7eb2e8f9f7 83 PS2->CTL |= PS2_CTL_CLRFIFO_Msk;
<> 144:ef7eb2e8f9f7 84 PS2->CTL &= (~PS2_CTL_CLRFIFO_Msk);
<> 144:ef7eb2e8f9f7 85 }
<> 144:ef7eb2e8f9f7 86
<> 144:ef7eb2e8f9f7 87 /**
<> 144:ef7eb2e8f9f7 88 * @brief This function use to disable PS2 function.
<> 144:ef7eb2e8f9f7 89 *
<> 144:ef7eb2e8f9f7 90 * @param None
<> 144:ef7eb2e8f9f7 91 *
<> 144:ef7eb2e8f9f7 92 * @return None
<> 144:ef7eb2e8f9f7 93 */
<> 144:ef7eb2e8f9f7 94 void PS2_Close(void)
<> 144:ef7eb2e8f9f7 95 {
<> 144:ef7eb2e8f9f7 96 /* Enable PS2 module */
<> 144:ef7eb2e8f9f7 97 PS2->CTL &= ~PS2_CTL_PS2EN_Msk;
<> 144:ef7eb2e8f9f7 98 }
<> 144:ef7eb2e8f9f7 99
<> 144:ef7eb2e8f9f7 100 /**
<> 144:ef7eb2e8f9f7 101 * @brief This function use to read PS2 Rx data.
<> 144:ef7eb2e8f9f7 102 *
<> 144:ef7eb2e8f9f7 103 * @param None
<> 144:ef7eb2e8f9f7 104 *
<> 144:ef7eb2e8f9f7 105 * @return Rx data
<> 144:ef7eb2e8f9f7 106 */
<> 144:ef7eb2e8f9f7 107 uint8_t PS2_Read(void)
<> 144:ef7eb2e8f9f7 108 {
<> 144:ef7eb2e8f9f7 109 return (uint8_t)(PS2->RXDAT & PS2_RXDAT_DAT_Msk);
<> 144:ef7eb2e8f9f7 110 }
<> 144:ef7eb2e8f9f7 111
<> 144:ef7eb2e8f9f7 112 /**
<> 144:ef7eb2e8f9f7 113 * @brief This function use to transmit PS2 data.
<> 144:ef7eb2e8f9f7 114 *
<> 144:ef7eb2e8f9f7 115 * @param[in] pu32Buf The buffer to send the data to PS2 transmission FIFO.
<> 144:ef7eb2e8f9f7 116 * @param[in] u32ByteCount The byte number of data.
<> 144:ef7eb2e8f9f7 117 *
<> 144:ef7eb2e8f9f7 118 * @return FALSE: transmit data time-out
<> 144:ef7eb2e8f9f7 119 * TRUE: transmit data successful
<> 144:ef7eb2e8f9f7 120 */
<> 144:ef7eb2e8f9f7 121 int32_t PS2_Write(uint32_t *pu32Buf, uint32_t u32ByteCount)
<> 144:ef7eb2e8f9f7 122 {
<> 144:ef7eb2e8f9f7 123 uint32_t u32TxFIFO_Depth = 16;
<> 144:ef7eb2e8f9f7 124 uint32_t u32delayno, txcnt, remainder;
<> 144:ef7eb2e8f9f7 125 uint8_t i=0;
<> 144:ef7eb2e8f9f7 126
<> 144:ef7eb2e8f9f7 127 txcnt = u32ByteCount / u32TxFIFO_Depth;
<> 144:ef7eb2e8f9f7 128
<> 144:ef7eb2e8f9f7 129 remainder = u32ByteCount % u32TxFIFO_Depth;
<> 144:ef7eb2e8f9f7 130 if(remainder) txcnt++;
<> 144:ef7eb2e8f9f7 131
<> 144:ef7eb2e8f9f7 132 u32delayno = 0;
<> 144:ef7eb2e8f9f7 133 while (!(PS2->STATUS & PS2_STATUS_TXEMPTY_Msk)) {
<> 144:ef7eb2e8f9f7 134 u32delayno++;
<> 144:ef7eb2e8f9f7 135 if (u32delayno >= 0xF0000000)
<> 144:ef7eb2e8f9f7 136 return FALSE; // Time Out
<> 144:ef7eb2e8f9f7 137 }
<> 144:ef7eb2e8f9f7 138
<> 144:ef7eb2e8f9f7 139 if(u32ByteCount >= u32TxFIFO_Depth)//Tx fifo is 16 bytes
<> 144:ef7eb2e8f9f7 140 PS2_SET_TX_BYTE_CNT(u32TxFIFO_Depth);
<> 144:ef7eb2e8f9f7 141
<> 144:ef7eb2e8f9f7 142 do {
<> 144:ef7eb2e8f9f7 143 u32delayno = 0;
<> 144:ef7eb2e8f9f7 144 while (!(PS2->STATUS & PS2_STATUS_TXEMPTY_Msk)) {
<> 144:ef7eb2e8f9f7 145 u32delayno++;
<> 144:ef7eb2e8f9f7 146 if(u32delayno >= 0xF0000000)
<> 144:ef7eb2e8f9f7 147 return FALSE; // Time Out
<> 144:ef7eb2e8f9f7 148 }
<> 144:ef7eb2e8f9f7 149
<> 144:ef7eb2e8f9f7 150 if((txcnt == 1) && (remainder != 0))
<> 144:ef7eb2e8f9f7 151 PS2_SET_TX_BYTE_CNT(u32ByteCount);
<> 144:ef7eb2e8f9f7 152
<> 144:ef7eb2e8f9f7 153 PS2->TXDAT0 = pu32Buf[i];
<> 144:ef7eb2e8f9f7 154 PS2->TXDAT1 = pu32Buf[i+1];
<> 144:ef7eb2e8f9f7 155 PS2->TXDAT2 = pu32Buf[i+2];
<> 144:ef7eb2e8f9f7 156 PS2->TXDAT3 = pu32Buf[i+3];
<> 144:ef7eb2e8f9f7 157
<> 144:ef7eb2e8f9f7 158 i = i + 4;
<> 144:ef7eb2e8f9f7 159
<> 144:ef7eb2e8f9f7 160 } while(--txcnt);
<> 144:ef7eb2e8f9f7 161
<> 144:ef7eb2e8f9f7 162 u32delayno = 0;
<> 144:ef7eb2e8f9f7 163 while(!(PS2->STATUS & PS2_STATUS_TXEMPTY_Msk)) {
<> 144:ef7eb2e8f9f7 164 u32delayno++;
<> 144:ef7eb2e8f9f7 165 if(u32delayno >= 0xF0000000)
<> 144:ef7eb2e8f9f7 166 return FALSE; // Time Out
<> 144:ef7eb2e8f9f7 167 }
<> 144:ef7eb2e8f9f7 168
<> 144:ef7eb2e8f9f7 169 return TRUE;
<> 144:ef7eb2e8f9f7 170
<> 144:ef7eb2e8f9f7 171 }
<> 144:ef7eb2e8f9f7 172
<> 144:ef7eb2e8f9f7 173
<> 144:ef7eb2e8f9f7 174 /*@}*/ /* end of group NUC472_442_PS2_EXPORTED_FUNCTIONS */
<> 144:ef7eb2e8f9f7 175
<> 144:ef7eb2e8f9f7 176 /*@}*/ /* end of group NUC472_442_PS2_Driver */
<> 144:ef7eb2e8f9f7 177
<> 144:ef7eb2e8f9f7 178 /*@}*/ /* end of group NUC472_442_Device_Driver */
<> 144:ef7eb2e8f9f7 179
<> 144:ef7eb2e8f9f7 180 /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/
<> 144:ef7eb2e8f9f7 181
<> 144:ef7eb2e8f9f7 182
<> 144:ef7eb2e8f9f7 183