Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: Switch WM8350 revision detection to a feature based model

Rather than check for chip revisions in the WM8350 drivers have the core
code set flags for relevant differences.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@openedhand.com>

authored by

Mark Brown and committed by
Samuel Ortiz
d756f4a4 14431aa0

+5 -7
+2 -4
drivers/mfd/wm8350-core.c
··· 1240 1240 switch ((id2 & WM8350_CHIP_REV_MASK) >> 12) { 1241 1241 case WM8350_REV_E: 1242 1242 dev_info(wm8350->dev, "Found Rev E device\n"); 1243 - wm8350->rev = WM8350_REV_E; 1244 1243 break; 1245 1244 case WM8350_REV_F: 1246 1245 dev_info(wm8350->dev, "Found Rev F device\n"); 1247 - wm8350->rev = WM8350_REV_F; 1248 1246 break; 1249 1247 case WM8350_REV_G: 1250 1248 dev_info(wm8350->dev, "Found Rev G device\n"); 1251 - wm8350->rev = WM8350_REV_G; 1249 + wm8350->power.rev_g_coeff = 1; 1252 1250 break; 1253 1251 case WM8350_REV_H: 1254 1252 dev_info(wm8350->dev, "Found Rev H device\n"); 1255 - wm8350->rev = WM8350_REV_H; 1253 + wm8350->power.rev_g_coeff = 1; 1256 1254 break; 1257 1255 default: 1258 1256 /* For safety we refuse to run on unknown hardware */
+1 -1
drivers/power/wm8350_power.c
··· 44 44 45 45 static inline int wm8350_charge_time_min(struct wm8350 *wm8350, int min) 46 46 { 47 - if (wm8350->rev < WM8350_REV_G) 47 + if (!wm8350->power.rev_g_coeff) 48 48 return (((min - 30) / 15) & 0xf) << 8; 49 49 else 50 50 return (((min - 30) / 30) & 0xf) << 8;
-2
include/linux/mfd/wm8350/core.h
··· 585 585 }; 586 586 587 587 struct wm8350 { 588 - int rev; /* chip revision */ 589 - 590 588 struct device *dev; 591 589 592 590 /* device IO */
+2
include/linux/mfd/wm8350/supply.h
··· 127 127 struct power_supply usb; 128 128 struct power_supply ac; 129 129 struct wm8350_charger_policy *policy; 130 + 131 + int rev_g_coeff; 130 132 }; 131 133 132 134 #endif