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