xref: /OK3568_Linux_fs/external/rkwifibt/drivers/infineon/otpdefs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * otpdefs.h SROM/OTP definitions.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Portions of this code are copyright (c) 2021 Cypress Semiconductor Corporation
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright 2021 Broadcom
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * This program is the proprietary software of Broadcom and/or
9*4882a593Smuzhiyun  * its licensors, and may only be used, duplicated, modified or distributed
10*4882a593Smuzhiyun  * pursuant to the terms and conditions of a separate, written license
11*4882a593Smuzhiyun  * agreement executed between you and Broadcom (an "Authorized License").
12*4882a593Smuzhiyun  * Except as set forth in an Authorized License, Broadcom grants no license
13*4882a593Smuzhiyun  * (express or implied), right to use, or waiver of any kind with respect to
14*4882a593Smuzhiyun  * the Software, and Broadcom expressly reserves all rights in and to the
15*4882a593Smuzhiyun  * Software and all intellectual property rights therein.  IF YOU HAVE NO
16*4882a593Smuzhiyun  * AUTHORIZED LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY
17*4882a593Smuzhiyun  * WAY, AND SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE ALL USE OF
18*4882a593Smuzhiyun  * THE SOFTWARE.
19*4882a593Smuzhiyun  *
20*4882a593Smuzhiyun  * Except as expressly set forth in the Authorized License,
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * 1. This program, including its structure, sequence and organization,
23*4882a593Smuzhiyun  * constitutes the valuable trade secrets of Broadcom, and you shall use
24*4882a593Smuzhiyun  * all reasonable efforts to protect the confidentiality thereof, and to
25*4882a593Smuzhiyun  * use this information only in connection with your use of Broadcom
26*4882a593Smuzhiyun  * integrated circuit products.
27*4882a593Smuzhiyun  *
28*4882a593Smuzhiyun  * 2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED
29*4882a593Smuzhiyun  * "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES,
30*4882a593Smuzhiyun  * REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR
31*4882a593Smuzhiyun  * OTHERWISE, WITH RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY
32*4882a593Smuzhiyun  * DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,
33*4882a593Smuzhiyun  * NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES,
34*4882a593Smuzhiyun  * ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
35*4882a593Smuzhiyun  * CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING
36*4882a593Smuzhiyun  * OUT OF USE OR PERFORMANCE OF THE SOFTWARE.
37*4882a593Smuzhiyun  *
38*4882a593Smuzhiyun  * 3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL
39*4882a593Smuzhiyun  * BROADCOM OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL,
40*4882a593Smuzhiyun  * SPECIAL, INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR
41*4882a593Smuzhiyun  * IN ANY WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
42*4882a593Smuzhiyun  * IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (ii)
43*4882a593Smuzhiyun  * ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE ITSELF
44*4882a593Smuzhiyun  * OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY
45*4882a593Smuzhiyun  * NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.
46*4882a593Smuzhiyun  *
47*4882a593Smuzhiyun  * <<Broadcom-WL-IPTag/Open:>>
48*4882a593Smuzhiyun  *
49*4882a593Smuzhiyun  * $Id$
50*4882a593Smuzhiyun  */
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #ifndef _OTPDEFS_H_
53*4882a593Smuzhiyun #define _OTPDEFS_H_
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /* SFLASH */
56*4882a593Smuzhiyun #define SFLASH_ADDRESS_OFFSET_4368 0x1C000000u
57*4882a593Smuzhiyun #define SFLASH_SKU_OFFSET_4368 0xEu
58*4882a593Smuzhiyun #define SFLASH_MACADDR_OFFSET_4368 0x4u
59*4882a593Smuzhiyun /*
60*4882a593Smuzhiyun  * In sflash based chips, first word in sflash says the length.
61*4882a593Smuzhiyun  * So only default value is defined here. Actual length is read
62*4882a593Smuzhiyun  * from sflash in dhdpcie_srom_sflash_health_chk
63*4882a593Smuzhiyun  * 0x0521 * 2 .x2 since length says number of words.
64*4882a593Smuzhiyun  */
65*4882a593Smuzhiyun #define SFLASH_LEN_4368 0xA42u
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #define SROM_ADDRESS_OFFSET_4355 0x0800u
68*4882a593Smuzhiyun #define SROM_ADDRESS_OFFSET_4364 0xA000u
69*4882a593Smuzhiyun #define SROM_ADDRESS_OFFSET_4377 0x0800u
70*4882a593Smuzhiyun #define SROM_ADDRESS(sih, offset) (SI_ENUM_BASE(sih) + (offset))
71*4882a593Smuzhiyun #define SROM_MACADDR_OFFSET_4355 0x84u
72*4882a593Smuzhiyun #define SROM_MACADDR_OFFSET_4364 0x82u
73*4882a593Smuzhiyun #define SROM_MACADDR_OFFSET_4377 0xE2u
74*4882a593Smuzhiyun #define SROM_SKU_OFFSET_4355 0x8Au
75*4882a593Smuzhiyun #define SROM_SKU_OFFSET_4364 0x8Cu
76*4882a593Smuzhiyun #define SROM_SKU_OFFSET_4377 0xECu
77*4882a593Smuzhiyun #define SROM_CAL_SIG1_OFFSET_4355 0xB8u
78*4882a593Smuzhiyun #define SROM_CAL_SIG2_OFFSET_4355 0xBAu
79*4882a593Smuzhiyun #define SROM_CAL_SIG1_OFFSET_4364 0xA0u
80*4882a593Smuzhiyun #define SROM_CAL_SIG2_OFFSET_4364 0xA2u
81*4882a593Smuzhiyun #define SROM_CAL_SIG1 0x4c42u
82*4882a593Smuzhiyun #define SROM_CAL_SIG2 0x424fu
83*4882a593Smuzhiyun #define SROM_LEN_4355 512u
84*4882a593Smuzhiyun #define SROM_LEN_4364 2048u
85*4882a593Smuzhiyun #define SROM_LEN_4377 2048u
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #define OTP_USER_AREA_OFFSET_4355 0xC0u
88*4882a593Smuzhiyun #define OTP_USER_AREA_OFFSET_4364 0xC0u
89*4882a593Smuzhiyun #define OTP_USER_AREA_OFFSET_4368 0x120u
90*4882a593Smuzhiyun #define OTP_USER_AREA_OFFSET_4377 0x120u
91*4882a593Smuzhiyun #define OTP_OFFSET_4368 0x5000u
92*4882a593Smuzhiyun #define OTP_OFFSET_4377 0x11000u
93*4882a593Smuzhiyun #define OTP_CTRL1_VAL 0xFA0000
94*4882a593Smuzhiyun #define OTP_ADDRESS(sih, offset) (SI_ENUM_BASE(sih) + (offset))
95*4882a593Smuzhiyun #define OTP_VERSION_TUPLE_ID 0x15
96*4882a593Smuzhiyun #define OTP_VENDOR_TUPLE_ID 0x80
97*4882a593Smuzhiyun #define OTP_CIS_REGION_END_TUPLE_ID 0XFF
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #define PCIE_CTRL_REG_ADDR(sih) (SI_ENUM_BASE(sih) + 0x3000)
100*4882a593Smuzhiyun #define SPROM_CTRL_REG_ADDR(sih) (SI_ENUM_BASE(sih) + CC_SROM_CTRL)
101*4882a593Smuzhiyun #define SPROM_CTRL_OPCODE_READ_MASK 0x9FFFFFFF
102*4882a593Smuzhiyun #define SPROM_CTRL_START_BUSY_MASK 0x80000000
103*4882a593Smuzhiyun #define SPROM_ADDR(sih) (SI_ENUM_BASE(sih) + CC_SROM_ADDRESS)
104*4882a593Smuzhiyun #define SPROM_DATA(sih) (SI_ENUM_BASE(sih) + CC_SROM_DATA)
105*4882a593Smuzhiyun #define OTP_CTRL1_REG_ADDR(sih) (SI_ENUM_BASE(sih) + 0xF4)
106*4882a593Smuzhiyun #define PMU_MINRESMASK_REG_ADDR(sih) (SI_ENUM_BASE(sih) + MINRESMASKREG)
107*4882a593Smuzhiyun #define CHIP_COMMON_STATUS_REG_ADDR(sih) (SI_ENUM_BASE(sih) + CC_CHIPST)
108*4882a593Smuzhiyun #define CHIP_COMMON_CLKDIV2_ADDR(sih) (SI_ENUM_BASE(sih) + CC_CLKDIV2)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define CC_CLKDIV2_SPROMDIV_MASK 0x7u
111*4882a593Smuzhiyun #define CC_CLKDIV2_SPROMDIV_VAL 0X4u
112*4882a593Smuzhiyun #define CC_CHIPSTATUS_STRAP_BTUART_MASK 0x40u
113*4882a593Smuzhiyun #define PMU_OTP_PWR_ON_MASK 0xC47
114*4882a593Smuzhiyun #define PMU_PWRUP_DELAY 500 /* in us */
115*4882a593Smuzhiyun #define DONGLE_TREFUP_PROGRAM_DELAY 5000 /* 5ms in us */
116*4882a593Smuzhiyun #define SPROM_BUSY_POLL_DELAY 5 /* 5us */
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun typedef enum {
119*4882a593Smuzhiyun 	BCM4355_IDX = 0,
120*4882a593Smuzhiyun 	BCM4364_IDX,
121*4882a593Smuzhiyun 	BCM4368_IDX,
122*4882a593Smuzhiyun 	BCM4377_IDX,
123*4882a593Smuzhiyun 	BCMMAX_IDX
124*4882a593Smuzhiyun } chip_idx_t;
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun typedef enum {
127*4882a593Smuzhiyun 	BCM4368_BTOP_IDX,
128*4882a593Smuzhiyun 	BCM4377_BTOP_IDX,
129*4882a593Smuzhiyun 	BCMMAX_BTOP_IDX
130*4882a593Smuzhiyun } chip_idx_btop_t;
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun typedef enum {
133*4882a593Smuzhiyun 	BCM4368_SFLASH_IDX,
134*4882a593Smuzhiyun 	BCMMAX_SFLASH_IDX
135*4882a593Smuzhiyun } chip_idx_sflash_t;
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun extern uint32 otp_addr_offsets[];
138*4882a593Smuzhiyun extern uint32 otp_usrarea_offsets[];
139*4882a593Smuzhiyun extern uint32 sku_offsets[];
140*4882a593Smuzhiyun extern uint32 srf_addr_offsets[];
141*4882a593Smuzhiyun extern uint32 supported_chips[];
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun char *dhd_get_plat_sku(void);
144*4882a593Smuzhiyun #endif /* _OTPDEFS_H */
145