diff mbox

[2/2] devfreq: exynos4: Support initialization of freq_table and max_state of devfreq's profile.

Message ID 1345099767-13467-3-git-send-email-jonghwa3.lee@samsung.com (mailing list archive)
State Changes Requested, archived
Headers show

Commit Message

Jonghwa Lee Aug. 16, 2012, 6:49 a.m. UTC
This patch initializes freq_table and max_state of devfreq's profile.
They will be used for creating transition table.

Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
---
 drivers/devfreq/exynos4_bus.c |   30 +++++++++++++++++++++++++++++-
 1 files changed, 29 insertions(+), 1 deletions(-)

Comments

Rafael Wysocki Aug. 23, 2012, 10:22 p.m. UTC | #1
On Thursday, August 16, 2012, Jonghwa Lee wrote:
> This patch initializes freq_table and max_state of devfreq's profile.
> They will be used for creating transition table.
> 
> Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>

Does that depend on [1/2]?

Rafael


> ---
>  drivers/devfreq/exynos4_bus.c |   30 +++++++++++++++++++++++++++++-
>  1 files changed, 29 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/devfreq/exynos4_bus.c b/drivers/devfreq/exynos4_bus.c
> index 88ddc77..9c08855 100644
> --- a/drivers/devfreq/exynos4_bus.c
> +++ b/drivers/devfreq/exynos4_bus.c
> @@ -985,7 +985,8 @@ static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
>  	struct busfreq_data *data;
>  	struct opp *opp;
>  	struct device *dev = &pdev->dev;
> -	int err = 0;
> +	int err = 0, i;
> +	unsigned int *freq_table;
>  
>  	data = kzalloc(sizeof(struct busfreq_data), GFP_KERNEL);
>  	if (data == NULL) {
> @@ -1042,6 +1043,33 @@ static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, data);
>  
> +	switch (data->type) {
> +	case TYPE_BUSF_EXYNOS4210:
> +		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4210_LV_NUM,
> +					GFP_KERNEL);
> +
> +		for (i = 0; i < EX4210_LV_NUM; i++)
> +			freq_table[i] = exynos4210_busclk_table[i].clk;
> +
> +		exynos4_devfreq_profile.max_state = EX4210_LV_NUM;
> +		break;
> +	case TYPE_BUSF_EXYNOS4x12:
> +		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4x12_LV_NUM,
> +					GFP_KERNEL);
> +
> +		for (i = 0; i < EX4x12_LV_NUM; i++)
> +			freq_table[i] = exynos4x12_mifclk_table[i].clk;
> +
> +		exynos4_devfreq_profile.max_state = EX4x12_LV_NUM;
> +		break;
> +	default:
> +		dev_err(dev, "Cannot determine the device id %d\n", data->type);
> +		err = -EINVAL;
> +		goto err_opp_add;
> +	}
> +
> +	exynos4_devfreq_profile.freq_table = freq_table;
> +
>  	busfreq_mon_reset(data);
>  
>  	data->devfreq = devfreq_add_device(dev, &exynos4_devfreq_profile,
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jonghwa Lee Aug. 24, 2012, 1:28 a.m. UTC | #2
On 2012? 08? 24? 07:22, Rafael J. Wysocki wrote:
> On Thursday, August 16, 2012, Jonghwa Lee wrote:
>> This patch initializes freq_table and max_state of devfreq's profile.
>> They will be used for creating transition table.
>>
>> Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
> Does that depend on [1/2]?
>
> Rafael

Not exactly, but it shows that required procedure for using function
included in patch[1/2].


Thanks.

>
>> ---
>>  drivers/devfreq/exynos4_bus.c |   30 +++++++++++++++++++++++++++++-
>>  1 files changed, 29 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/devfreq/exynos4_bus.c b/drivers/devfreq/exynos4_bus.c
>> index 88ddc77..9c08855 100644
>> --- a/drivers/devfreq/exynos4_bus.c
>> +++ b/drivers/devfreq/exynos4_bus.c
>> @@ -985,7 +985,8 @@ static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
>>  	struct busfreq_data *data;
>>  	struct opp *opp;
>>  	struct device *dev = &pdev->dev;
>> -	int err = 0;
>> +	int err = 0, i;
>> +	unsigned int *freq_table;
>>  
>>  	data = kzalloc(sizeof(struct busfreq_data), GFP_KERNEL);
>>  	if (data == NULL) {
>> @@ -1042,6 +1043,33 @@ static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
>>  
>>  	platform_set_drvdata(pdev, data);
>>  
>> +	switch (data->type) {
>> +	case TYPE_BUSF_EXYNOS4210:
>> +		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4210_LV_NUM,
>> +					GFP_KERNEL);
>> +
>> +		for (i = 0; i < EX4210_LV_NUM; i++)
>> +			freq_table[i] = exynos4210_busclk_table[i].clk;
>> +
>> +		exynos4_devfreq_profile.max_state = EX4210_LV_NUM;
>> +		break;
>> +	case TYPE_BUSF_EXYNOS4x12:
>> +		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4x12_LV_NUM,
>> +					GFP_KERNEL);
>> +
>> +		for (i = 0; i < EX4x12_LV_NUM; i++)
>> +			freq_table[i] = exynos4x12_mifclk_table[i].clk;
>> +
>> +		exynos4_devfreq_profile.max_state = EX4x12_LV_NUM;
>> +		break;
>> +	default:
>> +		dev_err(dev, "Cannot determine the device id %d\n", data->type);
>> +		err = -EINVAL;
>> +		goto err_opp_add;
>> +	}
>> +
>> +	exynos4_devfreq_profile.freq_table = freq_table;
>> +
>>  	busfreq_mon_reset(data);
>>  
>>  	data->devfreq = devfreq_add_device(dev, &exynos4_devfreq_profile,
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/devfreq/exynos4_bus.c b/drivers/devfreq/exynos4_bus.c
index 88ddc77..9c08855 100644
--- a/drivers/devfreq/exynos4_bus.c
+++ b/drivers/devfreq/exynos4_bus.c
@@ -985,7 +985,8 @@  static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
 	struct busfreq_data *data;
 	struct opp *opp;
 	struct device *dev = &pdev->dev;
-	int err = 0;
+	int err = 0, i;
+	unsigned int *freq_table;
 
 	data = kzalloc(sizeof(struct busfreq_data), GFP_KERNEL);
 	if (data == NULL) {
@@ -1042,6 +1043,33 @@  static __devinit int exynos4_busfreq_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, data);
 
+	switch (data->type) {
+	case TYPE_BUSF_EXYNOS4210:
+		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4210_LV_NUM,
+					GFP_KERNEL);
+
+		for (i = 0; i < EX4210_LV_NUM; i++)
+			freq_table[i] = exynos4210_busclk_table[i].clk;
+
+		exynos4_devfreq_profile.max_state = EX4210_LV_NUM;
+		break;
+	case TYPE_BUSF_EXYNOS4x12:
+		freq_table = devm_kzalloc(&pdev->dev, sizeof(unsigned int) * EX4x12_LV_NUM,
+					GFP_KERNEL);
+
+		for (i = 0; i < EX4x12_LV_NUM; i++)
+			freq_table[i] = exynos4x12_mifclk_table[i].clk;
+
+		exynos4_devfreq_profile.max_state = EX4x12_LV_NUM;
+		break;
+	default:
+		dev_err(dev, "Cannot determine the device id %d\n", data->type);
+		err = -EINVAL;
+		goto err_opp_add;
+	}
+
+	exynos4_devfreq_profile.freq_table = freq_table;
+
 	busfreq_mon_reset(data);
 
 	data->devfreq = devfreq_add_device(dev, &exynos4_devfreq_profile,