Merge branch 'stable/bug.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / arch / arm / plat-samsung / clock.c
index 0c9f95d..302c426 100644 (file)
@@ -71,74 +71,6 @@ static int clk_null_enable(struct clk *clk, int enable)
        return 0;
 }
 
-static int dev_is_s3c_uart(struct device *dev)
-{
-       struct platform_device **pdev = s3c24xx_uart_devs;
-       int i;
-       for (i = 0; i < ARRAY_SIZE(s3c24xx_uart_devs); i++, pdev++)
-               if (*pdev && dev == &(*pdev)->dev)
-                       return 1;
-       return 0;
-}
-
-/*
- * Serial drivers call get_clock() very early, before platform bus
- * has been set up, this requires a special check to let them get
- * a proper clock
- */
-
-static int dev_is_platform_device(struct device *dev)
-{
-       return dev->bus == &platform_bus_type ||
-              (dev->bus == NULL && dev_is_s3c_uart(dev));
-}
-
-/* Clock API calls */
-
-struct clk *clk_get(struct device *dev, const char *id)
-{
-       struct clk *p;
-       struct clk *clk = ERR_PTR(-ENOENT);
-       int idno;
-
-       if (dev == NULL || !dev_is_platform_device(dev))
-               idno = -1;
-       else
-               idno = to_platform_device(dev)->id;
-
-       spin_lock(&clocks_lock);
-
-       list_for_each_entry(p, &clocks, list) {
-               if (p->id == idno &&
-                   strcmp(id, p->name) == 0 &&
-                   try_module_get(p->owner)) {
-                       clk = p;
-                       break;
-               }
-       }
-
-       /* check for the case where a device was supplied, but the
-        * clock that was being searched for is not device specific */
-
-       if (IS_ERR(clk)) {
-               list_for_each_entry(p, &clocks, list) {
-                       if (p->id == -1 && strcmp(id, p->name) == 0 &&
-                           try_module_get(p->owner)) {
-                               clk = p;
-                               break;
-                       }
-               }
-       }
-
-       spin_unlock(&clocks_lock);
-       return clk;
-}
-
-void clk_put(struct clk *clk)
-{
-       module_put(clk->owner);
-}
-
 int clk_enable(struct clk *clk)
 {
        if (IS_ERR(clk) || clk == NULL)
@@ -241,8 +173,6 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
        return ret;
 }
 
-EXPORT_SYMBOL(clk_get);
-EXPORT_SYMBOL(clk_put);
 EXPORT_SYMBOL(clk_enable);
 EXPORT_SYMBOL(clk_disable);
 EXPORT_SYMBOL(clk_get_rate);
@@ -265,7 +195,6 @@ struct clk_ops clk_ops_def_setrate = {
 
 struct clk clk_xtal = {
        .name           = "xtal",
-       .id             = -1,
        .rate           = 0,
        .parent         = NULL,
        .ctrlbit        = 0,
@@ -273,30 +202,25 @@ struct clk clk_xtal = {
 
 struct clk clk_ext = {
        .name           = "ext",
-       .id             = -1,
 };
 
 struct clk clk_epll = {
        .name           = "epll",
-       .id             = -1,
 };
 
 struct clk clk_mpll = {
        .name           = "mpll",
-       .id             = -1,
        .ops            = &clk_ops_def_setrate,
 };
 
 struct clk clk_upll = {
        .name           = "upll",
-       .id             = -1,
        .parent         = NULL,
        .ctrlbit        = 0,
 };
 
 struct clk clk_f = {
        .name           = "fclk",
-       .id             = -1,
        .rate           = 0,
        .parent         = &clk_mpll,
        .ctrlbit        = 0,
@@ -304,7 +228,6 @@ struct clk clk_f = {
 
 struct clk clk_h = {
        .name           = "hclk",
-       .id             = -1,
        .rate           = 0,
        .parent         = NULL,
        .ctrlbit        = 0,
@@ -313,7 +236,6 @@ struct clk clk_h = {
 
 struct clk clk_p = {
        .name           = "pclk",
-       .id             = -1,
        .rate           = 0,
        .parent         = NULL,
        .ctrlbit        = 0,
@@ -322,7 +244,6 @@ struct clk clk_p = {
 
 struct clk clk_usb_bus = {
        .name           = "usb-bus",
-       .id             = -1,
        .rate           = 0,
        .parent         = &clk_upll,
 };
@@ -330,7 +251,6 @@ struct clk clk_usb_bus = {
 
 struct clk s3c24xx_uclk = {
        .name           = "uclk",
-       .id             = -1,
 };
 
 /* initialise the clock system */
@@ -346,14 +266,11 @@ int s3c24xx_register_clock(struct clk *clk)
        if (clk->enable == NULL)
                clk->enable = clk_null_enable;
 
-       /* add to the list of available clocks */
-
-       /* Quick check to see if this clock has already been registered. */
-       BUG_ON(clk->list.prev != clk->list.next);
-
-       spin_lock(&clocks_lock);
-       list_add(&clk->list, &clocks);
-       spin_unlock(&clocks_lock);
+       /* fill up the clk_lookup structure and register it*/
+       clk->lookup.dev_id = clk->devname;
+       clk->lookup.con_id = clk->name;
+       clk->lookup.clk = clk;
+       clkdev_add(&clk->lookup);
 
        return 0;
 }
@@ -463,10 +380,7 @@ static int clk_debugfs_register_one(struct clk *c)
        char s[255];
        char *p = s;
 
-       p += sprintf(p, "%s", c->name);
-
-       if (c->id >= 0)
-               sprintf(p, ":%d", c->id);
+       p += sprintf(p, "%s", c->devname);
 
        d = debugfs_create_dir(s, pa ? pa->dent : clk_debugfs_root);
        if (!d)