Lines Matching refs:drv_data
231 static struct llcc_drv_data *drv_data = (void *) -EPROBE_DEFER; variable
246 if (IS_ERR(drv_data)) in llcc_slice_getd()
247 return ERR_CAST(drv_data); in llcc_slice_getd()
249 cfg = drv_data->cfg; in llcc_slice_getd()
250 sz = drv_data->cfg_size; in llcc_slice_getd()
289 if (IS_ERR(drv_data)) in llcc_update_act_ctrl()
290 return PTR_ERR(drv_data); in llcc_update_act_ctrl()
297 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
304 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
309 ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg, in llcc_update_act_ctrl()
327 if (IS_ERR(drv_data)) in llcc_slice_activate()
328 return PTR_ERR(drv_data); in llcc_slice_activate()
333 mutex_lock(&drv_data->lock); in llcc_slice_activate()
334 if (test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_activate()
335 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
344 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
348 __set_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_activate()
349 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
367 if (IS_ERR(drv_data)) in llcc_slice_deactivate()
368 return PTR_ERR(drv_data); in llcc_slice_deactivate()
373 mutex_lock(&drv_data->lock); in llcc_slice_deactivate()
374 if (!test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_deactivate()
375 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
383 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
387 __clear_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_deactivate()
388 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
445 max_cap_cacheline = max_cap_cacheline / drv_data->num_banks; in _qcom_llcc_cfg_program()
451 ret = regmap_write(drv_data->bcast_regmap, attr1_cfg, attr1_val); in _qcom_llcc_cfg_program()
460 ret = regmap_write(drv_data->bcast_regmap, attr0_cfg, attr0_val); in _qcom_llcc_cfg_program()
468 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
474 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
480 if (drv_data->major_version == 2) { in _qcom_llcc_cfg_program()
484 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_EN, in _qcom_llcc_cfg_program()
506 sz = drv_data->cfg_size; in qcom_llcc_cfg_program()
507 llcc_table = drv_data->cfg; in qcom_llcc_cfg_program()
521 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_remove()
555 drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); in qcom_llcc_probe()
556 if (!drv_data) { in qcom_llcc_probe()
561 drv_data->regmap = qcom_llcc_init_mmio(pdev, "llcc_base"); in qcom_llcc_probe()
562 if (IS_ERR(drv_data->regmap)) { in qcom_llcc_probe()
563 ret = PTR_ERR(drv_data->regmap); in qcom_llcc_probe()
567 drv_data->bcast_regmap = in qcom_llcc_probe()
569 if (IS_ERR(drv_data->bcast_regmap)) { in qcom_llcc_probe()
570 ret = PTR_ERR(drv_data->bcast_regmap); in qcom_llcc_probe()
575 ret = regmap_read(drv_data->bcast_regmap, LLCC_COMMON_HW_INFO, &version); in qcom_llcc_probe()
579 drv_data->major_version = FIELD_GET(LLCC_MAJOR_VERSION_MASK, version); in qcom_llcc_probe()
581 ret = regmap_read(drv_data->regmap, LLCC_COMMON_STATUS0, in qcom_llcc_probe()
588 drv_data->num_banks = num_banks; in qcom_llcc_probe()
595 if (llcc_cfg[i].slice_id > drv_data->max_slices) in qcom_llcc_probe()
596 drv_data->max_slices = llcc_cfg[i].slice_id; in qcom_llcc_probe()
598 drv_data->offsets = devm_kcalloc(dev, num_banks, sizeof(u32), in qcom_llcc_probe()
600 if (!drv_data->offsets) { in qcom_llcc_probe()
606 drv_data->offsets[i] = i * BANK_OFFSET_STRIDE; in qcom_llcc_probe()
608 drv_data->bitmap = devm_kcalloc(dev, in qcom_llcc_probe()
609 BITS_TO_LONGS(drv_data->max_slices), sizeof(unsigned long), in qcom_llcc_probe()
611 if (!drv_data->bitmap) { in qcom_llcc_probe()
616 drv_data->cfg = llcc_cfg; in qcom_llcc_probe()
617 drv_data->cfg_size = sz; in qcom_llcc_probe()
618 mutex_init(&drv_data->lock); in qcom_llcc_probe()
619 platform_set_drvdata(pdev, drv_data); in qcom_llcc_probe()
625 drv_data->ecc_irq = platform_get_irq(pdev, 0); in qcom_llcc_probe()
626 if (drv_data->ecc_irq >= 0) { in qcom_llcc_probe()
628 "qcom_llcc_edac", -1, drv_data, in qcom_llcc_probe()
629 sizeof(*drv_data)); in qcom_llcc_probe()
636 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_probe()