tree: https://github.com/frank-w/BPI-R2-4.14 5.14-otg head: f3b07278bea4aa5050ab2f975a93fd20ef65a5ff commit: daf840cab15926e075953cf836e903114868c074 [8/30] mt6625l: add changes outside driver dir config: arm-buildonly-randconfig-r003-20210827 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project ea08c4cd1c0869ec5024a8bb3f5cdf06ab03ae83) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://github.com/frank-w/BPI-R2-4.14/commit/daf840cab15926e075953cf836e903114868c074 git remote add frank-w-bpi-r2-4.14 https://github.com/frank-w/BPI-R2-4.14 git fetch --no-tags frank-w-bpi-r2-4.14 5.14-otg git checkout daf840cab15926e075953cf836e903114868c074 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:191:6: error: no previous prototype for function 'mtk_wcn_consys_power_on' [-Werror,-Wmissing-prototypes] VOID mtk_wcn_consys_power_on(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:191:1: note: declare 'static' if the function is not intended to be used outside of this translation unit VOID mtk_wcn_consys_power_on(VOID) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:207:6: error: no previous prototype for function 'mtk_wcn_consys_power_off' [-Werror,-Wmissing-prototypes] VOID mtk_wcn_consys_power_off(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:207:1: note: declare 'static' if the function is not intended to be used outside of this translation unit VOID mtk_wcn_consys_power_off(VOID) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:224:7: error: no previous prototype for function 'mtk_wcn_consys_hw_reg_ctrl' [-Werror,-Wmissing-prototypes] INT32 mtk_wcn_consys_hw_reg_ctrl(UINT32 on, UINT32 co_clock_type) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:224:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 mtk_wcn_consys_hw_reg_ctrl(UINT32 on, UINT32 co_clock_type) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:335:7: error: no previous prototype for function 'mtk_wcn_consys_hw_gpio_ctrl' [-Werror,-Wmissing-prototypes] INT32 mtk_wcn_consys_hw_gpio_ctrl(UINT32 on) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:335:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 mtk_wcn_consys_hw_gpio_ctrl(UINT32 on) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:539:7: error: no previous prototype for function 'mtk_wcn_consys_hw_restore' [-Werror,-Wmissing-prototypes] INT32 mtk_wcn_consys_hw_restore(struct device *device) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:539:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 mtk_wcn_consys_hw_restore(struct device *device) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:592:5: error: no previous prototype for function 'reserve_memory_consys_fn' [-Werror,-Wmissing-prototypes] int reserve_memory_consys_fn(struct reserved_mem *rmem) ^ drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c:592:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int reserve_memory_consys_fn(struct reserved_mem *rmem) ^ static 6 errors generated. -- static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1303:7: error: no previous prototype for function 'wmt_dev_dbg_remove' [-Werror,-Wmissing-prototypes] INT32 wmt_dev_dbg_remove(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1303:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 wmt_dev_dbg_remove(VOID) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1376:31: error: unused variable 'wmt_aee_fops' [-Werror,-Wunused-variable] static const struct proc_ops wmt_aee_fops = { ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1374:7: error: no previous prototype for function 'wmt_dev_proc_for_aee_setup' [-Werror,-Wmissing-prototypes] INT32 wmt_dev_proc_for_aee_setup(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1374:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 wmt_dev_proc_for_aee_setup(VOID) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1390:7: error: no previous prototype for function 'wmt_dev_proc_for_aee_remove' [-Werror,-Wmissing-prototypes] INT32 wmt_dev_proc_for_aee_remove(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1390:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 wmt_dev_proc_for_aee_remove(VOID) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1435:7: error: no previous prototype for function 'wmt_dev_read_file' [-Werror,-Wmissing-prototypes] INT32 wmt_dev_read_file(PUINT8 pName, const PPUINT8 ppBufPtr, INT32 offset, INT32 padSzBuf) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1435:1: note: declare 'static' if the function is not intended to be used outside of this translation unit INT32 wmt_dev_read_file(PUINT8 pName, const PPUINT8 ppBufPtr, INT32 offset, INT32 padSzBuf) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1597:14: error: no previous prototype for function 'wmt_dev_is_file_exist' [-Werror,-Wmissing-prototypes] MTK_WCN_BOOL wmt_dev_is_file_exist(PUINT8 pFileName) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1597:1: note: declare 'static' if the function is not intended to be used outside of this translation unit MTK_WCN_BOOL wmt_dev_is_file_exist(PUINT8 pFileName) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1645:14: error: no previous prototype for function 'wmt_dev_tra_bitf_update' [-Werror,-Wmissing-prototypes] extern INT32 wmt_dev_tra_bitf_update(void) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1645:8: note: declare 'static' if the function is not intended to be used outside of this translation unit extern INT32 wmt_dev_tra_bitf_update(void) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1703:6: error: no previous prototype for function 'wmt_dev_tm_temp_query' [-Werror,-Wmissing-prototypes] long wmt_dev_tm_temp_query(void) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1703:1: note: declare 'static' if the function is not intended to be used outside of this translation unit long wmt_dev_tm_temp_query(void) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1801:9: error: no previous prototype for function 'WMT_write' [-Werror,-Wmissing-prototypes] ssize_t WMT_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1801:1: note: declare 'static' if the function is not intended to be used outside of this translation unit ssize_t WMT_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1834:9: error: no previous prototype for function 'WMT_read' [-Werror,-Wmissing-prototypes] ssize_t WMT_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1834:1: note: declare 'static' if the function is not intended to be used outside of this translation unit ssize_t WMT_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1865:14: error: no previous prototype for function 'WMT_poll' [-Werror,-Wmissing-prototypes] unsigned int WMT_poll(struct file *filp, poll_table *wait) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1865:1: note: declare 'static' if the function is not intended to be used outside of this translation unit unsigned int WMT_poll(struct file *filp, poll_table *wait) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1985:11: error: variable 'u4Wait' set but not used [-Werror,-Wunused-but-set-variable] UINT32 u4Wait; ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2154:21: error: variable 'pTemp' set but not used [-Werror,-Wunused-but-set-variable] P_WMT_PATCH_INFO pTemp = NULL; ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1885:6: error: no previous prototype for function 'WMT_unlocked_ioctl' [-Werror,-Wmissing-prototypes] long WMT_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:1885:1: note: declare 'static' if the function is not intended to be used outside of this translation unit long WMT_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2368:6: error: no previous prototype for function 'wmt_dev_bgw_desense_init' [-Werror,-Wmissing-prototypes] void wmt_dev_bgw_desense_init(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2368:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void wmt_dev_bgw_desense_init(VOID) ^ static drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2373:6: error: no previous prototype for function 'wmt_dev_bgw_desense_deinit' [-Werror,-Wmissing-prototypes] void wmt_dev_bgw_desense_deinit(VOID) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2373:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void wmt_dev_bgw_desense_deinit(VOID) ^ static >> drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2544:5: error: no previous prototype for function 'mtk_wcn_soc_common_drv_init' [-Werror,-Wmissing-prototypes] int mtk_wcn_soc_common_drv_init(void) ^ drivers/misc/mediatek/connectivity/common/conn_soc/linux/pri/wmt_dev.c:2544:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int mtk_wcn_soc_common_drv_init(void) ^ static fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. vim +/mtk_wcn_consys_power_on +191 drivers/misc/mediatek/connectivity/common/conn_soc/mt7623/mtk_wcn_consys_hw.c 2b190f4faaa462 Frank Wunderlich 2021-07-12 190 2b190f4faaa462 Frank Wunderlich 2021-07-12 @191 VOID mtk_wcn_consys_power_on(VOID) 2b190f4faaa462 Frank Wunderlich 2021-07-12 192 { 2b190f4faaa462 Frank Wunderlich 2021-07-12 193 INT32 iRet = -1; 2b190f4faaa462 Frank Wunderlich 2021-07-12 194 iRet = pm_runtime_get_sync(&my_pdev->dev); 2b190f4faaa462 Frank Wunderlich 2021-07-12 195 if (iRet) 2b190f4faaa462 Frank Wunderlich 2021-07-12 196 WMT_PLAT_ERR_FUNC("pm_runtime_get_sync() fail(%d)\n", iRet); 2b190f4faaa462 Frank Wunderlich 2021-07-12 197 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 198 WMT_PLAT_INFO_FUNC("pm_runtime_get_sync() CONSYS ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 199 2b190f4faaa462 Frank Wunderlich 2021-07-12 200 iRet = device_init_wakeup(&my_pdev->dev, true); 2b190f4faaa462 Frank Wunderlich 2021-07-12 201 if (iRet) 2b190f4faaa462 Frank Wunderlich 2021-07-12 202 WMT_PLAT_ERR_FUNC("device_init_wakeup(true) fail.\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 203 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 204 WMT_PLAT_INFO_FUNC("device_init_wakeup(true) CONSYS ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 205 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 206 2b190f4faaa462 Frank Wunderlich 2021-07-12 @207 VOID mtk_wcn_consys_power_off(VOID) 2b190f4faaa462 Frank Wunderlich 2021-07-12 208 { 2b190f4faaa462 Frank Wunderlich 2021-07-12 209 INT32 iRet = -1; 2b190f4faaa462 Frank Wunderlich 2021-07-12 210 2b190f4faaa462 Frank Wunderlich 2021-07-12 211 iRet = pm_runtime_put_sync(&my_pdev->dev); 2b190f4faaa462 Frank Wunderlich 2021-07-12 212 if (iRet) 2b190f4faaa462 Frank Wunderlich 2021-07-12 213 WMT_PLAT_ERR_FUNC("pm_runtime_put_sync() fail.\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 214 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 215 WMT_PLAT_INFO_FUNC("pm_runtime_put_sync() CONSYS ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 216 2b190f4faaa462 Frank Wunderlich 2021-07-12 217 iRet = device_init_wakeup(&my_pdev->dev, false); 2b190f4faaa462 Frank Wunderlich 2021-07-12 218 if (iRet) 2b190f4faaa462 Frank Wunderlich 2021-07-12 219 WMT_PLAT_ERR_FUNC("device_init_wakeup(false) fail.\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 220 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 221 WMT_PLAT_INFO_FUNC("device_init_wakeup(false) CONSYS ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 222 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 223 2b190f4faaa462 Frank Wunderlich 2021-07-12 @224 INT32 mtk_wcn_consys_hw_reg_ctrl(UINT32 on, UINT32 co_clock_type) 2b190f4faaa462 Frank Wunderlich 2021-07-12 225 { 2b190f4faaa462 Frank Wunderlich 2021-07-12 226 UINT32 retry = 10; 2b190f4faaa462 Frank Wunderlich 2021-07-12 227 UINT32 consysHwChipId = 0; 2b190f4faaa462 Frank Wunderlich 2021-07-12 228 2b190f4faaa462 Frank Wunderlich 2021-07-12 229 WMT_PLAT_DBG_FUNC("CONSYS-HW-REG-CTRL(0x%08x),start\n", on); 2b190f4faaa462 Frank Wunderlich 2021-07-12 230 if (on) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 231 WMT_PLAT_DBG_FUNC("++\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 232 /*need PMIC driver provide new API protocol */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 233 /*1.AP power on VCN_1V8 LDO (with PMIC_WRAP API) VCN_1V8 */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 234 regulator_set_mode(reg_VCN18, REGULATOR_MODE_STANDBY); 2b190f4faaa462 Frank Wunderlich 2021-07-12 235 /* VOL_DEFAULT, VOL_1200, VOL_1300, VOL_1500, VOL_1800... */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 236 if (reg_VCN18) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 237 regulator_set_voltage(reg_VCN18, 1800000, 1800000); 2b190f4faaa462 Frank Wunderlich 2021-07-12 238 if (regulator_enable(reg_VCN18)) 2b190f4faaa462 Frank Wunderlich 2021-07-12 239 WMT_PLAT_ERR_FUNC("enable VCN18 fail\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 240 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 241 WMT_PLAT_DBG_FUNC("enable VCN18 ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 242 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 243 udelay(150); 2b190f4faaa462 Frank Wunderlich 2021-07-12 244 if (co_clock_type) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 245 /*step0,clk buf ctrl */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 246 WMT_PLAT_INFO_FUNC("co clock type(%d),turn on clk buf\n", co_clock_type); 2b190f4faaa462 Frank Wunderlich 2021-07-12 247 #if CONSYS_CLOCK_BUF_CTRL 2b190f4faaa462 Frank Wunderlich 2021-07-12 248 clk_buf_ctrl(CLK_BUF_CONN, 1); 2b190f4faaa462 Frank Wunderlich 2021-07-12 249 #endif 2b190f4faaa462 Frank Wunderlich 2021-07-12 250 /*if co-clock mode: */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 251 /*2.set VCN28 to SW control mode (with PMIC_WRAP API) */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 252 /*turn on VCN28 LDO only when FMSYS is activated" */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 253 regmap_update_bits(pmic_regmap, 0x41C, 0x1 << 14, 0x0 << 14);/*V28*/ 2b190f4faaa462 Frank Wunderlich 2021-07-12 254 } else { 2b190f4faaa462 Frank Wunderlich 2021-07-12 255 /*if NOT co-clock: */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 256 /*2.1.switch VCN28 to HW control mode (with PMIC_WRAP API) */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 257 regmap_update_bits(pmic_regmap, 0x41C, 0x1 << 14, 0x1 << 14);/*V28*/ 2b190f4faaa462 Frank Wunderlich 2021-07-12 258 /*2.2.turn on VCN28 LDO (with PMIC_WRAP API)" */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 259 /*fix vcn28 not balance warning */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 260 if (reg_VCN28) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 261 regulator_set_voltage(reg_VCN28, 2800000, 2800000); 2b190f4faaa462 Frank Wunderlich 2021-07-12 262 if (regulator_enable(reg_VCN28)) 2b190f4faaa462 Frank Wunderlich 2021-07-12 263 WMT_PLAT_ERR_FUNC("enable VCN_2V8 fail!\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 264 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 265 WMT_PLAT_DBG_FUNC("enable VCN_2V8 ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 266 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 267 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 268 2b190f4faaa462 Frank Wunderlich 2021-07-12 269 /*3.assert CONNSYS CPU SW reset 0x10007018 "[12]=1'b1 [31:24]=8'h88 (key)" */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 270 reset_control_reset(rstc); 2b190f4faaa462 Frank Wunderlich 2021-07-12 271 mtk_wcn_consys_power_on(); 2b190f4faaa462 Frank Wunderlich 2021-07-12 272 /*11.26M is ready now, delay 10us for mem_pd de-assert */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 273 udelay(10); 2b190f4faaa462 Frank Wunderlich 2021-07-12 274 /*enable AP bus clock : connmcu_bus_pd API: enable_clock() ++?? */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 275 clk_prepare_enable(clk_infra_conn_main); 2b190f4faaa462 Frank Wunderlich 2021-07-12 276 WMT_PLAT_DBG_FUNC("[CCF]enable clk_infra_conn_main\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 277 /*12.poll CONNSYS CHIP ID until chipid is returned 0x18070008 */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 278 while (retry-- > 0) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 279 consysHwChipId = CONSYS_REG_READ(conn_reg.mcu_base + CONSYS_CHIP_ID_OFFSET) - 0xf6d; 2b190f4faaa462 Frank Wunderlich 2021-07-12 280 2b190f4faaa462 Frank Wunderlich 2021-07-12 281 if ((consysHwChipId == 0x0321) || (consysHwChipId == 0x0335) || (consysHwChipId == 0x0337)) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 282 WMT_PLAT_INFO_FUNC("retry(%d)consys chipId(0x%08x)\n", retry, consysHwChipId); 2b190f4faaa462 Frank Wunderlich 2021-07-12 283 break; 2b190f4faaa462 Frank Wunderlich 2021-07-12 284 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 285 if ((consysHwChipId == 0x8163) || (consysHwChipId == 0x8127) || (consysHwChipId == 0x7623)) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 286 WMT_PLAT_INFO_FUNC("retry(%d)consys chipId(0x%08x)\n", retry, consysHwChipId); 2b190f4faaa462 Frank Wunderlich 2021-07-12 287 break; 2b190f4faaa462 Frank Wunderlich 2021-07-12 288 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 289 2b190f4faaa462 Frank Wunderlich 2021-07-12 290 WMT_PLAT_ERR_FUNC("Read CONSYS chipId(0x%08x)", consysHwChipId); 2b190f4faaa462 Frank Wunderlich 2021-07-12 291 msleep(20); 2b190f4faaa462 Frank Wunderlich 2021-07-12 292 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 293 2b190f4faaa462 Frank Wunderlich 2021-07-12 294 if ((0 == retry) || (0 == consysHwChipId)) 2b190f4faaa462 Frank Wunderlich 2021-07-12 295 WMT_PLAT_ERR_FUNC("Maybe has a consys power on issue,(0x%08x)\n", consysHwChipId); 2b190f4faaa462 Frank Wunderlich 2021-07-12 296 2b190f4faaa462 Frank Wunderlich 2021-07-12 297 msleep(40); 2b190f4faaa462 Frank Wunderlich 2021-07-12 298 2b190f4faaa462 Frank Wunderlich 2021-07-12 299 } else { 2b190f4faaa462 Frank Wunderlich 2021-07-12 300 2b190f4faaa462 Frank Wunderlich 2021-07-12 301 clk_disable_unprepare(clk_infra_conn_main); 2b190f4faaa462 Frank Wunderlich 2021-07-12 302 WMT_PLAT_DBG_FUNC("[CCF] clk_disable_unprepare(clk_infra_conn_main) calling\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 303 mtk_wcn_consys_power_off(); 2b190f4faaa462 Frank Wunderlich 2021-07-12 304 2b190f4faaa462 Frank Wunderlich 2021-07-12 305 if (co_clock_type) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 306 /*VCN28 has been turned off by GPS OR FM */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 307 #if CONSYS_CLOCK_BUF_CTRL 2b190f4faaa462 Frank Wunderlich 2021-07-12 308 clk_buf_ctrl(CLK_BUF_CONN, 0); 2b190f4faaa462 Frank Wunderlich 2021-07-12 309 #endif 2b190f4faaa462 Frank Wunderlich 2021-07-12 310 } else { 2b190f4faaa462 Frank Wunderlich 2021-07-12 311 regmap_update_bits(pmic_regmap, 0x41C, 0x1 << 14, 0x0 << 14);/*V28*/ 2b190f4faaa462 Frank Wunderlich 2021-07-12 312 /*turn off VCN28 LDO (with PMIC_WRAP API)" */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 313 if (reg_VCN28) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 314 if (regulator_disable(reg_VCN28)) 2b190f4faaa462 Frank Wunderlich 2021-07-12 315 WMT_PLAT_ERR_FUNC("disable VCN_2V8 fail!\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 316 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 317 WMT_PLAT_DBG_FUNC("disable VCN_2V8 ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 318 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 319 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 320 2b190f4faaa462 Frank Wunderlich 2021-07-12 321 /*AP power off MT6625L VCN_1V8 LDO */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 322 regulator_set_mode(reg_VCN18, REGULATOR_MODE_STANDBY); 2b190f4faaa462 Frank Wunderlich 2021-07-12 323 if (reg_VCN18) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 324 if (regulator_disable(reg_VCN18)) 2b190f4faaa462 Frank Wunderlich 2021-07-12 325 WMT_PLAT_ERR_FUNC("disable VCN_1V8 fail!\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 326 else 2b190f4faaa462 Frank Wunderlich 2021-07-12 327 WMT_PLAT_DBG_FUNC("disable VCN_1V8 ok\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 328 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 329 2b190f4faaa462 Frank Wunderlich 2021-07-12 330 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 331 WMT_PLAT_DBG_FUNC("CONSYS-HW-REG-CTRL(0x%08x),finish\n", on); 2b190f4faaa462 Frank Wunderlich 2021-07-12 332 return 0; 2b190f4faaa462 Frank Wunderlich 2021-07-12 333 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 334 2b190f4faaa462 Frank Wunderlich 2021-07-12 @335 INT32 mtk_wcn_consys_hw_gpio_ctrl(UINT32 on) 2b190f4faaa462 Frank Wunderlich 2021-07-12 336 { 2b190f4faaa462 Frank Wunderlich 2021-07-12 337 INT32 iRet = 0; 2b190f4faaa462 Frank Wunderlich 2021-07-12 338 2b190f4faaa462 Frank Wunderlich 2021-07-12 339 WMT_PLAT_DBG_FUNC("CONSYS-HW-GPIO-CTRL(0x%08x), start\n", on); 2b190f4faaa462 Frank Wunderlich 2021-07-12 340 2b190f4faaa462 Frank Wunderlich 2021-07-12 341 if (on) { 2b190f4faaa462 Frank Wunderlich 2021-07-12 342 2b190f4faaa462 Frank Wunderlich 2021-07-12 343 /* TODO: [FixMe][GeorgeKuo] double check if BGF_INT is implemented ok */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 344 /* iRet += wmt_plat_gpio_ctrl(PIN_BGF_EINT, PIN_STA_MUX); */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 345 iRet += wmt_plat_eirq_ctrl(PIN_BGF_EINT, PIN_STA_INIT); 2b190f4faaa462 Frank Wunderlich 2021-07-12 346 iRet += wmt_plat_eirq_ctrl(PIN_BGF_EINT, PIN_STA_EINT_DIS); 2b190f4faaa462 Frank Wunderlich 2021-07-12 347 WMT_PLAT_DBG_FUNC("CONSYS-HW, BGF IRQ registered and disabled\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 348 2b190f4faaa462 Frank Wunderlich 2021-07-12 349 } else { 2b190f4faaa462 Frank Wunderlich 2021-07-12 350 2b190f4faaa462 Frank Wunderlich 2021-07-12 351 /* set bgf eint/all eint to deinit state, namely input low state */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 352 iRet += wmt_plat_eirq_ctrl(PIN_BGF_EINT, PIN_STA_EINT_DIS); 2b190f4faaa462 Frank Wunderlich 2021-07-12 353 iRet += wmt_plat_eirq_ctrl(PIN_BGF_EINT, PIN_STA_DEINIT); 2b190f4faaa462 Frank Wunderlich 2021-07-12 354 WMT_PLAT_DBG_FUNC("CONSYS-HW, BGF IRQ unregistered and disabled\n"); 2b190f4faaa462 Frank Wunderlich 2021-07-12 355 /* iRet += wmt_plat_gpio_ctrl(PIN_BGF_EINT, PIN_STA_DEINIT); */ 2b190f4faaa462 Frank Wunderlich 2021-07-12 356 } 2b190f4faaa462 Frank Wunderlich 2021-07-12 357 WMT_PLAT_DBG_FUNC("CONSYS-HW-GPIO-CTRL(0x%08x), finish\n", on); 2b190f4faaa462 Frank Wunderlich 2021-07-12 358 return iRet; 2b190f4faaa462 Frank Wunderlich 2021-07-12 359 :::::: The code@line 191 was first introduced by commit :::::: 2b190f4faaa462e17cc35e26250875142e239187 mt6625l: add driver folder from 5.13 :::::: TO: Frank Wunderlich :::::: CC: Frank Wunderlich --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org