Skip to contentSkip to conversation

Couple of changes to gpio-gate-clock

PATCH New Jyri Sarha 1 participant 3 messages Oct 2, 2014

Subsystems (2)
lore
Share & tools
lore

Jyri Sarha

author
#0 lore raw

cover Couple of changes to gpio-gate-clock

The first was suggested by Dan Carpenter. The second is just cleaning and not affecting the functionality.

Jyri Sarha (2):
clk: gpio-gate: Stop using devres API
clk: gpio-gate: Rename the struct from clk_gpio to clk_gpio_gate

 drivers/clk/clk-gpio-gate.c  |   34 ++++++++++++----------------------
 include/linux/clk-provider.h |    2 +-
 2 files changed, 13 insertions(+), 23 deletions(-)
Signature · 1 line
1.7.9.5
author
#1 lore raw

PATCH 1/2 clk: gpio-gate: Stop using devres API

If some driver calls clk_register_gpio_gate() directly, then the driver needs to kfree the resulting struct clk pointer in remove function.

---
 drivers/clk/clk-gpio-gate.c |   16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)
drivers/clk/clk-gpio-gate.c +3 -13
index b87e5f0..a648761 100644
@@ -82,23 +82,14 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 	else
 		gpio_flags = GPIOF_OUT_INIT_LOW;
 
-	if (dev)
-		err = devm_gpio_request_one(dev, desc_to_gpio(gpiod),
-					    gpio_flags, name);
-	else
-		err = gpio_request_one(desc_to_gpio(gpiod), gpio_flags, name);
-
+	err = gpio_request_one(desc_to_gpio(gpiod), gpio_flags, name);
 	if (err) {
 		pr_err("%s: %s: Error requesting clock control gpio %u\n",
 		       __func__, name, desc_to_gpio(gpiod));
 		return ERR_PTR(err);
 	}
 
-	if (dev)
-		clk_gpio = devm_kzalloc(dev, sizeof(struct clk_gpio),
-					GFP_KERNEL);
-	else
-		clk_gpio = kzalloc(sizeof(struct clk_gpio), GFP_KERNEL);
+	clk_gpio = kzalloc(sizeof(struct clk_gpio), GFP_KERNEL);
 
 	if (!clk_gpio) {
 		clk = ERR_PTR(-ENOMEM);
@@ -119,8 +110,7 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 	if (!IS_ERR(clk))
 		return clk;
 
-	if (!dev)
-		kfree(clk_gpio);
+	kfree(clk_gpio);
 
 clk_register_gpio_gate_err:
 	gpiod_put(gpiod);
Signature · 1 line
1.7.9.5
author
#2 lore raw

PATCH 2/2 clk: gpio-gate: Rename the struct from clk_gpio to clk_gpio_gate

In reply to Jyri Sarha

I forgot to change this when changing the clk name from clk_gpio to clk_gpio_gate. Since I already changed the comment above the struct definition it is better to go all the way.

---
 drivers/clk/clk-gpio-gate.c  |   22 +++++++++++-----------
 include/linux/clk-provider.h |    2 +-
 2 files changed, 12 insertions(+), 12 deletions(-)
drivers/clk/clk-gpio-gate.c +11 -11
index a648761..053939a 100644
@@ -28,11 +28,11 @@
  * parent - fixed parent.  No clk_set_parent support
  */
 
-#define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio, hw)
+#define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio_gate, hw)
 
 static int clk_gpio_gate_enable(struct clk_hw *hw)
 {
-	struct clk_gpio *clk = to_clk_gpio(hw);
+	struct clk_gpio_gate *clk = to_clk_gpio(hw);
 
 	gpiod_set_value(clk->gpiod, 1);
 
@@ -41,14 +41,14 @@ static int clk_gpio_gate_enable(struct clk_hw *hw)
 
 static void clk_gpio_gate_disable(struct clk_hw *hw)
 {
-	struct clk_gpio *clk = to_clk_gpio(hw);
+	struct clk_gpio_gate *clk = to_clk_gpio(hw);
 
 	gpiod_set_value(clk->gpiod, 0);
 }
 
 static int clk_gpio_gate_is_enabled(struct clk_hw *hw)
 {
-	struct clk_gpio *clk = to_clk_gpio(hw);
+	struct clk_gpio_gate *clk = to_clk_gpio(hw);
 
 	return gpiod_get_value(clk->gpiod);
 }
@@ -71,7 +71,7 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 		const char *parent_name, struct gpio_desc *gpiod,
 		unsigned long flags)
 {
-	struct clk_gpio *clk_gpio = NULL;
+	struct clk_gpio_gate *clk_gpio_gate = NULL;
 	struct clk *clk = ERR_PTR(-EINVAL);
 	struct clk_init_data init = { NULL };
 	unsigned long gpio_flags;
@@ -89,9 +89,9 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 		return ERR_PTR(err);
 	}
 
-	clk_gpio = kzalloc(sizeof(struct clk_gpio), GFP_KERNEL);
+	clk_gpio_gate = kzalloc(sizeof(struct clk_gpio_gate), GFP_KERNEL);
 
-	if (!clk_gpio) {
+	if (!clk_gpio_gate) {
 		clk = ERR_PTR(-ENOMEM);
 		goto clk_register_gpio_gate_err;
 	}
@@ -102,15 +102,15 @@ struct clk *clk_register_gpio_gate(struct device *dev, const char *name,
 	init.parent_names = (parent_name ? &parent_name : NULL);
 	init.num_parents = (parent_name ? 1 : 0);
 
-	clk_gpio->gpiod = gpiod;
-	clk_gpio->hw.init = &init;
+	clk_gpio_gate->gpiod = gpiod;
+	clk_gpio_gate->hw.init = &init;
 
-	clk = clk_register(dev, &clk_gpio->hw);
+	clk = clk_register(dev, &clk_gpio_gate->hw);
 
 	if (!IS_ERR(clk))
 		return clk;
 
-	kfree(clk_gpio);
+	kfree(clk_gpio_gate);
 
 clk_register_gpio_gate_err:
 	gpiod_put(gpiod);
include/linux/clk-provider.h +1 -1
index ec1581b..860cb0c 100644
@@ -498,7 +498,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
  * Implements .enable, .disable and .is_enabled
  */
 
-struct clk_gpio {
+struct clk_gpio_gate {
 	struct clk_hw	hw;
 	struct gpio_desc *gpiod;
 };
Signature · 1 line
1.7.9.5