test public

Dependencies:   HttpServer_snapshot_mbed-os

Committer:
anhtran
Date:
Fri Oct 18 03:09:43 2019 +0000
Revision:
0:e9fd5575b10e
abc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
anhtran 0:e9fd5575b10e 1 /*******************************************************************************
anhtran 0:e9fd5575b10e 2 * DISCLAIMER
anhtran 0:e9fd5575b10e 3 * This software is supplied by Renesas Electronics Corporation and is only
anhtran 0:e9fd5575b10e 4 * intended for use with Renesas products. No other uses are authorized. This
anhtran 0:e9fd5575b10e 5 * software is owned by Renesas Electronics Corporation and is protected under
anhtran 0:e9fd5575b10e 6 * all applicable laws, including copyright laws.
anhtran 0:e9fd5575b10e 7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
anhtran 0:e9fd5575b10e 8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
anhtran 0:e9fd5575b10e 9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
anhtran 0:e9fd5575b10e 10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
anhtran 0:e9fd5575b10e 11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
anhtran 0:e9fd5575b10e 12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
anhtran 0:e9fd5575b10e 13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
anhtran 0:e9fd5575b10e 14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
anhtran 0:e9fd5575b10e 15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
anhtran 0:e9fd5575b10e 16 * Renesas reserves the right, without notice, to make changes to this software
anhtran 0:e9fd5575b10e 17 * and to discontinue the availability of this software. By using this software,
anhtran 0:e9fd5575b10e 18 * you agree to the additional terms and conditions found by accessing the
anhtran 0:e9fd5575b10e 19 * following link:
anhtran 0:e9fd5575b10e 20 * http://www.renesas.com/disclaimer*
anhtran 0:e9fd5575b10e 21 * Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.
anhtran 0:e9fd5575b10e 22 *******************************************************************************/
anhtran 0:e9fd5575b10e 23
anhtran 0:e9fd5575b10e 24 #include "ssif_api.h"
anhtran 0:e9fd5575b10e 25
anhtran 0:e9fd5575b10e 26 #if defined(TARGET_RZ_A1XX)
anhtran 0:e9fd5575b10e 27 #if defined(TARGET_RZA1H) /* mbed */
anhtran 0:e9fd5575b10e 28 static const PinMap PinMap_SSIF_SCK[] = {
anhtran 0:e9fd5575b10e 29 // pin ch func
anhtran 0:e9fd5575b10e 30 {P2_8 , 0 , 4},
anhtran 0:e9fd5575b10e 31 {P4_4 , 0 , 5},
anhtran 0:e9fd5575b10e 32 {P3_4 , 1 , 3},
anhtran 0:e9fd5575b10e 33 {P7_1 , 1 , 6},
anhtran 0:e9fd5575b10e 34 {P10_12 , 1 , 2},
anhtran 0:e9fd5575b10e 35 {P7_5 , 2 , 6},
anhtran 0:e9fd5575b10e 36 {P9_5 , 2 , 3},
anhtran 0:e9fd5575b10e 37 {P4_12 , 3 , 6},
anhtran 0:e9fd5575b10e 38 {P7_8 , 3 , 2},
anhtran 0:e9fd5575b10e 39 {P7_12 , 4 , 2},
anhtran 0:e9fd5575b10e 40 {P8_12 , 4 , 8},
anhtran 0:e9fd5575b10e 41 {P11_4 , 4 , 3},
anhtran 0:e9fd5575b10e 42 {P2_4 , 5 , 4},
anhtran 0:e9fd5575b10e 43 {P4_8 , 5 , 5},
anhtran 0:e9fd5575b10e 44 {P8_8 , 5 , 8},
anhtran 0:e9fd5575b10e 45 {NC , NC , 0}
anhtran 0:e9fd5575b10e 46 };
anhtran 0:e9fd5575b10e 47
anhtran 0:e9fd5575b10e 48 static const PinMap PinMap_SSIF_WS[] = {
anhtran 0:e9fd5575b10e 49 // pin ch func
anhtran 0:e9fd5575b10e 50 {P2_9 , 0 , 4},
anhtran 0:e9fd5575b10e 51 {P4_5 , 0 , 5},
anhtran 0:e9fd5575b10e 52 {P3_5 , 1 , 3},
anhtran 0:e9fd5575b10e 53 {P7_2 , 1 , 6},
anhtran 0:e9fd5575b10e 54 {P10_13 , 1 , 2},
anhtran 0:e9fd5575b10e 55 {P7_6 , 2 , 6},
anhtran 0:e9fd5575b10e 56 {P9_6 , 2 , 3},
anhtran 0:e9fd5575b10e 57 {P4_13 , 3 , 6},
anhtran 0:e9fd5575b10e 58 {P7_9 , 3 , 2},
anhtran 0:e9fd5575b10e 59 {P7_13 , 4 , 2},
anhtran 0:e9fd5575b10e 60 {P8_13 , 4 , 8},
anhtran 0:e9fd5575b10e 61 {P11_5 , 4 , 3},
anhtran 0:e9fd5575b10e 62 {P2_5 , 5 , 4},
anhtran 0:e9fd5575b10e 63 {P4_9 , 5 , 5},
anhtran 0:e9fd5575b10e 64 {P8_9 , 5 , 8},
anhtran 0:e9fd5575b10e 65 {NC , NC , 0}
anhtran 0:e9fd5575b10e 66 };
anhtran 0:e9fd5575b10e 67
anhtran 0:e9fd5575b10e 68 static const PinMap PinMap_SSIF_TxD[] = {
anhtran 0:e9fd5575b10e 69 // pin ch func
anhtran 0:e9fd5575b10e 70 {P2_11 , 0 , 4},
anhtran 0:e9fd5575b10e 71 {P4_7 , 0 , 5},
anhtran 0:e9fd5575b10e 72 {P7_4 , 1 , 6},
anhtran 0:e9fd5575b10e 73 {P10_15 , 1 , 2},
anhtran 0:e9fd5575b10e 74 {P7_7 , 2 , 6}, /* SSIDATA2 */
anhtran 0:e9fd5575b10e 75 {P9_7 , 2 , 3}, /* SSIDATA2 */
anhtran 0:e9fd5575b10e 76 {P4_15 , 3 , 6},
anhtran 0:e9fd5575b10e 77 {P7_11 , 3 , 2},
anhtran 0:e9fd5575b10e 78 {P6_1 , 4 , 6}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 79 {P7_14 , 4 , 2}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 80 {P8_14 , 4 , 8}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 81 {P11_6 , 4 , 3}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 82 {P2_7 , 5 , 4},
anhtran 0:e9fd5575b10e 83 {P4_11 , 5 , 5},
anhtran 0:e9fd5575b10e 84 {P8_10 , 5 , 8},
anhtran 0:e9fd5575b10e 85 {NC , NC , 0}
anhtran 0:e9fd5575b10e 86 };
anhtran 0:e9fd5575b10e 87
anhtran 0:e9fd5575b10e 88 static const PinMap PinMap_SSIF_RxD[] = {
anhtran 0:e9fd5575b10e 89 // pin ch func
anhtran 0:e9fd5575b10e 90 {P2_10 , 0 , 4},
anhtran 0:e9fd5575b10e 91 {P4_6 , 0 , 5},
anhtran 0:e9fd5575b10e 92 {P3_7 , 1 , 3},
anhtran 0:e9fd5575b10e 93 {P7_3 , 1 , 6},
anhtran 0:e9fd5575b10e 94 {P10_14 , 1 , 2},
anhtran 0:e9fd5575b10e 95 {P7_7 , 2 , 6}, /* SSIDATA2 */
anhtran 0:e9fd5575b10e 96 {P9_7 , 2 , 3}, /* SSIDATA2 */
anhtran 0:e9fd5575b10e 97 {P4_14 , 3 , 6},
anhtran 0:e9fd5575b10e 98 {P7_10 , 3 , 2},
anhtran 0:e9fd5575b10e 99 {P6_1 , 4 , 6}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 100 {P7_14 , 4 , 2}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 101 {P8_14 , 4 , 8}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 102 {P11_6 , 4 , 3}, /* SSIDATA4 */
anhtran 0:e9fd5575b10e 103 {P2_6 , 5 , 4},
anhtran 0:e9fd5575b10e 104 {P4_10 , 5 , 5},
anhtran 0:e9fd5575b10e 105 {NC , NC , 0}
anhtran 0:e9fd5575b10e 106 };
anhtran 0:e9fd5575b10e 107
anhtran 0:e9fd5575b10e 108 static const PinMap PinMap_SPDIF_AUDIO_CLK[] = {
anhtran 0:e9fd5575b10e 109 {NC, NC, 0}
anhtran 0:e9fd5575b10e 110 };
anhtran 0:e9fd5575b10e 111
anhtran 0:e9fd5575b10e 112 #else
anhtran 0:e9fd5575b10e 113 static const PinMap PinMap_SSIF_SCK[] = {
anhtran 0:e9fd5575b10e 114 // pin ch func
anhtran 0:e9fd5575b10e 115 {P2_7 , 3 , 2},
anhtran 0:e9fd5575b10e 116 {NC , NC , 0}
anhtran 0:e9fd5575b10e 117 };
anhtran 0:e9fd5575b10e 118
anhtran 0:e9fd5575b10e 119 static const PinMap PinMap_SSIF_WS[] = {
anhtran 0:e9fd5575b10e 120 // pin ch func
anhtran 0:e9fd5575b10e 121 {P2_9 , 3 , 2},
anhtran 0:e9fd5575b10e 122 {NC , NC , 0}
anhtran 0:e9fd5575b10e 123 };
anhtran 0:e9fd5575b10e 124
anhtran 0:e9fd5575b10e 125 static const PinMap PinMap_SSIF_TxD[] = {
anhtran 0:e9fd5575b10e 126 // pin ch func
anhtran 0:e9fd5575b10e 127 {P2_8 , 3 , 2},
anhtran 0:e9fd5575b10e 128 {NC , NC , 0}
anhtran 0:e9fd5575b10e 129 };
anhtran 0:e9fd5575b10e 130
anhtran 0:e9fd5575b10e 131 static const PinMap PinMap_SSIF_RxD[] = {
anhtran 0:e9fd5575b10e 132 // pin ch func
anhtran 0:e9fd5575b10e 133 {P2_6 , 3 , 2},
anhtran 0:e9fd5575b10e 134 {NC , NC , 0}
anhtran 0:e9fd5575b10e 135 };
anhtran 0:e9fd5575b10e 136
anhtran 0:e9fd5575b10e 137 static const PinMap PinMap_SPDIF_AUDIO_CLK[] = {
anhtran 0:e9fd5575b10e 138 {NC, NC, 0}
anhtran 0:e9fd5575b10e 139 };
anhtran 0:e9fd5575b10e 140
anhtran 0:e9fd5575b10e 141 #endif
anhtran 0:e9fd5575b10e 142
anhtran 0:e9fd5575b10e 143 static void ssif_power_enable(uint32_t ssif_ch) {
anhtran 0:e9fd5575b10e 144 volatile uint8_t dummy;
anhtran 0:e9fd5575b10e 145
anhtran 0:e9fd5575b10e 146 switch (ssif_ch) {
anhtran 0:e9fd5575b10e 147 case 0:
anhtran 0:e9fd5575b10e 148 CPGSTBCR11 &= ~(0x20);
anhtran 0:e9fd5575b10e 149 break;
anhtran 0:e9fd5575b10e 150 case 1:
anhtran 0:e9fd5575b10e 151 CPGSTBCR11 &= ~(0x10);
anhtran 0:e9fd5575b10e 152 break;
anhtran 0:e9fd5575b10e 153 case 2:
anhtran 0:e9fd5575b10e 154 CPGSTBCR11 &= ~(0x08);
anhtran 0:e9fd5575b10e 155 break;
anhtran 0:e9fd5575b10e 156 case 3:
anhtran 0:e9fd5575b10e 157 CPGSTBCR11 &= ~(0x04);
anhtran 0:e9fd5575b10e 158 break;
anhtran 0:e9fd5575b10e 159 #if defined(TARGET_RZA1H) /* mbed */
anhtran 0:e9fd5575b10e 160 case 4:
anhtran 0:e9fd5575b10e 161 CPGSTBCR11 &= ~(0x02);
anhtran 0:e9fd5575b10e 162 break;
anhtran 0:e9fd5575b10e 163 case 5:
anhtran 0:e9fd5575b10e 164 CPGSTBCR11 &= ~(0x01);
anhtran 0:e9fd5575b10e 165 break;
anhtran 0:e9fd5575b10e 166 #endif
anhtran 0:e9fd5575b10e 167 }
anhtran 0:e9fd5575b10e 168 dummy = CPGSTBCR11;
anhtran 0:e9fd5575b10e 169 (void)dummy;
anhtran 0:e9fd5575b10e 170 }
anhtran 0:e9fd5575b10e 171
anhtran 0:e9fd5575b10e 172 #elif defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 173
anhtran 0:e9fd5575b10e 174 static const PinMap PinMap_SSIF_SCK[] = {
anhtran 0:e9fd5575b10e 175 // pin ch func
anhtran 0:e9fd5575b10e 176 {P9_6 , 0 , 5},
anhtran 0:e9fd5575b10e 177 {NC , NC , 0}
anhtran 0:e9fd5575b10e 178 };
anhtran 0:e9fd5575b10e 179
anhtran 0:e9fd5575b10e 180 static const PinMap PinMap_SSIF_WS[] = {
anhtran 0:e9fd5575b10e 181 // pin ch func
anhtran 0:e9fd5575b10e 182 {P9_5 , 0 , 5},
anhtran 0:e9fd5575b10e 183 {NC , NC , 0}
anhtran 0:e9fd5575b10e 184 };
anhtran 0:e9fd5575b10e 185
anhtran 0:e9fd5575b10e 186 static const PinMap PinMap_SSIF_TxD[] = {
anhtran 0:e9fd5575b10e 187 // pin ch func
anhtran 0:e9fd5575b10e 188 {P9_4 , 0 , 5},
anhtran 0:e9fd5575b10e 189 {NC , NC , 0}
anhtran 0:e9fd5575b10e 190 };
anhtran 0:e9fd5575b10e 191
anhtran 0:e9fd5575b10e 192 static const PinMap PinMap_SSIF_RxD[] = {
anhtran 0:e9fd5575b10e 193 // pin ch func
anhtran 0:e9fd5575b10e 194 {P9_3 , 0 , 5},
anhtran 0:e9fd5575b10e 195 {NC , NC , 0}
anhtran 0:e9fd5575b10e 196 };
anhtran 0:e9fd5575b10e 197
anhtran 0:e9fd5575b10e 198 static void ssif_power_enable(uint32_t ssif_ch) {
anhtran 0:e9fd5575b10e 199 volatile uint8_t dummy;
anhtran 0:e9fd5575b10e 200
anhtran 0:e9fd5575b10e 201 switch (ssif_ch) {
anhtran 0:e9fd5575b10e 202 case 0:
anhtran 0:e9fd5575b10e 203 CPG.STBCR7.BYTE &= ~(0x08);
anhtran 0:e9fd5575b10e 204 break;
anhtran 0:e9fd5575b10e 205 case 1:
anhtran 0:e9fd5575b10e 206 CPG.STBCR7.BYTE &= ~(0x04);
anhtran 0:e9fd5575b10e 207 break;
anhtran 0:e9fd5575b10e 208 case 2:
anhtran 0:e9fd5575b10e 209 CPG.STBCR7.BYTE &= ~(0x02);
anhtran 0:e9fd5575b10e 210 break;
anhtran 0:e9fd5575b10e 211 case 3:
anhtran 0:e9fd5575b10e 212 CPG.STBCR7.BYTE &= ~(0x01);
anhtran 0:e9fd5575b10e 213 break;
anhtran 0:e9fd5575b10e 214 }
anhtran 0:e9fd5575b10e 215 dummy = CPG.STBCR7.BYTE;
anhtran 0:e9fd5575b10e 216 (void)dummy;
anhtran 0:e9fd5575b10e 217 }
anhtran 0:e9fd5575b10e 218
anhtran 0:e9fd5575b10e 219 static const PinMap PinMap_SPDIF_AUDIO_CLK[] = {
anhtran 0:e9fd5575b10e 220 {P6_4, 0, 4},
anhtran 0:e9fd5575b10e 221 {PH_0, 0, 1},
anhtran 0:e9fd5575b10e 222 {NC, NC, 0}
anhtran 0:e9fd5575b10e 223 };
anhtran 0:e9fd5575b10e 224
anhtran 0:e9fd5575b10e 225 #endif
anhtran 0:e9fd5575b10e 226
anhtran 0:e9fd5575b10e 227 int32_t ssif_init(PinName sck, PinName ws, PinName tx, PinName rx, PinName audio_clk) {
anhtran 0:e9fd5575b10e 228 /* determine the ssif to use */
anhtran 0:e9fd5575b10e 229 uint32_t ssif_sck = pinmap_peripheral(sck, PinMap_SSIF_SCK);
anhtran 0:e9fd5575b10e 230 uint32_t ssif_ws = pinmap_peripheral(ws, PinMap_SSIF_WS);
anhtran 0:e9fd5575b10e 231 uint32_t ssif_tx = pinmap_peripheral(tx, PinMap_SSIF_TxD);
anhtran 0:e9fd5575b10e 232 uint32_t ssif_rx = pinmap_peripheral(rx, PinMap_SSIF_RxD);
anhtran 0:e9fd5575b10e 233 uint32_t ssif_ch = pinmap_merge(ssif_tx, ssif_rx);
anhtran 0:e9fd5575b10e 234
anhtran 0:e9fd5575b10e 235 if ((ssif_ch == ssif_sck) && (ssif_ch == ssif_ws)) {
anhtran 0:e9fd5575b10e 236 ssif_power_enable(ssif_ch);
anhtran 0:e9fd5575b10e 237 pinmap_pinout(sck, PinMap_SSIF_SCK);
anhtran 0:e9fd5575b10e 238 pinmap_pinout(ws, PinMap_SSIF_WS);
anhtran 0:e9fd5575b10e 239 pinmap_pinout(tx, PinMap_SSIF_TxD);
anhtran 0:e9fd5575b10e 240 pinmap_pinout(rx, PinMap_SSIF_RxD);
anhtran 0:e9fd5575b10e 241 if ((int32_t)audio_clk != NC) {
anhtran 0:e9fd5575b10e 242 pinmap_pinout(audio_clk, PinMap_SPDIF_AUDIO_CLK);
anhtran 0:e9fd5575b10e 243 }
anhtran 0:e9fd5575b10e 244 } else {
anhtran 0:e9fd5575b10e 245 ssif_ch = (uint32_t)NC;
anhtran 0:e9fd5575b10e 246 }
anhtran 0:e9fd5575b10e 247
anhtran 0:e9fd5575b10e 248 return (int32_t)ssif_ch;
anhtran 0:e9fd5575b10e 249 }
anhtran 0:e9fd5575b10e 250