sd + skpeaker

Dependencies:   ST_I2S X_NUCLEO_COMMON

Fork of X_NUCLEO_CCA01M1 by ST

Committer:
Davidroid
Date:
Fri Apr 21 08:15:15 2017 +0000
Revision:
5:2d450bbee471
Parent:
Components/sta350bw/STA350BW.cpp@3:c688a4acb4bf
Child:
7:b98581eae911
Aligned to ARM mbed coding style.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davide.aliprandi@st.com 3:c688a4acb4bf 1 /**
davide.aliprandi@st.com 3:c688a4acb4bf 2 ******************************************************************************
davide.aliprandi@st.com 3:c688a4acb4bf 3 * @file STA350BW.cpp
davide.aliprandi@st.com 3:c688a4acb4bf 4 * @author Central Labs
davide.aliprandi@st.com 3:c688a4acb4bf 5 * @version V1.0.0
davide.aliprandi@st.com 3:c688a4acb4bf 6 * @date 18-August-2015
davide.aliprandi@st.com 3:c688a4acb4bf 7 * @brief This file provides the STA350BW SOUND TERMINAL audio driver.
davide.aliprandi@st.com 3:c688a4acb4bf 8 ******************************************************************************
davide.aliprandi@st.com 3:c688a4acb4bf 9 * @attention
davide.aliprandi@st.com 3:c688a4acb4bf 10 *
davide.aliprandi@st.com 3:c688a4acb4bf 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
davide.aliprandi@st.com 3:c688a4acb4bf 12 *
davide.aliprandi@st.com 3:c688a4acb4bf 13 * Redistribution and use in source and binary forms, with or without modification,
davide.aliprandi@st.com 3:c688a4acb4bf 14 * are permitted provided that the following conditions are met:
davide.aliprandi@st.com 3:c688a4acb4bf 15 * 1. Redistributions of source code must retain the above copyright notice,
davide.aliprandi@st.com 3:c688a4acb4bf 16 * this list of conditions and the following disclaimer.
davide.aliprandi@st.com 3:c688a4acb4bf 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
davide.aliprandi@st.com 3:c688a4acb4bf 18 * this list of conditions and the following disclaimer in the documentation
davide.aliprandi@st.com 3:c688a4acb4bf 19 * and/or other materials provided with the distribution.
davide.aliprandi@st.com 3:c688a4acb4bf 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
davide.aliprandi@st.com 3:c688a4acb4bf 21 * may be used to endorse or promote products derived from this software
davide.aliprandi@st.com 3:c688a4acb4bf 22 * without specific prior written permission.
davide.aliprandi@st.com 3:c688a4acb4bf 23 *
davide.aliprandi@st.com 3:c688a4acb4bf 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
davide.aliprandi@st.com 3:c688a4acb4bf 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
davide.aliprandi@st.com 3:c688a4acb4bf 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
davide.aliprandi@st.com 3:c688a4acb4bf 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
davide.aliprandi@st.com 3:c688a4acb4bf 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
davide.aliprandi@st.com 3:c688a4acb4bf 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
davide.aliprandi@st.com 3:c688a4acb4bf 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
davide.aliprandi@st.com 3:c688a4acb4bf 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
davide.aliprandi@st.com 3:c688a4acb4bf 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
davide.aliprandi@st.com 3:c688a4acb4bf 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
davide.aliprandi@st.com 3:c688a4acb4bf 34 *
davide.aliprandi@st.com 3:c688a4acb4bf 35 ******************************************************************************
davide.aliprandi@st.com 3:c688a4acb4bf 36 */
davide.aliprandi@st.com 3:c688a4acb4bf 37
davide.aliprandi@st.com 3:c688a4acb4bf 38
davide.aliprandi@st.com 3:c688a4acb4bf 39 /* Generated with STM32CubeTOO -----------------------------------------------*/
davide.aliprandi@st.com 3:c688a4acb4bf 40
davide.aliprandi@st.com 3:c688a4acb4bf 41
davide.aliprandi@st.com 3:c688a4acb4bf 42 /* Revision ------------------------------------------------------------------*/
davide.aliprandi@st.com 3:c688a4acb4bf 43 /*
davide.aliprandi@st.com 3:c688a4acb4bf 44 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
davide.aliprandi@st.com 3:c688a4acb4bf 45 Branch/Trunk/Tag: trunk
davide.aliprandi@st.com 3:c688a4acb4bf 46 Based on: X-CUBE-SOUNDTER1/trunk/Drivers/BSP/Components/sta350bw/sta350bw.c
davide.aliprandi@st.com 3:c688a4acb4bf 47 Revision: 0
davide.aliprandi@st.com 3:c688a4acb4bf 48 */
davide.aliprandi@st.com 3:c688a4acb4bf 49
davide.aliprandi@st.com 3:c688a4acb4bf 50
davide.aliprandi@st.com 3:c688a4acb4bf 51 /* Includes ------------------------------------------------------------------*/
davide.aliprandi@st.com 3:c688a4acb4bf 52
davide.aliprandi@st.com 3:c688a4acb4bf 53 #include "STA350BW.h"
davide.aliprandi@st.com 3:c688a4acb4bf 54
davide.aliprandi@st.com 3:c688a4acb4bf 55
davide.aliprandi@st.com 3:c688a4acb4bf 56 /* Methods -------------------------------------------------------------------*/
davide.aliprandi@st.com 3:c688a4acb4bf 57
davide.aliprandi@st.com 3:c688a4acb4bf 58 /**
davide.aliprandi@st.com 3:c688a4acb4bf 59 * @brief Initializes the STA350BW and the control interface.
davide.aliprandi@st.com 3:c688a4acb4bf 60 * @param init: initialization data.
davide.aliprandi@st.com 3:c688a4acb4bf 61 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 62 */
davide.aliprandi@st.com 3:c688a4acb4bf 63 int32_t STA350BW::STA350BW_Init(void *init)
davide.aliprandi@st.com 3:c688a4acb4bf 64 {
davide.aliprandi@st.com 3:c688a4acb4bf 65 uint8_t tmp = 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 66
davide.aliprandi@st.com 3:c688a4acb4bf 67 /* Reset Audio Device */
davide.aliprandi@st.com 3:c688a4acb4bf 68 _reset = 0;
davide.aliprandi@st.com 3:c688a4acb4bf 69 wait_ms(100);
davide.aliprandi@st.com 3:c688a4acb4bf 70 _reset = 1;
davide.aliprandi@st.com 3:c688a4acb4bf 71
davide.aliprandi@st.com 3:c688a4acb4bf 72 /* Low level I2C init */
davide.aliprandi@st.com 3:c688a4acb4bf 73 STA350BW_IO_Init();
davide.aliprandi@st.com 3:c688a4acb4bf 74
davide.aliprandi@st.com 3:c688a4acb4bf 75 /* Set Master clock depending on sampling frequency */
davide.aliprandi@st.com 3:c688a4acb4bf 76 if (STA350BW_SetFrequency((*((STA350BW_Init_t *) init)).frequency) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 77 {
davide.aliprandi@st.com 3:c688a4acb4bf 78 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 79 }
davide.aliprandi@st.com 3:c688a4acb4bf 80
davide.aliprandi@st.com 3:c688a4acb4bf 81 STA350BW_IO_Delay(500);
davide.aliprandi@st.com 3:c688a4acb4bf 82
davide.aliprandi@st.com 3:c688a4acb4bf 83 /* Read Status Register */
davide.aliprandi@st.com 3:c688a4acb4bf 84 if (STA350BW_IO_Read(STA350BW_STATUS, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 85 {
davide.aliprandi@st.com 3:c688a4acb4bf 86 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 87 }
davide.aliprandi@st.com 3:c688a4acb4bf 88
davide.aliprandi@st.com 3:c688a4acb4bf 89 #if 0
davide.aliprandi@st.com 3:c688a4acb4bf 90 if (tmp != 0x7F)
davide.aliprandi@st.com 3:c688a4acb4bf 91 {
davide.aliprandi@st.com 3:c688a4acb4bf 92 /* Status register highlights undesired behaviour (PLL not locked, ...) */
davide.aliprandi@st.com 3:c688a4acb4bf 93 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 94 }
davide.aliprandi@st.com 3:c688a4acb4bf 95 #else
davide.aliprandi@st.com 3:c688a4acb4bf 96 if ((tmp & ~0x80) != 0x7F)
davide.aliprandi@st.com 3:c688a4acb4bf 97 {
davide.aliprandi@st.com 3:c688a4acb4bf 98 /*Status register highlights undesired behavior
davide.aliprandi@st.com 3:c688a4acb4bf 99 (betzw: excluding PLL not locked, ...) */
davide.aliprandi@st.com 3:c688a4acb4bf 100 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 101 }
davide.aliprandi@st.com 3:c688a4acb4bf 102 #endif
davide.aliprandi@st.com 3:c688a4acb4bf 103
davide.aliprandi@st.com 3:c688a4acb4bf 104 /* Setup Master volume */
davide.aliprandi@st.com 3:c688a4acb4bf 105 uint8_t value = (*((STA350BW_Init_t *) init)).volume;
davide.aliprandi@st.com 3:c688a4acb4bf 106 if (!(value >= MIN_VOLUME && value <= MAX_VOLUME))
davide.aliprandi@st.com 3:c688a4acb4bf 107 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 108 if (STA350BW_SetVolume(STA350BW_CHANNEL_MASTER, (uint8_t) MAX_VOLUME - value) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 109 {
davide.aliprandi@st.com 3:c688a4acb4bf 110 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 111 }
davide.aliprandi@st.com 3:c688a4acb4bf 112
davide.aliprandi@st.com 3:c688a4acb4bf 113 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 114 {
davide.aliprandi@st.com 3:c688a4acb4bf 115 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 116 }
davide.aliprandi@st.com 3:c688a4acb4bf 117
davide.aliprandi@st.com 3:c688a4acb4bf 118 #if 0
davide.aliprandi@st.com 3:c688a4acb4bf 119 tmp &= ~0x80;
davide.aliprandi@st.com 3:c688a4acb4bf 120 tmp |= 0x80;
davide.aliprandi@st.com 3:c688a4acb4bf 121
davide.aliprandi@st.com 3:c688a4acb4bf 122 /* Enable Power Out Stage */
davide.aliprandi@st.com 3:c688a4acb4bf 123 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 124 {
davide.aliprandi@st.com 3:c688a4acb4bf 125 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 126 }
davide.aliprandi@st.com 3:c688a4acb4bf 127 #else
davide.aliprandi@st.com 3:c688a4acb4bf 128 /*Enable Power Out Stage*/
davide.aliprandi@st.com 3:c688a4acb4bf 129 if (STA350BW_PowerOn() != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 130 {
davide.aliprandi@st.com 3:c688a4acb4bf 131 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 132 }
davide.aliprandi@st.com 3:c688a4acb4bf 133
davide.aliprandi@st.com 3:c688a4acb4bf 134 #endif
davide.aliprandi@st.com 3:c688a4acb4bf 135
davide.aliprandi@st.com 3:c688a4acb4bf 136 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 137 }
davide.aliprandi@st.com 3:c688a4acb4bf 138
davide.aliprandi@st.com 3:c688a4acb4bf 139 /**
davide.aliprandi@st.com 3:c688a4acb4bf 140 * @brief Deinitializes the STA350BW and the control interface.
davide.aliprandi@st.com 3:c688a4acb4bf 141 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 142 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise.
davide.aliprandi@st.com 3:c688a4acb4bf 143 */
davide.aliprandi@st.com 3:c688a4acb4bf 144 int32_t STA350BW::STA350BW_DeInit(void)
davide.aliprandi@st.com 3:c688a4acb4bf 145 {
davide.aliprandi@st.com 3:c688a4acb4bf 146 if (STA350BW_PowerOff() != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 147 {
davide.aliprandi@st.com 3:c688a4acb4bf 148 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 149 }
davide.aliprandi@st.com 3:c688a4acb4bf 150 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 151 }
davide.aliprandi@st.com 3:c688a4acb4bf 152
davide.aliprandi@st.com 3:c688a4acb4bf 153 /**
davide.aliprandi@st.com 3:c688a4acb4bf 154 * @brief Read the device ID.
davide.aliprandi@st.com 3:c688a4acb4bf 155 * @param id: identifier.
davide.aliprandi@st.com 3:c688a4acb4bf 156 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 157 */
davide.aliprandi@st.com 3:c688a4acb4bf 158 int32_t STA350BW::STA350BW_ReadID(uint8_t *id)
davide.aliprandi@st.com 3:c688a4acb4bf 159 {
davide.aliprandi@st.com 3:c688a4acb4bf 160 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 161 }
davide.aliprandi@st.com 3:c688a4acb4bf 162
davide.aliprandi@st.com 3:c688a4acb4bf 163 /**
davide.aliprandi@st.com 3:c688a4acb4bf 164 * @brief Start the audio play.
davide.aliprandi@st.com 3:c688a4acb4bf 165 * @param *pData: pointer to audio data.
davide.aliprandi@st.com 3:c688a4acb4bf 166 * @param Size: size of the data buffer.
davide.aliprandi@st.com 3:c688a4acb4bf 167 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 168 */
davide.aliprandi@st.com 3:c688a4acb4bf 169 int32_t STA350BW::STA350BW_Play(int16_t *pData, uint16_t Size)
davide.aliprandi@st.com 3:c688a4acb4bf 170 {
davide.aliprandi@st.com 3:c688a4acb4bf 171 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 172 }
davide.aliprandi@st.com 3:c688a4acb4bf 173
davide.aliprandi@st.com 3:c688a4acb4bf 174 /**
davide.aliprandi@st.com 3:c688a4acb4bf 175 * @brief Pause the audio play.
davide.aliprandi@st.com 3:c688a4acb4bf 176 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 177 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 178 */
davide.aliprandi@st.com 3:c688a4acb4bf 179 int32_t STA350BW::STA350BW_Pause(void)
davide.aliprandi@st.com 3:c688a4acb4bf 180 {
davide.aliprandi@st.com 3:c688a4acb4bf 181 /* Mute the output*/
davide.aliprandi@st.com 3:c688a4acb4bf 182 if (STA350BW_SetMute(STA350BW_CHANNEL_MASTER, STA350BW_ENABLE) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 183 {
davide.aliprandi@st.com 3:c688a4acb4bf 184 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 185 }
davide.aliprandi@st.com 3:c688a4acb4bf 186 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 187 }
davide.aliprandi@st.com 3:c688a4acb4bf 188
davide.aliprandi@st.com 3:c688a4acb4bf 189 /**
davide.aliprandi@st.com 3:c688a4acb4bf 190 * @brief Resume the audio play.
davide.aliprandi@st.com 3:c688a4acb4bf 191 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 192 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 193 */
davide.aliprandi@st.com 3:c688a4acb4bf 194 int32_t STA350BW::STA350BW_Resume(void)
davide.aliprandi@st.com 3:c688a4acb4bf 195 {
davide.aliprandi@st.com 3:c688a4acb4bf 196 /* Unmute the output*/
davide.aliprandi@st.com 3:c688a4acb4bf 197 if (STA350BW_SetMute(STA350BW_CHANNEL_MASTER, STA350BW_DISABLE) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 198 {
davide.aliprandi@st.com 3:c688a4acb4bf 199 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 200 }
davide.aliprandi@st.com 3:c688a4acb4bf 201 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 202 }
davide.aliprandi@st.com 3:c688a4acb4bf 203
davide.aliprandi@st.com 3:c688a4acb4bf 204 /**
davide.aliprandi@st.com 3:c688a4acb4bf 205 * @brief Control the mute features of the STA350BW.
davide.aliprandi@st.com 3:c688a4acb4bf 206 * @param channel: channel to be muted.
davide.aliprandi@st.com 3:c688a4acb4bf 207 * This parameter can be a value of @ref STA350BW_channel_define
davide.aliprandi@st.com 3:c688a4acb4bf 208 * @param state: enable disable parameter
davide.aliprandi@st.com 3:c688a4acb4bf 209 * This parameter can be a value of @ref STA350BW_state_define
davide.aliprandi@st.com 3:c688a4acb4bf 210 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 211 */
davide.aliprandi@st.com 3:c688a4acb4bf 212 int32_t STA350BW::STA350BW_SetMute(uint8_t channel, uint8_t state)
davide.aliprandi@st.com 3:c688a4acb4bf 213 {
davide.aliprandi@st.com 3:c688a4acb4bf 214 uint8_t tmp;
davide.aliprandi@st.com 3:c688a4acb4bf 215
davide.aliprandi@st.com 3:c688a4acb4bf 216 if (STA350BW_IO_Read(STA350BW_MUTE, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 217 {
davide.aliprandi@st.com 3:c688a4acb4bf 218 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 219 }
davide.aliprandi@st.com 3:c688a4acb4bf 220 if (state == STA350BW_ENABLE)
davide.aliprandi@st.com 3:c688a4acb4bf 221 {
davide.aliprandi@st.com 3:c688a4acb4bf 222 tmp |= channel;
davide.aliprandi@st.com 3:c688a4acb4bf 223 } else
davide.aliprandi@st.com 3:c688a4acb4bf 224 {
davide.aliprandi@st.com 3:c688a4acb4bf 225 tmp &= ~channel;
davide.aliprandi@st.com 3:c688a4acb4bf 226 }
davide.aliprandi@st.com 3:c688a4acb4bf 227
davide.aliprandi@st.com 3:c688a4acb4bf 228 if (STA350BW_IO_Write(STA350BW_MUTE, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 229 {
davide.aliprandi@st.com 3:c688a4acb4bf 230 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 231 }
davide.aliprandi@st.com 3:c688a4acb4bf 232 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 233 }
davide.aliprandi@st.com 3:c688a4acb4bf 234
davide.aliprandi@st.com 3:c688a4acb4bf 235 /**
davide.aliprandi@st.com 3:c688a4acb4bf 236 * @brief Control the volume features of the STA350BW.
davide.aliprandi@st.com 3:c688a4acb4bf 237 * @param channel: channel to be controlled.
davide.aliprandi@st.com 3:c688a4acb4bf 238 * This parameter can be a value of @ref STA350BW_channel_define
davide.aliprandi@st.com 3:c688a4acb4bf 239 * @param volume: volume to be set
davide.aliprandi@st.com 3:c688a4acb4bf 240 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 241 */
davide.aliprandi@st.com 3:c688a4acb4bf 242 int32_t STA350BW::STA350BW_SetVolume(uint8_t channel, uint8_t value)
davide.aliprandi@st.com 3:c688a4acb4bf 243 {
davide.aliprandi@st.com 3:c688a4acb4bf 244 /*Setup volume */
davide.aliprandi@st.com 3:c688a4acb4bf 245 uint8_t tmp = value;
davide.aliprandi@st.com 3:c688a4acb4bf 246 if (STA350BW_IO_Write(STA350BW_MVOL + channel, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 247 {
davide.aliprandi@st.com 3:c688a4acb4bf 248 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 249 }
davide.aliprandi@st.com 3:c688a4acb4bf 250 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 251 }
davide.aliprandi@st.com 3:c688a4acb4bf 252
davide.aliprandi@st.com 3:c688a4acb4bf 253 /**
davide.aliprandi@st.com 3:c688a4acb4bf 254 * @brief set the sampling frequency for STA350BW.
davide.aliprandi@st.com 3:c688a4acb4bf 255 * @param audio_freq: audio frequency to be set.
davide.aliprandi@st.com 3:c688a4acb4bf 256 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 257 */
davide.aliprandi@st.com 3:c688a4acb4bf 258 int32_t STA350BW::STA350BW_SetFrequency(uint32_t audio_freq)
davide.aliprandi@st.com 3:c688a4acb4bf 259 {
davide.aliprandi@st.com 3:c688a4acb4bf 260 uint8_t tmp;
davide.aliprandi@st.com 3:c688a4acb4bf 261
davide.aliprandi@st.com 3:c688a4acb4bf 262 if (STA350BW_IO_Read(STA350BW_CONF_REGA, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 263 {
davide.aliprandi@st.com 3:c688a4acb4bf 264 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 265 }
davide.aliprandi@st.com 3:c688a4acb4bf 266
davide.aliprandi@st.com 3:c688a4acb4bf 267 tmp &= ~0x1F;
davide.aliprandi@st.com 3:c688a4acb4bf 268
davide.aliprandi@st.com 3:c688a4acb4bf 269 if (audio_freq == STA350BW_Fs_32000 || audio_freq == STA350BW_Fs_44100 || audio_freq == STA350BW_Fs_48000)
davide.aliprandi@st.com 3:c688a4acb4bf 270 {
davide.aliprandi@st.com 3:c688a4acb4bf 271 tmp |= STA350BW_MCLK_256_LR_48K;
davide.aliprandi@st.com 3:c688a4acb4bf 272 }
davide.aliprandi@st.com 3:c688a4acb4bf 273 else if (audio_freq == STA350BW_Fs_88200 || audio_freq == STA350BW_Fs_96000)
davide.aliprandi@st.com 3:c688a4acb4bf 274 {
davide.aliprandi@st.com 3:c688a4acb4bf 275 tmp |= STA350BW_MCLK_256_LR_96K;
davide.aliprandi@st.com 3:c688a4acb4bf 276 }
davide.aliprandi@st.com 3:c688a4acb4bf 277 else
davide.aliprandi@st.com 3:c688a4acb4bf 278 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 279
davide.aliprandi@st.com 3:c688a4acb4bf 280 if (STA350BW_IO_Write(STA350BW_CONF_REGA, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 281 {
davide.aliprandi@st.com 3:c688a4acb4bf 282 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 283 }
davide.aliprandi@st.com 3:c688a4acb4bf 284
davide.aliprandi@st.com 3:c688a4acb4bf 285 /* Set I2S audio frequency. */
davide.aliprandi@st.com 3:c688a4acb4bf 286 dev_i2s.audio_frequency(audio_freq);
davide.aliprandi@st.com 3:c688a4acb4bf 287
davide.aliprandi@st.com 3:c688a4acb4bf 288 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 289 }
davide.aliprandi@st.com 3:c688a4acb4bf 290
davide.aliprandi@st.com 3:c688a4acb4bf 291 /**
davide.aliprandi@st.com 3:c688a4acb4bf 292 * @brief Set equalization parameters for STA350BW biquad section.
davide.aliprandi@st.com 3:c688a4acb4bf 293 * @param ram_block: ram block to be set
davide.aliprandi@st.com 3:c688a4acb4bf 294 * @param filter_number: filter number
davide.aliprandi@st.com 3:c688a4acb4bf 295 * @param *filter_values: pointer to a uint32_t array containing filter coefficients
davide.aliprandi@st.com 3:c688a4acb4bf 296 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 297 */
davide.aliprandi@st.com 3:c688a4acb4bf 298 int32_t STA350BW::STA350BW_SetEq(uint8_t ram_block, uint8_t filter_number, uint32_t * filter_values)
davide.aliprandi@st.com 3:c688a4acb4bf 299 {
davide.aliprandi@st.com 3:c688a4acb4bf 300 /*5 is due to the ram adressing: first filter is on the adresses 0x00 to 0x04; the second is on 0x05 to 0x09 ...*/
davide.aliprandi@st.com 3:c688a4acb4bf 301 STA350BW_WriteRAMSet(ram_block, filter_number * 5, (uint8_t *) filter_values);
davide.aliprandi@st.com 3:c688a4acb4bf 302 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 303 }
davide.aliprandi@st.com 3:c688a4acb4bf 304
davide.aliprandi@st.com 3:c688a4acb4bf 305 /**
davide.aliprandi@st.com 3:c688a4acb4bf 306 * @brief Set tone value in the STA350BW tone register.
davide.aliprandi@st.com 3:c688a4acb4bf 307 * @param tone_gain: gain of the tone control
davide.aliprandi@st.com 3:c688a4acb4bf 308 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 309 */
davide.aliprandi@st.com 3:c688a4acb4bf 310 int32_t STA350BW::STA350BW_SetTone(uint8_t tone_gain)
davide.aliprandi@st.com 3:c688a4acb4bf 311 {
davide.aliprandi@st.com 3:c688a4acb4bf 312 uint8_t tmp = tone_gain;
davide.aliprandi@st.com 3:c688a4acb4bf 313
davide.aliprandi@st.com 3:c688a4acb4bf 314 if (STA350BW_IO_Write(STA350BW_TONE, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 315 {
davide.aliprandi@st.com 3:c688a4acb4bf 316 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 317 }
davide.aliprandi@st.com 3:c688a4acb4bf 318 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 319 }
davide.aliprandi@st.com 3:c688a4acb4bf 320
davide.aliprandi@st.com 3:c688a4acb4bf 321 /**
davide.aliprandi@st.com 3:c688a4acb4bf 322 * @brief Power on the device.
davide.aliprandi@st.com 3:c688a4acb4bf 323 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 324 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 325 */
davide.aliprandi@st.com 3:c688a4acb4bf 326 int32_t STA350BW::STA350BW_PowerOn(void)
davide.aliprandi@st.com 3:c688a4acb4bf 327 {
davide.aliprandi@st.com 3:c688a4acb4bf 328 uint8_t tmp;
davide.aliprandi@st.com 3:c688a4acb4bf 329 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 330 {
davide.aliprandi@st.com 3:c688a4acb4bf 331 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 332 }
davide.aliprandi@st.com 3:c688a4acb4bf 333 tmp |= 0xC0;
davide.aliprandi@st.com 3:c688a4acb4bf 334 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 335 {
davide.aliprandi@st.com 3:c688a4acb4bf 336 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 337 }
davide.aliprandi@st.com 3:c688a4acb4bf 338 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 339 }
davide.aliprandi@st.com 3:c688a4acb4bf 340
davide.aliprandi@st.com 3:c688a4acb4bf 341 /**
davide.aliprandi@st.com 3:c688a4acb4bf 342 * @brief Power off the device.
davide.aliprandi@st.com 3:c688a4acb4bf 343 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 344 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 345 */
davide.aliprandi@st.com 3:c688a4acb4bf 346 int32_t STA350BW::STA350BW_PowerOff(void)
davide.aliprandi@st.com 3:c688a4acb4bf 347 {
davide.aliprandi@st.com 3:c688a4acb4bf 348 uint8_t tmp;
davide.aliprandi@st.com 3:c688a4acb4bf 349 if (STA350BW_IO_Read(STA350BW_CONF_REGF, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 350 {
davide.aliprandi@st.com 3:c688a4acb4bf 351 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 352 }
davide.aliprandi@st.com 3:c688a4acb4bf 353 tmp &= ~0xC0;
davide.aliprandi@st.com 3:c688a4acb4bf 354 if (STA350BW_IO_Write(STA350BW_CONF_REGF, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 355 {
davide.aliprandi@st.com 3:c688a4acb4bf 356 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 357 }
davide.aliprandi@st.com 3:c688a4acb4bf 358 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 359 }
davide.aliprandi@st.com 3:c688a4acb4bf 360
davide.aliprandi@st.com 3:c688a4acb4bf 361 /**
davide.aliprandi@st.com 3:c688a4acb4bf 362 * @brief Stop audio stream.
davide.aliprandi@st.com 3:c688a4acb4bf 363 * @param None.
davide.aliprandi@st.com 3:c688a4acb4bf 364 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 365 */
davide.aliprandi@st.com 3:c688a4acb4bf 366 int32_t STA350BW::STA350BW_Stop(void)
davide.aliprandi@st.com 3:c688a4acb4bf 367 {
davide.aliprandi@st.com 3:c688a4acb4bf 368 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 369 }
davide.aliprandi@st.com 3:c688a4acb4bf 370
davide.aliprandi@st.com 3:c688a4acb4bf 371 /**
davide.aliprandi@st.com 3:c688a4acb4bf 372 * @brief Reset device.
davide.aliprandi@st.com 3:c688a4acb4bf 373 * @param NOne.
davide.aliprandi@st.com 3:c688a4acb4bf 374 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 375 */
davide.aliprandi@st.com 3:c688a4acb4bf 376 int32_t STA350BW::STA350BW_Reset(void)
davide.aliprandi@st.com 3:c688a4acb4bf 377 {
davide.aliprandi@st.com 3:c688a4acb4bf 378 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 379 }
davide.aliprandi@st.com 3:c688a4acb4bf 380
davide.aliprandi@st.com 3:c688a4acb4bf 381 /**
davide.aliprandi@st.com 3:c688a4acb4bf 382 * @brief This function can be used to set advanced DSP options in order to
davide.aliprandi@st.com 3:c688a4acb4bf 383 * use advanced features on the STA350BW device.
davide.aliprandi@st.com 3:c688a4acb4bf 384 * @param option: specific option to be setted up
davide.aliprandi@st.com 3:c688a4acb4bf 385 * This parameter can be a value of @ref STA350BW_DSP_option_selection
davide.aliprandi@st.com 3:c688a4acb4bf 386 * @param state: state of the option to be controlled. Depending on the selected
davide.aliprandi@st.com 3:c688a4acb4bf 387 * DSP feature to be controlled, this value can be either ENABLE/DISABLE
davide.aliprandi@st.com 3:c688a4acb4bf 388 * or a specific numerical parameter related to the specific DSP function.
davide.aliprandi@st.com 3:c688a4acb4bf 389 * This parameter can be a value of @ref STA350BW_state_define
davide.aliprandi@st.com 3:c688a4acb4bf 390 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 391 */
davide.aliprandi@st.com 3:c688a4acb4bf 392 int32_t STA350BW::STA350BW_SetDSPOption(uint8_t option, uint8_t state)
davide.aliprandi@st.com 3:c688a4acb4bf 393 {
davide.aliprandi@st.com 3:c688a4acb4bf 394 uint8_t tmp = 0;
davide.aliprandi@st.com 3:c688a4acb4bf 395
davide.aliprandi@st.com 3:c688a4acb4bf 396 switch (option)
davide.aliprandi@st.com 3:c688a4acb4bf 397 {
davide.aliprandi@st.com 3:c688a4acb4bf 398 case STA350BW_DSPB:
davide.aliprandi@st.com 3:c688a4acb4bf 399 {
davide.aliprandi@st.com 3:c688a4acb4bf 400 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 401 {
davide.aliprandi@st.com 3:c688a4acb4bf 402 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 403 }
davide.aliprandi@st.com 3:c688a4acb4bf 404 tmp &= ~0x04;
davide.aliprandi@st.com 3:c688a4acb4bf 405 tmp |= state << 0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 406
davide.aliprandi@st.com 3:c688a4acb4bf 407 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 408 {
davide.aliprandi@st.com 3:c688a4acb4bf 409 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 410 }
davide.aliprandi@st.com 3:c688a4acb4bf 411 break;
davide.aliprandi@st.com 3:c688a4acb4bf 412 }
davide.aliprandi@st.com 3:c688a4acb4bf 413 case STA350BW_HPB:
davide.aliprandi@st.com 3:c688a4acb4bf 414 {
davide.aliprandi@st.com 3:c688a4acb4bf 415 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 416 {
davide.aliprandi@st.com 3:c688a4acb4bf 417 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 418 }
davide.aliprandi@st.com 3:c688a4acb4bf 419 tmp &= ~0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 420 tmp |= state << 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 421
davide.aliprandi@st.com 3:c688a4acb4bf 422 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 423 {
davide.aliprandi@st.com 3:c688a4acb4bf 424 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 425 }
davide.aliprandi@st.com 3:c688a4acb4bf 426 break;
davide.aliprandi@st.com 3:c688a4acb4bf 427 }
davide.aliprandi@st.com 3:c688a4acb4bf 428 case STA350BW_DEMP:
davide.aliprandi@st.com 3:c688a4acb4bf 429 {
davide.aliprandi@st.com 3:c688a4acb4bf 430 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 431 {
davide.aliprandi@st.com 3:c688a4acb4bf 432 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 433 }
davide.aliprandi@st.com 3:c688a4acb4bf 434 tmp &= ~0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 435 tmp |= state << 0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 436
davide.aliprandi@st.com 3:c688a4acb4bf 437 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 438 {
davide.aliprandi@st.com 3:c688a4acb4bf 439 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 440 }
davide.aliprandi@st.com 3:c688a4acb4bf 441 break;
davide.aliprandi@st.com 3:c688a4acb4bf 442 }
davide.aliprandi@st.com 3:c688a4acb4bf 443 case STA350BW_BQL:
davide.aliprandi@st.com 3:c688a4acb4bf 444 {
davide.aliprandi@st.com 3:c688a4acb4bf 445 if (STA350BW_IO_Read(STA350BW_CONF_REGD, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 446 {
davide.aliprandi@st.com 3:c688a4acb4bf 447 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 448 }
davide.aliprandi@st.com 3:c688a4acb4bf 449 tmp &= ~0x08;
davide.aliprandi@st.com 3:c688a4acb4bf 450 tmp |= state << 0x04;
davide.aliprandi@st.com 3:c688a4acb4bf 451
davide.aliprandi@st.com 3:c688a4acb4bf 452 if (STA350BW_IO_Write(STA350BW_CONF_REGD, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 453 {
davide.aliprandi@st.com 3:c688a4acb4bf 454 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 455 }
davide.aliprandi@st.com 3:c688a4acb4bf 456 break;
davide.aliprandi@st.com 3:c688a4acb4bf 457 }
davide.aliprandi@st.com 3:c688a4acb4bf 458 case STA350BW_BQ5:
davide.aliprandi@st.com 3:c688a4acb4bf 459 {
davide.aliprandi@st.com 3:c688a4acb4bf 460 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 461 {
davide.aliprandi@st.com 3:c688a4acb4bf 462 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 463 }
davide.aliprandi@st.com 3:c688a4acb4bf 464 tmp &= ~0x04;
davide.aliprandi@st.com 3:c688a4acb4bf 465 tmp |= state << 0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 466
davide.aliprandi@st.com 3:c688a4acb4bf 467 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 468 {
davide.aliprandi@st.com 3:c688a4acb4bf 469 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 470 }
davide.aliprandi@st.com 3:c688a4acb4bf 471 break;
davide.aliprandi@st.com 3:c688a4acb4bf 472 }
davide.aliprandi@st.com 3:c688a4acb4bf 473 case STA350BW_BQ6:
davide.aliprandi@st.com 3:c688a4acb4bf 474 {
davide.aliprandi@st.com 3:c688a4acb4bf 475 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 476 {
davide.aliprandi@st.com 3:c688a4acb4bf 477 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 478 }
davide.aliprandi@st.com 3:c688a4acb4bf 479 tmp &= ~0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 480 tmp |= state << 0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 481
davide.aliprandi@st.com 3:c688a4acb4bf 482 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 483 {
davide.aliprandi@st.com 3:c688a4acb4bf 484 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 485 }
davide.aliprandi@st.com 3:c688a4acb4bf 486 break;
davide.aliprandi@st.com 3:c688a4acb4bf 487 }
davide.aliprandi@st.com 3:c688a4acb4bf 488 case STA350BW_BQ7:
davide.aliprandi@st.com 3:c688a4acb4bf 489 {
davide.aliprandi@st.com 3:c688a4acb4bf 490 if (STA350BW_IO_Read(STA350BW_CONFX, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 491 {
davide.aliprandi@st.com 3:c688a4acb4bf 492 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 493 }
davide.aliprandi@st.com 3:c688a4acb4bf 494 tmp &= ~0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 495 tmp |= state << 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 496
davide.aliprandi@st.com 3:c688a4acb4bf 497 if (STA350BW_IO_Write(STA350BW_CONFX, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 498 {
davide.aliprandi@st.com 3:c688a4acb4bf 499 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 500 }
davide.aliprandi@st.com 3:c688a4acb4bf 501 break;
davide.aliprandi@st.com 3:c688a4acb4bf 502 }
davide.aliprandi@st.com 3:c688a4acb4bf 503 case STA350BW_C1EQBP:
davide.aliprandi@st.com 3:c688a4acb4bf 504 {
davide.aliprandi@st.com 3:c688a4acb4bf 505 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 506 {
davide.aliprandi@st.com 3:c688a4acb4bf 507 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 508 }
davide.aliprandi@st.com 3:c688a4acb4bf 509 tmp &= ~0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 510 tmp |= state << 0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 511
davide.aliprandi@st.com 3:c688a4acb4bf 512 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 513 {
davide.aliprandi@st.com 3:c688a4acb4bf 514 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 515 }
davide.aliprandi@st.com 3:c688a4acb4bf 516 break;
davide.aliprandi@st.com 3:c688a4acb4bf 517 }
davide.aliprandi@st.com 3:c688a4acb4bf 518 case STA350BW_C2EQBP:
davide.aliprandi@st.com 3:c688a4acb4bf 519 {
davide.aliprandi@st.com 3:c688a4acb4bf 520 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 521 {
davide.aliprandi@st.com 3:c688a4acb4bf 522 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 523 }
davide.aliprandi@st.com 3:c688a4acb4bf 524 tmp &= ~0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 525 tmp |= state << 0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 526
davide.aliprandi@st.com 3:c688a4acb4bf 527 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 528 {
davide.aliprandi@st.com 3:c688a4acb4bf 529 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 530 }
davide.aliprandi@st.com 3:c688a4acb4bf 531 break;
davide.aliprandi@st.com 3:c688a4acb4bf 532 }
davide.aliprandi@st.com 3:c688a4acb4bf 533 case STA350BW_C1TCB:
davide.aliprandi@st.com 3:c688a4acb4bf 534 {
davide.aliprandi@st.com 3:c688a4acb4bf 535 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 536 {
davide.aliprandi@st.com 3:c688a4acb4bf 537 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 538 }
davide.aliprandi@st.com 3:c688a4acb4bf 539 tmp &= ~0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 540 tmp |= state << 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 541
davide.aliprandi@st.com 3:c688a4acb4bf 542 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 543 {
davide.aliprandi@st.com 3:c688a4acb4bf 544 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 545 }
davide.aliprandi@st.com 3:c688a4acb4bf 546 break;
davide.aliprandi@st.com 3:c688a4acb4bf 547 }
davide.aliprandi@st.com 3:c688a4acb4bf 548 case STA350BW_C2TCB:
davide.aliprandi@st.com 3:c688a4acb4bf 549 {
davide.aliprandi@st.com 3:c688a4acb4bf 550 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 551 {
davide.aliprandi@st.com 3:c688a4acb4bf 552 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 553 }
davide.aliprandi@st.com 3:c688a4acb4bf 554 tmp &= ~0x01;
davide.aliprandi@st.com 3:c688a4acb4bf 555 tmp |= state << 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 556
davide.aliprandi@st.com 3:c688a4acb4bf 557 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 558 {
davide.aliprandi@st.com 3:c688a4acb4bf 559 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 560 }
davide.aliprandi@st.com 3:c688a4acb4bf 561 break;
davide.aliprandi@st.com 3:c688a4acb4bf 562 }
davide.aliprandi@st.com 3:c688a4acb4bf 563 case STA350BW_C1VBP:
davide.aliprandi@st.com 3:c688a4acb4bf 564 {
davide.aliprandi@st.com 3:c688a4acb4bf 565 if (STA350BW_IO_Read(STA350BW_C1CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 566 {
davide.aliprandi@st.com 3:c688a4acb4bf 567 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 568 }
davide.aliprandi@st.com 3:c688a4acb4bf 569 tmp &= ~0x04;
davide.aliprandi@st.com 3:c688a4acb4bf 570 tmp |= state << 0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 571
davide.aliprandi@st.com 3:c688a4acb4bf 572 if (STA350BW_IO_Write(STA350BW_C1CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 573 {
davide.aliprandi@st.com 3:c688a4acb4bf 574 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 575 }
davide.aliprandi@st.com 3:c688a4acb4bf 576 break;
davide.aliprandi@st.com 3:c688a4acb4bf 577 }
davide.aliprandi@st.com 3:c688a4acb4bf 578 case STA350BW_C2VBP:
davide.aliprandi@st.com 3:c688a4acb4bf 579 {
davide.aliprandi@st.com 3:c688a4acb4bf 580 if (STA350BW_IO_Read(STA350BW_C2CFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 581 {
davide.aliprandi@st.com 3:c688a4acb4bf 582 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 583 }
davide.aliprandi@st.com 3:c688a4acb4bf 584 tmp &= ~0x04;
davide.aliprandi@st.com 3:c688a4acb4bf 585 tmp |= state << 0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 586
davide.aliprandi@st.com 3:c688a4acb4bf 587 if (STA350BW_IO_Write(STA350BW_C2CFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 588 {
davide.aliprandi@st.com 3:c688a4acb4bf 589 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 590 }
davide.aliprandi@st.com 3:c688a4acb4bf 591 break;
davide.aliprandi@st.com 3:c688a4acb4bf 592 }
davide.aliprandi@st.com 3:c688a4acb4bf 593 case STA350BW_EXT_RANGE_BQ1:
davide.aliprandi@st.com 3:c688a4acb4bf 594 {
davide.aliprandi@st.com 3:c688a4acb4bf 595 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 596 {
davide.aliprandi@st.com 3:c688a4acb4bf 597 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 598 }
davide.aliprandi@st.com 3:c688a4acb4bf 599 tmp &= ~0x03;
davide.aliprandi@st.com 3:c688a4acb4bf 600 tmp |= (state>>1);
davide.aliprandi@st.com 3:c688a4acb4bf 601
davide.aliprandi@st.com 3:c688a4acb4bf 602 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 603 {
davide.aliprandi@st.com 3:c688a4acb4bf 604 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 605 }
davide.aliprandi@st.com 3:c688a4acb4bf 606 break;
davide.aliprandi@st.com 3:c688a4acb4bf 607 }
davide.aliprandi@st.com 3:c688a4acb4bf 608 case STA350BW_EXT_RANGE_BQ2:
davide.aliprandi@st.com 3:c688a4acb4bf 609 {
davide.aliprandi@st.com 3:c688a4acb4bf 610 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 611 {
davide.aliprandi@st.com 3:c688a4acb4bf 612 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 613 }
davide.aliprandi@st.com 3:c688a4acb4bf 614 tmp &= ~0x0C;
davide.aliprandi@st.com 3:c688a4acb4bf 615 tmp |= (state>>1) << 2;
davide.aliprandi@st.com 3:c688a4acb4bf 616
davide.aliprandi@st.com 3:c688a4acb4bf 617 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 618 {
davide.aliprandi@st.com 3:c688a4acb4bf 619 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 620 }
davide.aliprandi@st.com 3:c688a4acb4bf 621 break;
davide.aliprandi@st.com 3:c688a4acb4bf 622 }
davide.aliprandi@st.com 3:c688a4acb4bf 623 case STA350BW_EXT_RANGE_BQ3:
davide.aliprandi@st.com 3:c688a4acb4bf 624 {
davide.aliprandi@st.com 3:c688a4acb4bf 625 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 626 {
davide.aliprandi@st.com 3:c688a4acb4bf 627 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 628 }
davide.aliprandi@st.com 3:c688a4acb4bf 629 tmp &= ~0x30;
davide.aliprandi@st.com 3:c688a4acb4bf 630 tmp |= (state>>1) << 4;
davide.aliprandi@st.com 3:c688a4acb4bf 631
davide.aliprandi@st.com 3:c688a4acb4bf 632 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 633 {
davide.aliprandi@st.com 3:c688a4acb4bf 634 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 635 }
davide.aliprandi@st.com 3:c688a4acb4bf 636 break;
davide.aliprandi@st.com 3:c688a4acb4bf 637 }
davide.aliprandi@st.com 3:c688a4acb4bf 638 case STA350BW_EXT_RANGE_BQ4:
davide.aliprandi@st.com 3:c688a4acb4bf 639 {
davide.aliprandi@st.com 3:c688a4acb4bf 640 if (STA350BW_IO_Read(STA350BW_CXT_B4B1, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 641 {
davide.aliprandi@st.com 3:c688a4acb4bf 642 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 643 }
davide.aliprandi@st.com 3:c688a4acb4bf 644 tmp &= ~0xC0;
davide.aliprandi@st.com 3:c688a4acb4bf 645 tmp |= (state>>1) << 6;
davide.aliprandi@st.com 3:c688a4acb4bf 646
davide.aliprandi@st.com 3:c688a4acb4bf 647 if (STA350BW_IO_Write(STA350BW_CXT_B4B1, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 648 {
davide.aliprandi@st.com 3:c688a4acb4bf 649 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 650 }
davide.aliprandi@st.com 3:c688a4acb4bf 651 break;
davide.aliprandi@st.com 3:c688a4acb4bf 652 }
davide.aliprandi@st.com 3:c688a4acb4bf 653 case STA350BW_EXT_RANGE_BQ5:
davide.aliprandi@st.com 3:c688a4acb4bf 654 {
davide.aliprandi@st.com 3:c688a4acb4bf 655 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 656 {
davide.aliprandi@st.com 3:c688a4acb4bf 657 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 658 }
davide.aliprandi@st.com 3:c688a4acb4bf 659 tmp &= ~0x03;
davide.aliprandi@st.com 3:c688a4acb4bf 660 tmp |= (state>>1);
davide.aliprandi@st.com 3:c688a4acb4bf 661
davide.aliprandi@st.com 3:c688a4acb4bf 662 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 663 {
davide.aliprandi@st.com 3:c688a4acb4bf 664 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 665 }
davide.aliprandi@st.com 3:c688a4acb4bf 666 break;
davide.aliprandi@st.com 3:c688a4acb4bf 667 }
davide.aliprandi@st.com 3:c688a4acb4bf 668 case STA350BW_EXT_RANGE_BQ6:
davide.aliprandi@st.com 3:c688a4acb4bf 669 {
davide.aliprandi@st.com 3:c688a4acb4bf 670 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 671 {
davide.aliprandi@st.com 3:c688a4acb4bf 672 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 673 }
davide.aliprandi@st.com 3:c688a4acb4bf 674 tmp &= ~0x0C;
davide.aliprandi@st.com 3:c688a4acb4bf 675 tmp |= (state>>1) << 2;
davide.aliprandi@st.com 3:c688a4acb4bf 676
davide.aliprandi@st.com 3:c688a4acb4bf 677 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 678 {
davide.aliprandi@st.com 3:c688a4acb4bf 679 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 680 }
davide.aliprandi@st.com 3:c688a4acb4bf 681 break;
davide.aliprandi@st.com 3:c688a4acb4bf 682 }
davide.aliprandi@st.com 3:c688a4acb4bf 683 case STA350BW_EXT_RANGE_BQ7:
davide.aliprandi@st.com 3:c688a4acb4bf 684 {
davide.aliprandi@st.com 3:c688a4acb4bf 685 if (STA350BW_IO_Read(STA350BW_CXT_B7B5, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 686 {
davide.aliprandi@st.com 3:c688a4acb4bf 687 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 688 }
davide.aliprandi@st.com 3:c688a4acb4bf 689 tmp &= ~0x30;
davide.aliprandi@st.com 3:c688a4acb4bf 690 tmp |= (state>>1) << 4;
davide.aliprandi@st.com 3:c688a4acb4bf 691
davide.aliprandi@st.com 3:c688a4acb4bf 692 if (STA350BW_IO_Write(STA350BW_CXT_B7B5, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 693 {
davide.aliprandi@st.com 3:c688a4acb4bf 694 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 695 }
davide.aliprandi@st.com 3:c688a4acb4bf 696 break;
davide.aliprandi@st.com 3:c688a4acb4bf 697 }
davide.aliprandi@st.com 3:c688a4acb4bf 698 case STA350BW_RAM_BANK_SELECT:
davide.aliprandi@st.com 3:c688a4acb4bf 699 {
davide.aliprandi@st.com 3:c688a4acb4bf 700 if (STA350BW_IO_Read(STA350BW_EQCFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 701 {
davide.aliprandi@st.com 3:c688a4acb4bf 702 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 703 }
davide.aliprandi@st.com 3:c688a4acb4bf 704 tmp &= ~0x03;
davide.aliprandi@st.com 3:c688a4acb4bf 705 tmp |= state;
davide.aliprandi@st.com 3:c688a4acb4bf 706
davide.aliprandi@st.com 3:c688a4acb4bf 707 if (STA350BW_IO_Write(STA350BW_EQCFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 708 {
davide.aliprandi@st.com 3:c688a4acb4bf 709 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 710 }
davide.aliprandi@st.com 3:c688a4acb4bf 711 break;
davide.aliprandi@st.com 3:c688a4acb4bf 712 }
davide.aliprandi@st.com 3:c688a4acb4bf 713 }
davide.aliprandi@st.com 3:c688a4acb4bf 714 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 715 }
davide.aliprandi@st.com 3:c688a4acb4bf 716
davide.aliprandi@st.com 3:c688a4acb4bf 717 /**
davide.aliprandi@st.com 3:c688a4acb4bf 718 * @brief private function for writing a RAM set.
davide.aliprandi@st.com 3:c688a4acb4bf 719 * @param RAM_block: ram block to be written.
davide.aliprandi@st.com 3:c688a4acb4bf 720 * @param RAM_address: ram address to be written.
davide.aliprandi@st.com 3:c688a4acb4bf 721 * @param *pIn: pointer to the desired value to be write.
davide.aliprandi@st.com 3:c688a4acb4bf 722 * @retval COMPONENT_OK if correct setup, COMPONENT_ERROR otherwise
davide.aliprandi@st.com 3:c688a4acb4bf 723 */
davide.aliprandi@st.com 3:c688a4acb4bf 724 int32_t STA350BW::STA350BW_WriteRAMSet(uint8_t RAM_block, uint8_t RAM_address, uint8_t * pIn)
davide.aliprandi@st.com 3:c688a4acb4bf 725 {
davide.aliprandi@st.com 3:c688a4acb4bf 726 uint8_t tmp = 0x00;
davide.aliprandi@st.com 3:c688a4acb4bf 727 /*choose block*/
davide.aliprandi@st.com 3:c688a4acb4bf 728 if (STA350BW_IO_Read(STA350BW_EQCFG, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 729 {
davide.aliprandi@st.com 3:c688a4acb4bf 730 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 731 }
davide.aliprandi@st.com 3:c688a4acb4bf 732 tmp &= ~0x03;
davide.aliprandi@st.com 3:c688a4acb4bf 733 RAM_block &= 0x03;
davide.aliprandi@st.com 3:c688a4acb4bf 734 tmp |= RAM_block;
davide.aliprandi@st.com 3:c688a4acb4bf 735 if (STA350BW_IO_Write(STA350BW_EQCFG, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 736 {
davide.aliprandi@st.com 3:c688a4acb4bf 737 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 738 }
davide.aliprandi@st.com 3:c688a4acb4bf 739 /*set address*/
davide.aliprandi@st.com 3:c688a4acb4bf 740 if (STA350BW_IO_Read(STA350BW_CFADDR, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 741 {
davide.aliprandi@st.com 3:c688a4acb4bf 742 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 743 }
davide.aliprandi@st.com 3:c688a4acb4bf 744 tmp &= ~0x3F;
davide.aliprandi@st.com 3:c688a4acb4bf 745 RAM_address &= 0x3F;
davide.aliprandi@st.com 3:c688a4acb4bf 746 tmp |= RAM_address;
davide.aliprandi@st.com 3:c688a4acb4bf 747 if (STA350BW_IO_Write(STA350BW_CFADDR, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 748 {
davide.aliprandi@st.com 3:c688a4acb4bf 749 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 750 }
davide.aliprandi@st.com 3:c688a4acb4bf 751 /*write*/
davide.aliprandi@st.com 3:c688a4acb4bf 752 if (STA350BW_IO_Write(STA350BW_B1CF1, pIn[2]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 753 {
davide.aliprandi@st.com 3:c688a4acb4bf 754 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 755 }
davide.aliprandi@st.com 3:c688a4acb4bf 756 if (STA350BW_IO_Write(STA350BW_B1CF2, pIn[1]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 757 {
davide.aliprandi@st.com 3:c688a4acb4bf 758 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 759 }
davide.aliprandi@st.com 3:c688a4acb4bf 760 if (STA350BW_IO_Write(STA350BW_B1CF3, pIn[0]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 761 {
davide.aliprandi@st.com 3:c688a4acb4bf 762 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 763 }
davide.aliprandi@st.com 3:c688a4acb4bf 764 if (STA350BW_IO_Write(STA350BW_B2CF1, pIn[6]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 765 {
davide.aliprandi@st.com 3:c688a4acb4bf 766 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 767 }
davide.aliprandi@st.com 3:c688a4acb4bf 768 if (STA350BW_IO_Write(STA350BW_B2CF2, pIn[5]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 769 {
davide.aliprandi@st.com 3:c688a4acb4bf 770 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 771 }
davide.aliprandi@st.com 3:c688a4acb4bf 772 if (STA350BW_IO_Write(STA350BW_B2CF3, pIn[4]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 773 {
davide.aliprandi@st.com 3:c688a4acb4bf 774 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 775 }
davide.aliprandi@st.com 3:c688a4acb4bf 776 if (STA350BW_IO_Write(STA350BW_A1CF1, pIn[10]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 777 {
davide.aliprandi@st.com 3:c688a4acb4bf 778 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 779 }
davide.aliprandi@st.com 3:c688a4acb4bf 780 if (STA350BW_IO_Write(STA350BW_A1CF2, pIn[9]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 781 {
davide.aliprandi@st.com 3:c688a4acb4bf 782 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 783 }
davide.aliprandi@st.com 3:c688a4acb4bf 784 if (STA350BW_IO_Write(STA350BW_A1CF3, pIn[8]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 785 {
davide.aliprandi@st.com 3:c688a4acb4bf 786 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 787 }
davide.aliprandi@st.com 3:c688a4acb4bf 788 if (STA350BW_IO_Write(STA350BW_A2CF1, pIn[14]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 789 {
davide.aliprandi@st.com 3:c688a4acb4bf 790 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 791 }
davide.aliprandi@st.com 3:c688a4acb4bf 792 if (STA350BW_IO_Write(STA350BW_A2CF2, pIn[13]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 793 {
davide.aliprandi@st.com 3:c688a4acb4bf 794 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 795 }
davide.aliprandi@st.com 3:c688a4acb4bf 796 if (STA350BW_IO_Write(STA350BW_A2CF3, pIn[12]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 797 {
davide.aliprandi@st.com 3:c688a4acb4bf 798 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 799 }
davide.aliprandi@st.com 3:c688a4acb4bf 800 if (STA350BW_IO_Write(STA350BW_B0CF1, pIn[18]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 801 {
davide.aliprandi@st.com 3:c688a4acb4bf 802 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 803 }
davide.aliprandi@st.com 3:c688a4acb4bf 804 if (STA350BW_IO_Write(STA350BW_B0CF2, pIn[17]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 805 {
davide.aliprandi@st.com 3:c688a4acb4bf 806 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 807 }
davide.aliprandi@st.com 3:c688a4acb4bf 808 if (STA350BW_IO_Write(STA350BW_B0CF3, pIn[16]) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 809 {
davide.aliprandi@st.com 3:c688a4acb4bf 810 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 811 }
davide.aliprandi@st.com 3:c688a4acb4bf 812 /*Set WA PIN*/
davide.aliprandi@st.com 3:c688a4acb4bf 813 if (STA350BW_IO_Read(STA350BW_CFUD, &tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 814 {
davide.aliprandi@st.com 3:c688a4acb4bf 815 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 816 }
davide.aliprandi@st.com 3:c688a4acb4bf 817 tmp &= ~0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 818 tmp = 0x02;
davide.aliprandi@st.com 3:c688a4acb4bf 819
davide.aliprandi@st.com 3:c688a4acb4bf 820 if (STA350BW_IO_Write(STA350BW_CFUD, tmp) != 0)
davide.aliprandi@st.com 3:c688a4acb4bf 821 {
davide.aliprandi@st.com 3:c688a4acb4bf 822 return COMPONENT_ERROR;
davide.aliprandi@st.com 3:c688a4acb4bf 823 }
davide.aliprandi@st.com 3:c688a4acb4bf 824 return COMPONENT_OK;
davide.aliprandi@st.com 3:c688a4acb4bf 825 }
davide.aliprandi@st.com 3:c688a4acb4bf 826
davide.aliprandi@st.com 3:c688a4acb4bf 827 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/