sd + skpeaker
Dependencies: ST_I2S X_NUCLEO_COMMON
Fork of X_NUCLEO_CCA01M1 by
Components/STA350BW/STA350BW.cpp@5:2d450bbee471, 2017-04-21 (annotated)
- 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?
User | Revision | Line number | New 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>© 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****/ |