diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0052-Add-retry-on-error-and-tidy-of-temperature-driver.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.10/0052-Add-retry-on-error-and-tidy-of-temperature-driver.patch | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0052-Add-retry-on-error-and-tidy-of-temperature-driver.patch b/target/linux/brcm2708/patches-3.10/0052-Add-retry-on-error-and-tidy-of-temperature-driver.patch deleted file mode 100644 index 18d61012f7..0000000000 --- a/target/linux/brcm2708/patches-3.10/0052-Add-retry-on-error-and-tidy-of-temperature-driver.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 1234701636ab3dca340a336aa9ddfadd64914e58 Mon Sep 17 00:00:00 2001 -From: popcornmix <popcornmix@gmail.com> -Date: Sun, 24 Feb 2013 16:30:57 +0000 -Subject: [PATCH 052/196] Add retry on error and tidy of temperature driver - ---- - drivers/thermal/bcm2835-thermal.c | 78 ++++++++++++++------------------------- - 1 file changed, 27 insertions(+), 51 deletions(-) - -diff --git a/drivers/thermal/bcm2835-thermal.c b/drivers/thermal/bcm2835-thermal.c -index 3f9a733..85fceb5 100644 ---- a/drivers/thermal/bcm2835-thermal.c -+++ b/drivers/thermal/bcm2835-thermal.c -@@ -33,7 +33,6 @@ - #define print_debug(fmt,...) - #endif - #define print_err(fmt,...) printk(KERN_ERR "%s:%s:%d: "fmt"\n", MODULE_NAME, __func__,__LINE__, ##__VA_ARGS__) --#define print_info(fmt,...) printk(KERN_INFO "%s: "fmt"\n", MODULE_NAME, ##__VA_ARGS__) - - #define VC_TAG_GET_TEMP 0x00030006 - #define VC_TAG_GET_MAX_TEMP 0x0003000A -@@ -66,12 +65,6 @@ struct bcm2835_thermal_data { - struct vc_msg msg; - }; - --/* --- PROTOTYPES --- */ --static int bcm2835_get_temp(struct thermal_zone_device *thermal_dev, unsigned long *); --static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int, unsigned long *); --static int bcm2835_get_trip_type(struct thermal_zone_device *thermal_dev, int trip_num, enum thermal_trip_type *trip_type); --static int bcm2835_get_mode(struct thermal_zone_device *thermal_dev, enum thermal_device_mode *dev_mode); -- - /* --- GLOBALS --- */ - static struct bcm2835_thermal_data bcm2835_data; - -@@ -79,64 +72,47 @@ static struct bcm2835_thermal_data bcm2835_data; - static struct thermal_zone_device_ops ops; - - /* --- FUNCTIONS --- */ --static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int trip_num, unsigned long *temp) --{ -- int result; - -+static int bcm2835_get_temp_or_max(struct thermal_zone_device *thermal_dev, unsigned long *temp, unsigned tag_id) -+{ -+ int result = -1, retry = 3; - print_debug("IN"); - -- /* wipe all previous message data */ -- memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); -- -- /* prepare message */ -- bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; -- bcm2835_data.msg.tag.buffer_size = 8; -- bcm2835_data.msg.tag.tag_id = VC_TAG_GET_MAX_TEMP; -- -- /* send the message */ -- result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); -+ *temp = 0; -+ while (result != 0 && retry-- > 0) { -+ /* wipe all previous message data */ -+ memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); -+ -+ /* prepare message */ -+ bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; -+ bcm2835_data.msg.tag.buffer_size = 8; -+ bcm2835_data.msg.tag.tag_id = tag_id; -+ -+ /* send the message */ -+ result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); -+ print_debug("Got %stemperature as %u (%d,%x)\n", tag_id==VC_TAG_GET_MAX_TEMP ? "max ":"", (uint)bcm2835_data.msg.tag.val, result, bcm2835_data.msg.request_code); -+ if (!(bcm2835_data.msg.request_code & 0x80000000)) -+ result = -1; -+ } - - /* check if it was all ok and return the rate in milli degrees C */ -- if (result == 0 && (bcm2835_data.msg.request_code & 0x80000000)) -+ if (result == 0) - *temp = (uint)bcm2835_data.msg.tag.val; -- #ifdef THERMAL_DEBUG_ENABLE - else -- print_debug("Failed to get temperature!"); -- #endif -- print_debug("Got temperature as %u",(uint)*temp); -+ print_err("Failed to get temperature! (%x:%d)\n", tag_id, result); - print_debug("OUT"); -- return 0; -+ return result; - } - - static int bcm2835_get_temp(struct thermal_zone_device *thermal_dev, unsigned long *temp) - { -- int result; -- -- print_debug("IN"); -- -- /* wipe all previous message data */ -- memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); -- -- /* prepare message */ -- bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; -- bcm2835_data.msg.tag.buffer_size = 8; -- bcm2835_data.msg.tag.tag_id = VC_TAG_GET_TEMP; -- -- /* send the message */ -- result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); -- -- /* check if it was all ok and return the rate in milli degrees C */ -- if (result == 0 && (bcm2835_data.msg.request_code & 0x80000000)) -- *temp = (uint)bcm2835_data.msg.tag.val; -- #ifdef THERMAL_DEBUG_ENABLE -- else -- print_debug("Failed to get temperature!"); -- #endif -- print_debug("Got temperature as %u",(uint)*temp); -- print_debug("OUT"); -- return 0; -+ return bcm2835_get_temp_or_max(thermal_dev, temp, VC_TAG_GET_TEMP); - } - -+static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int trip_num, unsigned long *temp) -+{ -+ return bcm2835_get_temp_or_max(thermal_dev, temp, VC_TAG_GET_MAX_TEMP); -+} - - static int bcm2835_get_trip_type(struct thermal_zone_device * thermal_dev, int trip_num, enum thermal_trip_type *trip_type) - { --- -1.9.1 - |