Thread (11 messages) flat view 11 messages, 2 authors, 2012-10-03
STALE5061d

[PATCH 2/2] ARM: OMAP: SmartReflex: pass device dependent data via platform data

From: Jean Pihet <hidden>
Date: 2012-09-21 06:30:28
Also in: linux-omap

Hi Tony,

On Fri, Sep 21, 2012 at 12:15 AM, Tony Lindgren [off-list ref] wrote:
Hi,

* Jean Pihet [off-list ref] [120920 07:48]:
quoted
--- a/drivers/power/avs/smartreflex.c
+++ b/drivers/power/avs/smartreflex.c
@@ -131,14 +131,11 @@ static void sr_set_clk_length(struct omap_sr *sr)
      struct clk *sys_ck;
      u32 sys_clk_speed;

-     if (cpu_is_omap34xx())
-             sys_ck = clk_get(NULL, "sys_ck");
-     else
-             sys_ck = clk_get(NULL, "sys_clkin_ck");
+     sys_ck = clk_get(NULL, sr->fck_name);

      if (IS_ERR(sys_ck)) {
-             dev_err(&sr->pdev->dev, "%s: unable to get sys clk\n",
-                     __func__);
+             dev_err(&sr->pdev->dev, "%s: unable to get smartreflex fck %s\n",
+                     __func__, sr->fck_name);
              return;
      }
You should be able to make this even simpler and not have to pass
the clock name around at all. Just do:

syc_ck = clk_get(NULL, "fck);
...
The problem is that the system has multiple instances of the
smartreflex module, each having its own fck. On OMAP3/4 the fck's are
derived from sys_clk via muxes and latches.
The proposed code uses the fck's as defined in the .main_clk field of
the hwmod entries, so that it takes the muxes and latches into account
and also has a consistent clock naming.
In the driver, and add the necessary entries to the clock alias
table. That way it's up to the SoC to set up the necessary clocks
and the driver stays generic.
Got it. The only solution would be to use an unique fck for all
smartreflex modules in all configurations. Is that acceptable?
quoted
@@ -1049,6 +1039,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev)

      list_del(&sr_info->node);
      iounmap(sr_info->base);
+     kfree(sr_info->fck_name);
      kfree(sr_info->name);
      kfree(sr_info);
      mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
Then there's no need for the kfree of the fck_name
either.

There's an example of a similar patch done for twl-core.c as commit
defa6be1 (mfd: Fix compile for twl-core.c by removing cpu_is_omap usage)
in current linux next, except with smartreflex you probably don't
need to do any of the platform_device_alloc trickery like twl-core.c
neded to get around using the i2c numbers as names.
Thanks!

Regards,
Jean
Regards,

Tony
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help