diff options
Diffstat (limited to 'patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch')
-rw-r--r-- | patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch b/patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch new file mode 100644 index 00000000000..fcb144cf423 --- /dev/null +++ b/patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch @@ -0,0 +1,85 @@ +From 35d7dccc74184bdead550e6633636504539a0105 Mon Sep 17 00:00:00 2001 +From: Tomasz Figa <t.figa@samsung.com> +Date: Fri, 23 Aug 2013 19:09:41 +0200 +Subject: [PATCH 0584/1302] clk: max77686: Refactor driver data handling + +As a prerequisite for further patch adding OF clock provider support to +the driver, this patch changes the driver to store an array of struct +clk * as driver data. + +Signed-off-by: Tomasz Figa <t.figa@samsung.com> +Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> +--- + drivers/clk/clk-max77686.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/drivers/clk/clk-max77686.c b/drivers/clk/clk-max77686.c +index 81b3680..3cf38dc 100644 +--- a/drivers/clk/clk-max77686.c ++++ b/drivers/clk/clk-max77686.c +@@ -137,12 +137,13 @@ static struct clk *max77686_clk_register(struct device *dev, + static int max77686_clk_probe(struct platform_device *pdev) + { + struct max77686_dev *iodev = dev_get_drvdata(pdev->dev.parent); +- struct max77686_clk **max77686_clks; ++ struct max77686_clk *max77686_clks[MAX77686_CLKS_NUM]; ++ struct clk **clocks; + int i, ret; + +- max77686_clks = devm_kzalloc(&pdev->dev, sizeof(struct max77686_clk *) ++ clocks = devm_kzalloc(&pdev->dev, sizeof(struct clk *) + * MAX77686_CLKS_NUM, GFP_KERNEL); +- if (!max77686_clks) ++ if (!clocks) + return -ENOMEM; + + for (i = 0; i < MAX77686_CLKS_NUM; i++) { +@@ -153,22 +154,20 @@ static int max77686_clk_probe(struct platform_device *pdev) + } + + for (i = 0; i < MAX77686_CLKS_NUM; i++) { +- struct clk *clk; +- + max77686_clks[i]->iodev = iodev; + max77686_clks[i]->mask = 1 << i; + max77686_clks[i]->hw.init = &max77686_clks_init[i]; + +- clk = max77686_clk_register(&pdev->dev, max77686_clks[i]); +- if (IS_ERR(clk)) { +- ret = PTR_ERR(clk); ++ clocks[i] = max77686_clk_register(&pdev->dev, max77686_clks[i]); ++ if (IS_ERR(clocks[i])) { ++ ret = PTR_ERR(clocks[i]); + dev_err(&pdev->dev, "failed to register %s\n", + max77686_clks[i]->hw.init->name); + goto err_clocks; + } + } + +- platform_set_drvdata(pdev, max77686_clks); ++ platform_set_drvdata(pdev, clocks); + + return 0; + +@@ -183,12 +182,15 @@ err_clocks: + + static int max77686_clk_remove(struct platform_device *pdev) + { +- struct max77686_clk **max77686_clks = platform_get_drvdata(pdev); ++ struct clk **clocks = platform_get_drvdata(pdev); + int i; + + for (i = 0; i < MAX77686_CLKS_NUM; i++) { +- clkdev_drop(max77686_clks[i]->lookup); +- clk_unregister(max77686_clks[i]->hw.clk); ++ struct clk_hw *hw = __clk_get_hw(clocks[i]); ++ struct max77686_clk *max77686 = to_max77686_clk(hw); ++ ++ clkdev_drop(max77686->lookup); ++ clk_unregister(clocks[i]); + } + return 0; + } +-- +1.8.3.2 + |