]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
power: battery-gauge:make thermal feature optional
authorVenkat Reddy Talla <vreddytalla@nvidia.com>
Fri, 17 Jan 2014 11:30:16 +0000 (17:00 +0530)
committerLaxman Dewangan <ldewangan@nvidia.com>
Mon, 20 Jan 2014 11:43:08 +0000 (03:43 -0800)
 enable thermal feature only if thermal zone name
 provided through battery charger, gauge driver
 platform data.

 Bug 1429629

Change-Id: I8e40442c51f49d8a75a00780c59aff2aa180ffb5
Signed-off-by: Venkat Reddy Talla <vreddytalla@nvidia.com>
Reviewed-on: http://git-master/r/357119
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
drivers/power/battery-charger-gauge-comm.c

index dfe941dd9bd389c61529e958e6079e076d57ff4f..928f8e9e874391d23723267166614c1cdc902363 100644 (file)
@@ -52,7 +52,7 @@ static LIST_HEAD(gauge_list);
 
 struct battery_charger_dev {
        int                             cell_id;
-       char                            tz_name[THERMAL_NAME_LENGTH];
+       char                            *tz_name;
        struct device                   *parent_dev;
        struct battery_charging_ops     *ops;
        struct list_head                list;
@@ -70,7 +70,7 @@ struct battery_charger_dev {
 
 struct battery_gauge_dev {
        int                             cell_id;
-       char                            tz_name[THERMAL_NAME_LENGTH];
+       char                            *tz_name;
        struct device                   *parent_dev;
        struct battery_gauge_ops        *ops;
        struct list_head                list;
@@ -444,6 +444,7 @@ struct battery_charger_dev *battery_charger_register(struct device *dev,
        bc_dev->ops = bci->bc_ops;
        bc_dev->parent_dev = dev;
        bc_dev->drv_data = drv_data;
+       bc_dev->tz_name = kstrdup(bci->tz_name, GFP_KERNEL);
 
        /* Thermal monitoring */
        if (bci->enable_thermal_monitor) {
@@ -454,7 +455,6 @@ struct battery_charger_dev *battery_charger_register(struct device *dev,
                                battery_charger_thermal_monitor_wq);
        } else if (!bc_dev->tz_name) {
                bc_dev->polling_time_sec = bci->polling_time_sec;
-               strcpy(bc_dev->tz_name, bci->tz_name ? : "");
                bc_dev->battery_tz = thermal_zone_device_find_by_name(
                                                bc_dev->tz_name);
                if (!bc_dev->battery_tz)
@@ -548,11 +548,17 @@ struct battery_gauge_dev *battery_gauge_register(struct device *dev,
        bg_dev->ops = bgi->bg_ops;
        bg_dev->parent_dev = dev;
        bg_dev->drv_data = drv_data;
-       strcpy(bg_dev->tz_name, bgi->tz_name ? : "");
-       bg_dev->battery_tz = thermal_zone_device_find_by_name(bg_dev->tz_name);
-       if (!bg_dev->battery_tz)
-               dev_info(dev, "Battery thermal zone %s is not registered yet\n",
+       bg_dev->tz_name = kstrdup(bgi->tz_name, GFP_KERNEL);
+
+       if (!bg_dev->tz_name) {
+               bg_dev->battery_tz = thermal_zone_device_find_by_name(
                        bg_dev->tz_name);
+               if (!bg_dev->battery_tz)
+                       dev_info(dev,
+                       "Battery thermal zone %s is not registered yet\n",
+                       bg_dev->tz_name);
+       }
+
        list_add(&bg_dev->list, &gauge_list);
        mutex_unlock(&charger_gauge_list_mutex);
        bg_temp = bg_dev;