summaryrefslogtreecommitdiff
path: root/patches.tizen/0584-clk-max77686-Refactor-driver-data-handling.patch
diff options
context:
space:
mode:
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.patch85
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
+