Lines Matching refs:drv_data
806 static struct llcc_drv_data *drv_data = (void *) -EPROBE_DEFER; variable
821 if (IS_ERR(drv_data)) in llcc_slice_getd()
822 return ERR_CAST(drv_data); in llcc_slice_getd()
824 cfg = drv_data->cfg; in llcc_slice_getd()
825 sz = drv_data->cfg_size; in llcc_slice_getd()
866 if (IS_ERR(drv_data)) in llcc_update_act_ctrl()
867 return PTR_ERR(drv_data); in llcc_update_act_ctrl()
875 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
882 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
887 if (drv_data->version >= LLCC_VERSION_4_1_0_0) { in llcc_update_act_ctrl()
888 regmap = drv_data->bcast_and_regmap ?: drv_data->bcast_regmap; in llcc_update_act_ctrl()
896 ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg, in llcc_update_act_ctrl()
902 if (drv_data->version >= LLCC_VERSION_4_1_0_0) in llcc_update_act_ctrl()
903 ret = regmap_write(drv_data->bcast_regmap, act_clear_reg, in llcc_update_act_ctrl()
921 if (IS_ERR(drv_data)) in llcc_slice_activate()
922 return PTR_ERR(drv_data); in llcc_slice_activate()
927 mutex_lock(&drv_data->lock); in llcc_slice_activate()
928 if (test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_activate()
929 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
938 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
942 __set_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_activate()
943 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
961 if (IS_ERR(drv_data)) in llcc_slice_deactivate()
962 return PTR_ERR(drv_data); in llcc_slice_deactivate()
967 mutex_lock(&drv_data->lock); in llcc_slice_deactivate()
968 if (!test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_deactivate()
969 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
977 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
981 __clear_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_deactivate()
982 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
1041 max_cap_cacheline = max_cap_cacheline / drv_data->num_banks; in _qcom_llcc_cfg_program()
1047 ret = regmap_write(drv_data->bcast_regmap, attr1_cfg, attr1_val); in _qcom_llcc_cfg_program()
1051 if (drv_data->version >= LLCC_VERSION_4_1_0_0) { in _qcom_llcc_cfg_program()
1062 ret = regmap_write(drv_data->bcast_regmap, attr0_cfg, attr0_val); in _qcom_llcc_cfg_program()
1066 if (drv_data->version >= LLCC_VERSION_4_1_0_0) { in _qcom_llcc_cfg_program()
1067 ret = regmap_write(drv_data->bcast_regmap, attr2_cfg, attr2_val); in _qcom_llcc_cfg_program()
1076 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_SCID_DIS_CAP_ALLOC, in _qcom_llcc_cfg_program()
1081 if (drv_data->version < LLCC_VERSION_4_1_0_0) { in _qcom_llcc_cfg_program()
1083 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_PCB_ACT, in _qcom_llcc_cfg_program()
1090 if (drv_data->version >= LLCC_VERSION_2_0_0_0) { in _qcom_llcc_cfg_program()
1094 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_EN, in _qcom_llcc_cfg_program()
1100 if (drv_data->version >= LLCC_VERSION_2_1_0_0) { in _qcom_llcc_cfg_program()
1104 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_CACHEABLE_EN, in _qcom_llcc_cfg_program()
1110 if (drv_data->version >= LLCC_VERSION_4_1_0_0) { in _qcom_llcc_cfg_program()
1121 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG1, in _qcom_llcc_cfg_program()
1127 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG2, in _qcom_llcc_cfg_program()
1133 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG3, in _qcom_llcc_cfg_program()
1139 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG4, in _qcom_llcc_cfg_program()
1145 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG5, in _qcom_llcc_cfg_program()
1151 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG6, in _qcom_llcc_cfg_program()
1157 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG7, in _qcom_llcc_cfg_program()
1163 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_ALGO_CFG8, in _qcom_llcc_cfg_program()
1185 sz = drv_data->cfg_size; in qcom_llcc_cfg_program()
1186 llcc_table = drv_data->cfg; in qcom_llcc_cfg_program()
1218 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_remove()
1254 if (!IS_ERR(drv_data)) in qcom_llcc_probe()
1257 drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); in qcom_llcc_probe()
1258 if (!drv_data) { in qcom_llcc_probe()
1286 drv_data->num_banks = num_banks; in qcom_llcc_probe()
1288 drv_data->regmaps = devm_kcalloc(dev, num_banks, sizeof(*drv_data->regmaps), GFP_KERNEL); in qcom_llcc_probe()
1289 if (!drv_data->regmaps) { in qcom_llcc_probe()
1294 drv_data->regmaps[0] = regmap; in qcom_llcc_probe()
1300 drv_data->regmaps[i] = qcom_llcc_init_mmio(pdev, i, base); in qcom_llcc_probe()
1301 if (IS_ERR(drv_data->regmaps[i])) { in qcom_llcc_probe()
1302 ret = PTR_ERR(drv_data->regmaps[i]); in qcom_llcc_probe()
1307 drv_data->bcast_regmap = qcom_llcc_init_mmio(pdev, i, "llcc_broadcast_base"); in qcom_llcc_probe()
1308 if (IS_ERR(drv_data->bcast_regmap)) { in qcom_llcc_probe()
1309 ret = PTR_ERR(drv_data->bcast_regmap); in qcom_llcc_probe()
1314 ret = regmap_read(drv_data->bcast_regmap, cfg->reg_offset[LLCC_COMMON_HW_INFO], in qcom_llcc_probe()
1319 drv_data->version = version; in qcom_llcc_probe()
1322 if (drv_data->version >= LLCC_VERSION_4_1_0_0) { in qcom_llcc_probe()
1323 drv_data->bcast_and_regmap = qcom_llcc_init_mmio(pdev, i + 1, "llcc_broadcast_and_base"); in qcom_llcc_probe()
1324 if (IS_ERR(drv_data->bcast_and_regmap)) { in qcom_llcc_probe()
1325 ret = PTR_ERR(drv_data->bcast_and_regmap); in qcom_llcc_probe()
1327 drv_data->bcast_and_regmap = NULL; in qcom_llcc_probe()
1337 if (llcc_cfg[i].slice_id > drv_data->max_slices) in qcom_llcc_probe()
1338 drv_data->max_slices = llcc_cfg[i].slice_id; in qcom_llcc_probe()
1340 drv_data->bitmap = devm_bitmap_zalloc(dev, drv_data->max_slices, in qcom_llcc_probe()
1342 if (!drv_data->bitmap) { in qcom_llcc_probe()
1347 drv_data->cfg = llcc_cfg; in qcom_llcc_probe()
1348 drv_data->cfg_size = sz; in qcom_llcc_probe()
1349 drv_data->edac_reg_offset = cfg->edac_reg_offset; in qcom_llcc_probe()
1350 drv_data->ecc_irq_configured = cfg->irq_configured; in qcom_llcc_probe()
1351 mutex_init(&drv_data->lock); in qcom_llcc_probe()
1352 platform_set_drvdata(pdev, drv_data); in qcom_llcc_probe()
1358 drv_data->ecc_irq = platform_get_irq_optional(pdev, 0); in qcom_llcc_probe()
1368 "qcom_llcc_edac", -1, drv_data, in qcom_llcc_probe()
1369 sizeof(*drv_data)); in qcom_llcc_probe()
1376 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_probe()