1 /******************************************************************************
2  *  Filename:       setup.c
3  *
4  *  Description:    Setup file for CC23x0R5 devices.
5  *
6  *  Copyright (c) 2022-2023 Texas Instruments Incorporated
7  *
8  *  Redistribution and use in source and binary forms, with or without
9  *  modification, are permitted provided that the following conditions are met:
10  *
11  *  1) Redistributions of source code must retain the above copyright notice,
12  *     this list of conditions and the following disclaimer.
13  *
14  *  2) Redistributions in binary form must reproduce the above copyright notice,
15  *     this list of conditions and the following disclaimer in the documentation
16  *     and/or other materials provided with the distribution.
17  *
18  *  3) Neither the name of the copyright holder nor the names of its
19  *     contributors may be used to endorse or promote products derived from this
20  *     software without specific prior written permission.
21  *
22  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
26  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  *  POSSIBILITY OF SUCH DAMAGE.
33  *
34  ******************************************************************************/
35 #include "../inc/hw_types.h"
36 #include "../inc/hw_ckmd.h"
37 #include "../inc/hw_fcfg.h"
38 #include "setup.h"
39 
SetupTrimDevice(void)40 void SetupTrimDevice(void)
41 {
42     uint8_t trimState;
43 
44     // Read out the layout revision number
45     if (fcfg->appTrims.revision >= 4)
46     {
47         // Hard coded address for fcfg->appTrimsExt.cc23x0r5.ateFtRev.trimState
48         // to be independent of fcfg layout revision
49         trimState = HWREGB(0x4E00032F);
50     }
51     else
52     {
53         // Hard coded address for fcfg->appTrimsExt.cc23x0r5.ateFtRev.trimState
54         // to be independent of fcfg layout revision
55         trimState = HWREGB(0x4E0003AF);
56     }
57 
58     if (trimState > 0xFC)
59     {
60         // Override HFXT trims on state D and earlier devices. Without this
61         // override, HFXT startup will alternate between 20us and 1.5ms.
62         HWREG(CKMD_BASE + CKMD_O_HFXTINIT) = (0x23 << CKMD_HFXTINIT_Q1CAP_S) | (0x23 << CKMD_HFXTINIT_Q2CAP_S) |
63                                              (0x8 << CKMD_HFXTINIT_IREF_S) | (0x12 << CKMD_HFXTINIT_AMPTHR_S) |
64                                              (0x7F << CKMD_HFXTINIT_IDAC_S);
65 
66         HWREG(CKMD_BASE + CKMD_O_HFXTTARG) = (0x23 << CKMD_HFXTTARG_Q1CAP_S) | (0x23 << CKMD_HFXTTARG_Q2CAP_S) |
67                                              (0x3 << CKMD_HFXTTARG_IREF_S) | (0x12 << CKMD_HFXTTARG_AMPTHR_S) |
68                                              (0x7F << CKMD_HFXTTARG_IDAC_S) | (0x1 << CKMD_HFXTTARG_AMPHYST_S);
69     }
70 }
71