Lines Matching +full:chip +full:- +full:to +full:- +full:chip
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2 /* Copyright(c) 2019-2020 Realtek Corporation
51 if (rtwdev->chip->chip_id != RTL8852A)
67 return -EBUSY;
80 enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
81 struct rtw89_hal *hal = &rtwdev->hal;
93 if (chip_id == RTL8852B && hal->cv == CHIP_CAV)
99 enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
100 struct rtw89_hal *hal = &rtwdev->hal;
105 if (chip_id == RTL8852B && hal->cv == CHIP_CAV)
134 return -EBUSY;
179 rtw89_warn(rtwdev, "failed to read dav efuse\n");
226 u32 physical_size = rtwdev->chip->physical_efuse_size;
227 u32 logical_size = rtwdev->chip->logical_efuse_size;
228 u8 sec_ctrl_size = rtwdev->chip->sec_ctrl_efuse_size;
239 while (phy_idx < physical_size - sec_ctrl_size) {
254 if (phy_idx + 1 > physical_size - sec_ctrl_size - 1 ||
256 return -EINVAL;
268 u32 phy_size = rtwdev->chip->physical_efuse_size;
269 u32 log_size = rtwdev->chip->logical_efuse_size;
270 u32 dav_phy_size = rtwdev->chip->dav_phy_efuse_size;
271 u32 dav_log_size = rtwdev->chip->dav_log_efuse_size;
280 rtwdev->efuse.valid = true;
282 rtw89_warn(rtwdev, "failed to check efuse autoload\n");
292 ret = -ENOMEM;
298 rtw89_warn(rtwdev, "failed to dump efuse physical map\n");
303 rtw89_warn(rtwdev, "failed to dump efuse dav physical map\n");
310 rtw89_warn(rtwdev, "failed to dump efuse logical map\n");
315 rtw89_warn(rtwdev, "failed to dump efuse dav logical map\n");
321 ret = rtwdev->chip->ops->read_efuse(rtwdev, log_map, RTW89_EFUSE_BLOCK_IGNORE);
323 rtw89_warn(rtwdev, "failed to read efuse map\n");
337 u32 phycap_addr = rtwdev->chip->phycap_addr;
338 u32 phycap_size = rtwdev->chip->phycap_size;
347 return -ENOMEM;
352 rtw89_warn(rtwdev, "failed to dump phycap map\n");
356 ret = rtwdev->chip->ops->read_phycap(rtwdev, phycap_map);
358 rtw89_warn(rtwdev, "failed to read phycap map\n");
379 return -ENOENT;
414 const struct rtw89_chip_info *chip = rtwdev->chip;
415 struct rtw89_fw_secure *sec = &rtwdev->fw.sec;
418 if (chip->chip_id == RTL8852B && b1 == 0xFF && b2 == 0x6E) {
420 sec->mss_cust_idx = 0;
421 sec->mss_key_num = 0;
427 sec->mss_cust_idx = 0x1F - (u8_get_bits(b1, EFUSE_B1_MSSCUSTIDX0_MASK) |
429 sec->mss_key_num = 0xF - u8_get_bits(b2, EFUSE_B2_MSSKEYNUM_MASK);
432 sec->mss_dev_type = get_mss_dev_type_idx(rtwdev, mss_dev_type);
433 if (sec->mss_dev_type == RTW89_FW_MSS_DEV_TYPE_FWSEC_INV) {
435 return -ENOENT;
438 sec->can_mss_v1 = true;
446 struct rtw89_fw_secure *sec = &rtwdev->fw.sec;
452 externalPN = 0xFF - u8_get_bits(b1, EFUSE_B1_EXTERNALPN_MASK);
453 customer = 0xF - u8_get_bits(b2, EFUSE_B2_CUSTOMER_MASK);
454 serialNum = 0x7 - u8_get_bits(b2, EFUSE_B2_SERIALNUM_MASK);
460 sec->mss_idx = i;
461 sec->can_mss_v0 = true;
466 return -ENOENT;
471 struct rtw89_fw_secure *sec = &rtwdev->fw.sec;
481 rtw89_warn(rtwdev, "failed to dump secsel map\n");
493 if (!sec->can_mss_v1 && !sec->can_mss_v0)
496 sec->secure_boot = true;
501 sec->secure_boot, sec->can_mss_v0, sec->can_mss_v1,
502 sec->mss_dev_type, sec->mss_cust_idx,
503 sec->mss_key_num, sec->mss_idx);