Lines Matching refs:drv_data

446 static struct llcc_drv_data *drv_data = (void *) -EPROBE_DEFER;  variable
461 if (IS_ERR(drv_data)) in llcc_slice_getd()
462 return ERR_CAST(drv_data); in llcc_slice_getd()
464 cfg = drv_data->cfg; in llcc_slice_getd()
465 sz = drv_data->cfg_size; in llcc_slice_getd()
504 if (IS_ERR(drv_data)) in llcc_update_act_ctrl()
505 return PTR_ERR(drv_data); in llcc_update_act_ctrl()
512 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
519 ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, in llcc_update_act_ctrl()
524 ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg, in llcc_update_act_ctrl()
542 if (IS_ERR(drv_data)) in llcc_slice_activate()
543 return PTR_ERR(drv_data); in llcc_slice_activate()
548 mutex_lock(&drv_data->lock); in llcc_slice_activate()
549 if (test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_activate()
550 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
559 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
563 __set_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_activate()
564 mutex_unlock(&drv_data->lock); in llcc_slice_activate()
582 if (IS_ERR(drv_data)) in llcc_slice_deactivate()
583 return PTR_ERR(drv_data); in llcc_slice_deactivate()
588 mutex_lock(&drv_data->lock); in llcc_slice_deactivate()
589 if (!test_bit(desc->slice_id, drv_data->bitmap)) { in llcc_slice_deactivate()
590 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
598 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
602 __clear_bit(desc->slice_id, drv_data->bitmap); in llcc_slice_deactivate()
603 mutex_unlock(&drv_data->lock); in llcc_slice_deactivate()
660 max_cap_cacheline = max_cap_cacheline / drv_data->num_banks; in _qcom_llcc_cfg_program()
666 ret = regmap_write(drv_data->bcast_regmap, attr1_cfg, attr1_val); in _qcom_llcc_cfg_program()
675 ret = regmap_write(drv_data->bcast_regmap, attr0_cfg, attr0_val); in _qcom_llcc_cfg_program()
683 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
689 ret = regmap_write(drv_data->bcast_regmap, in _qcom_llcc_cfg_program()
695 if (drv_data->version >= LLCC_VERSION_2_0_0_0) { in _qcom_llcc_cfg_program()
699 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_EN, in _qcom_llcc_cfg_program()
705 if (drv_data->version >= LLCC_VERSION_2_1_0_0) { in _qcom_llcc_cfg_program()
709 ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_WRSC_CACHEABLE_EN, in _qcom_llcc_cfg_program()
731 sz = drv_data->cfg_size; in qcom_llcc_cfg_program()
732 llcc_table = drv_data->cfg; in qcom_llcc_cfg_program()
746 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_remove()
780 drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); in qcom_llcc_probe()
781 if (!drv_data) { in qcom_llcc_probe()
786 drv_data->regmap = qcom_llcc_init_mmio(pdev, "llcc_base"); in qcom_llcc_probe()
787 if (IS_ERR(drv_data->regmap)) { in qcom_llcc_probe()
788 ret = PTR_ERR(drv_data->regmap); in qcom_llcc_probe()
792 drv_data->bcast_regmap = in qcom_llcc_probe()
794 if (IS_ERR(drv_data->bcast_regmap)) { in qcom_llcc_probe()
795 ret = PTR_ERR(drv_data->bcast_regmap); in qcom_llcc_probe()
802 ret = regmap_read(drv_data->bcast_regmap, cfg->reg_offset[LLCC_COMMON_HW_INFO], in qcom_llcc_probe()
807 drv_data->version = version; in qcom_llcc_probe()
809 ret = regmap_read(drv_data->regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], in qcom_llcc_probe()
816 drv_data->num_banks = num_banks; in qcom_llcc_probe()
822 if (llcc_cfg[i].slice_id > drv_data->max_slices) in qcom_llcc_probe()
823 drv_data->max_slices = llcc_cfg[i].slice_id; in qcom_llcc_probe()
825 drv_data->offsets = devm_kcalloc(dev, num_banks, sizeof(u32), in qcom_llcc_probe()
827 if (!drv_data->offsets) { in qcom_llcc_probe()
833 drv_data->offsets[i] = i * BANK_OFFSET_STRIDE; in qcom_llcc_probe()
835 drv_data->bitmap = devm_bitmap_zalloc(dev, drv_data->max_slices, in qcom_llcc_probe()
837 if (!drv_data->bitmap) { in qcom_llcc_probe()
842 drv_data->cfg = llcc_cfg; in qcom_llcc_probe()
843 drv_data->cfg_size = sz; in qcom_llcc_probe()
844 drv_data->edac_reg_offset = cfg->edac_reg_offset; in qcom_llcc_probe()
845 mutex_init(&drv_data->lock); in qcom_llcc_probe()
846 platform_set_drvdata(pdev, drv_data); in qcom_llcc_probe()
852 drv_data->ecc_irq = platform_get_irq(pdev, 0); in qcom_llcc_probe()
853 if (drv_data->ecc_irq >= 0) { in qcom_llcc_probe()
855 "qcom_llcc_edac", -1, drv_data, in qcom_llcc_probe()
856 sizeof(*drv_data)); in qcom_llcc_probe()
863 drv_data = ERR_PTR(-ENODEV); in qcom_llcc_probe()