Lines Matching refs:drv_data
216 static struct llcc_drv_data *drv_data = (void *) -EPROBE_DEFER; variable
231 if (IS_ERR(drv_data)) in llcc_slice_getd()
232 return ERR_CAST(drv_data); in llcc_slice_getd()
234 cfg = drv_data->cfg; in llcc_slice_getd()
235 sz = drv_data->cfg_size; in llcc_slice_getd()
274 if (IS_ERR(drv_data)) in llcc_update_act_ctrl()
275 return PTR_ERR(drv_data); in llcc_update_act_ctrl()
282 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
289 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
294 ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg, in llcc_update_act_ctrl()
312 if (IS_ERR(drv_data)) in llcc_slice_activate()
313 return PTR_ERR(drv_data); in llcc_slice_activate()
318 mutex_lock(&drv_data->lock); in llcc_slice_activate()
319 if (test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_activate()
320 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
329 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
333 __set_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_activate()
334 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
352 if (IS_ERR(drv_data)) in llcc_slice_deactivate()
353 return PTR_ERR(drv_data); in llcc_slice_deactivate()
358 mutex_lock(&drv_data->lock); in llcc_slice_deactivate()
359 if (!test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_deactivate()
360 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
368 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
372 __clear_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_deactivate()
373 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
430 max_cap_cacheline = max_cap_cacheline / drv_data->num_banks; in _qcom_llcc_cfg_program()
436 ret = regmap_write(drv_data->bcast_regmap, attr1_cfg, attr1_val); in _qcom_llcc_cfg_program()
445 ret = regmap_write(drv_data->bcast_regmap, attr0_cfg, attr0_val); in _qcom_llcc_cfg_program()
453 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
459 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
465 if (drv_data->major_version == 2) { in _qcom_llcc_cfg_program()
469 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_EN, in _qcom_llcc_cfg_program()
491 sz = drv_data->cfg_size; in qcom_llcc_cfg_program()
492 llcc_table = drv_data->cfg; in qcom_llcc_cfg_program()
506 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_remove()
540 drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); in qcom_llcc_probe()
541 if (!drv_data) { in qcom_llcc_probe()
546 drv_data->regmap = qcom_llcc_init_mmio(pdev, "llcc_base"); in qcom_llcc_probe()
547 if (IS_ERR(drv_data->regmap)) { in qcom_llcc_probe()
548 ret = PTR_ERR(drv_data->regmap); in qcom_llcc_probe()
552 drv_data->bcast_regmap = in qcom_llcc_probe()
554 if (IS_ERR(drv_data->bcast_regmap)) { in qcom_llcc_probe()
555 ret = PTR_ERR(drv_data->bcast_regmap); in qcom_llcc_probe()
560 ret = regmap_read(drv_data->bcast_regmap, LLCC_COMMON_HW_INFO, &version); in qcom_llcc_probe()
564 drv_data->major_version = FIELD_GET(LLCC_MAJOR_VERSION_MASK, version); in qcom_llcc_probe()
566 ret = regmap_read(drv_data->regmap, LLCC_COMMON_STATUS0, in qcom_llcc_probe()
573 drv_data->num_banks = num_banks; in qcom_llcc_probe()
580 if (llcc_cfg[i].slice_id > drv_data->max_slices) in qcom_llcc_probe()
581 drv_data->max_slices = llcc_cfg[i].slice_id; in qcom_llcc_probe()
583 drv_data->offsets = devm_kcalloc(dev, num_banks, sizeof(u32), in qcom_llcc_probe()
585 if (!drv_data->offsets) { in qcom_llcc_probe()
591 drv_data->offsets[i] = i * BANK_OFFSET_STRIDE; in qcom_llcc_probe()
593 drv_data->bitmap = devm_kcalloc(dev, in qcom_llcc_probe()
594 BITS_TO_LONGS(drv_data->max_slices), sizeof(unsigned long), in qcom_llcc_probe()
596 if (!drv_data->bitmap) { in qcom_llcc_probe()
601 drv_data->cfg = llcc_cfg; in qcom_llcc_probe()
602 drv_data->cfg_size = sz; in qcom_llcc_probe()
603 mutex_init(&drv_data->lock); in qcom_llcc_probe()
604 platform_set_drvdata(pdev, drv_data); in qcom_llcc_probe()
610 drv_data->ecc_irq = platform_get_irq(pdev, 0); in qcom_llcc_probe()
611 if (drv_data->ecc_irq >= 0) { in qcom_llcc_probe()
613 "qcom_llcc_edac", -1, drv_data, in qcom_llcc_probe()
614 sizeof(*drv_data)); in qcom_llcc_probe()
621 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_probe()