Lines Matching refs:data
290 static int exynos4210_set_busclk(struct busfreq_data *data, in exynos4210_set_busclk() argument
304 tmp = data->dmc_divtable[index]; in exynos4210_set_busclk()
313 tmp = data->top_divtable[index]; in exynos4210_set_busclk()
356 static int exynos4x12_set_busclk(struct busfreq_data *data, in exynos4x12_set_busclk() argument
370 tmp = data->dmc_divtable[index]; in exynos4x12_set_busclk()
521 static int exynos4_bus_setvolt(struct busfreq_data *data, in exynos4_bus_setvolt() argument
528 switch (data->type) { in exynos4_bus_setvolt()
531 err = regulator_set_voltage(data->vdd_int, volt, in exynos4_bus_setvolt()
536 err = regulator_set_voltage(data->vdd_mif, volt, in exynos4_bus_setvolt()
544 regulator_set_voltage(data->vdd_mif, in exynos4_bus_setvolt()
549 err = regulator_set_voltage(data->vdd_int, in exynos4_bus_setvolt()
554 regulator_set_voltage(data->vdd_mif, in exynos4_bus_setvolt()
571 struct busfreq_data *data = platform_get_drvdata(pdev); in exynos4_bus_target() local
574 unsigned long old_freq = data->curr_oppinfo.rate; in exynos4_bus_target()
593 mutex_lock(&data->lock); in exynos4_bus_target()
595 if (data->disabled) in exynos4_bus_target()
599 err = exynos4_bus_setvolt(data, &new_oppinfo, in exynos4_bus_target()
600 &data->curr_oppinfo); in exynos4_bus_target()
605 switch (data->type) { in exynos4_bus_target()
607 err = exynos4210_set_busclk(data, &new_oppinfo); in exynos4_bus_target()
610 err = exynos4x12_set_busclk(data, &new_oppinfo); in exynos4_bus_target()
620 err = exynos4_bus_setvolt(data, &new_oppinfo, in exynos4_bus_target()
621 &data->curr_oppinfo); in exynos4_bus_target()
625 data->curr_oppinfo = new_oppinfo; in exynos4_bus_target()
627 mutex_unlock(&data->lock); in exynos4_bus_target()
634 struct busfreq_data *data = dev_get_drvdata(dev); in exynos4_bus_get_dev_status() local
635 struct busfreq_ppmu_data *ppmu_data = &data->ppmu_data; in exynos4_bus_get_dev_status()
640 stat->current_frequency = data->curr_oppinfo.rate; in exynos4_bus_get_dev_status()
662 static int exynos4210_init_tables(struct busfreq_data *data) in exynos4210_init_tables() argument
696 data->dmc_divtable[i] = tmp; in exynos4210_init_tables()
718 data->top_divtable[i] = tmp; in exynos4210_init_tables()
757 err = dev_pm_opp_add(data->dev, exynos4210_busclk_table[i].clk, in exynos4210_init_tables()
760 dev_err(data->dev, "Cannot add opp entries.\n"); in exynos4210_init_tables()
769 static int exynos4x12_init_tables(struct busfreq_data *data) in exynos4x12_init_tables() argument
803 data->dmc_divtable[i] = tmp; in exynos4x12_init_tables()
820 ret = dev_pm_opp_add(data->dev, exynos4x12_mifclk_table[i].clk, in exynos4x12_init_tables()
823 dev_err(data->dev, "Fail to add opp entries.\n"); in exynos4x12_init_tables()
834 struct busfreq_data *data = container_of(this, struct busfreq_data, in exynos4_busfreq_pm_notifier_event() local
844 mutex_lock(&data->lock); in exynos4_busfreq_pm_notifier_event()
846 data->disabled = true; in exynos4_busfreq_pm_notifier_event()
849 opp = dev_pm_opp_find_freq_floor(data->dev, &maxfreq); in exynos4_busfreq_pm_notifier_event()
852 dev_err(data->dev, "%s: unable to find a min freq\n", in exynos4_busfreq_pm_notifier_event()
854 mutex_unlock(&data->lock); in exynos4_busfreq_pm_notifier_event()
861 err = exynos4_bus_setvolt(data, &new_oppinfo, in exynos4_busfreq_pm_notifier_event()
862 &data->curr_oppinfo); in exynos4_busfreq_pm_notifier_event()
866 switch (data->type) { in exynos4_busfreq_pm_notifier_event()
868 err = exynos4210_set_busclk(data, &new_oppinfo); in exynos4_busfreq_pm_notifier_event()
871 err = exynos4x12_set_busclk(data, &new_oppinfo); in exynos4_busfreq_pm_notifier_event()
879 data->curr_oppinfo = new_oppinfo; in exynos4_busfreq_pm_notifier_event()
881 mutex_unlock(&data->lock); in exynos4_busfreq_pm_notifier_event()
888 mutex_lock(&data->lock); in exynos4_busfreq_pm_notifier_event()
889 data->disabled = false; in exynos4_busfreq_pm_notifier_event()
890 mutex_unlock(&data->lock); in exynos4_busfreq_pm_notifier_event()
899 struct busfreq_data *data; in exynos4_busfreq_probe() local
905 data = devm_kzalloc(&pdev->dev, sizeof(struct busfreq_data), GFP_KERNEL); in exynos4_busfreq_probe()
906 if (data == NULL) { in exynos4_busfreq_probe()
911 ppmu_data = &data->ppmu_data; in exynos4_busfreq_probe()
921 data->type = pdev->id_entry->driver_data; in exynos4_busfreq_probe()
924 data->pm_notifier.notifier_call = exynos4_busfreq_pm_notifier_event; in exynos4_busfreq_probe()
925 data->dev = dev; in exynos4_busfreq_probe()
926 mutex_init(&data->lock); in exynos4_busfreq_probe()
928 switch (data->type) { in exynos4_busfreq_probe()
930 err = exynos4210_init_tables(data); in exynos4_busfreq_probe()
933 err = exynos4x12_init_tables(data); in exynos4_busfreq_probe()
936 dev_err(dev, "Cannot determine the device id %d\n", data->type); in exynos4_busfreq_probe()
941 data->type); in exynos4_busfreq_probe()
945 data->vdd_int = devm_regulator_get(dev, "vdd_int"); in exynos4_busfreq_probe()
946 if (IS_ERR(data->vdd_int)) { in exynos4_busfreq_probe()
948 return PTR_ERR(data->vdd_int); in exynos4_busfreq_probe()
950 if (data->type == TYPE_BUSF_EXYNOS4x12) { in exynos4_busfreq_probe()
951 data->vdd_mif = devm_regulator_get(dev, "vdd_mif"); in exynos4_busfreq_probe()
952 if (IS_ERR(data->vdd_mif)) { in exynos4_busfreq_probe()
954 return PTR_ERR(data->vdd_mif); in exynos4_busfreq_probe()
967 data->curr_oppinfo.rate = dev_pm_opp_get_freq(opp); in exynos4_busfreq_probe()
968 data->curr_oppinfo.volt = dev_pm_opp_get_voltage(opp); in exynos4_busfreq_probe()
971 platform_set_drvdata(pdev, data); in exynos4_busfreq_probe()
973 data->devfreq = devm_devfreq_add_device(dev, &exynos4_devfreq_profile, in exynos4_busfreq_probe()
975 if (IS_ERR(data->devfreq)) in exynos4_busfreq_probe()
976 return PTR_ERR(data->devfreq); in exynos4_busfreq_probe()
985 err = devm_devfreq_register_opp_notifier(dev, data->devfreq); in exynos4_busfreq_probe()
992 err = register_pm_notifier(&data->pm_notifier); in exynos4_busfreq_probe()
1003 struct busfreq_data *data = platform_get_drvdata(pdev); in exynos4_busfreq_remove() local
1006 unregister_pm_notifier(&data->pm_notifier); in exynos4_busfreq_remove()
1014 struct busfreq_data *data = dev_get_drvdata(dev); in exynos4_busfreq_resume() local
1015 struct busfreq_ppmu_data *ppmu_data = &data->ppmu_data; in exynos4_busfreq_resume()