mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	LED fixes for 4.14-rc3
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJZzq0FAAoJEL1qUBy3i3wmiP0P/ihe5tcmm5ckT6PMCqgAlZQU 7JDZCKlBZ/T50/f1luumkQ1rkfBD2KeG7NGjPWo2cmOKynalPkc/k2GJBuFzCrQw pkl4kpwxdg0EaufNQOFqIBaW14d5kug5upkImlrZNW442xB5/Xmhom8BVO9Uswz6 wEOpq2QFbsxmtMGfbYC7PwmgmudutV0Iv4Eco940QjZd2ce3r0rkf0x8Q5CTYjHx LyoCDqcS4KA9lc88g8NMpI/NUEZ14hMSsZsMGpmXuvYgA2Mn4rtGNT4SFbOVnDW9 97x7SsxwOJJoC1G1/XbNaRMgJnovAnDl/E7zT3k+ZqtQfXwbl78Jxp6lxB/E6te5 PKmsqyNc0HvwWy7F8CPjnzn6Nuza9J1cMVU1wTWzQxLzTfm3MLs3Fx5bSKjFUe0g ENYDXzYkxiaD0sgfp8mi8qVLdXiidDkIxSX4LnhY3bKcNW6HfcI407lsb4aOpvBt Ho5cJWTuVCul4i/j38c0wU1SuYtdCwBOOpOR4FuTjkaCUbFNulHLAFxiKjEzTMSC NzVGFHpSLisB/AUTXD3F0jYK7XXqvj1NpVlbgjNVwhhPolv4TofxjGdAZ2IxLRSk p1XoRG4KN5Su1al2DS0m0r7hH4dxdvEsyCP0ylX73B+z3iCsIVedfo7Rihkj9Mi2 oVgdidWdgkotQOrHefVE =swPa -----END PGP SIGNATURE----- Merge tag 'led_fixes-4.14-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds Pull LED fixes from Jacek Anaszewski: "Four fixes for the as3645a LED flash controller and one update to MAINTAINERS" * tag 'led_fixes-4.14-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds: MAINTAINERS: Add entry for MediaTek PMIC LED driver as3645a: Unregister indicator LED on device unbind as3645a: Use integer numbers for parsing LEDs dt: bindings: as3645a: Use LED number to refer to LEDs as3645a: Use ams,input-max-microamp as documented in DT bindings
This commit is contained in:
		
						commit
						95dcc4dc38
					
				
					 4 changed files with 57 additions and 16 deletions
				
			
		|  | @ -15,11 +15,14 @@ Required properties | |||
| 
 | ||||
| compatible	: Must be "ams,as3645a". | ||||
| reg		: The I2C address of the device. Typically 0x30. | ||||
| #address-cells	: 1 | ||||
| #size-cells	: 0 | ||||
| 
 | ||||
| 
 | ||||
| Required properties of the "flash" child node | ||||
| ============================================= | ||||
| Required properties of the flash child node (0) | ||||
| =============================================== | ||||
| 
 | ||||
| reg: 0 | ||||
| flash-timeout-us: Flash timeout in microseconds. The value must be in | ||||
| 		  the range [100000, 850000] and divisible by 50000. | ||||
| flash-max-microamp: Maximum flash current in microamperes. Has to be | ||||
|  | @ -33,20 +36,21 @@ ams,input-max-microamp: Maximum flash controller input current. The | |||
| 			and divisible by 50000. | ||||
| 
 | ||||
| 
 | ||||
| Optional properties of the "flash" child node | ||||
| ============================================= | ||||
| Optional properties of the flash child node | ||||
| =========================================== | ||||
| 
 | ||||
| label		: The label of the flash LED. | ||||
| 
 | ||||
| 
 | ||||
| Required properties of the "indicator" child node | ||||
| ================================================= | ||||
| Required properties of the indicator child node (1) | ||||
| =================================================== | ||||
| 
 | ||||
| reg: 1 | ||||
| led-max-microamp: Maximum indicator current. The allowed values are | ||||
| 		  2500, 5000, 7500 and 10000. | ||||
| 
 | ||||
| Optional properties of the "indicator" child node | ||||
| ================================================= | ||||
| Optional properties of the indicator child node | ||||
| =============================================== | ||||
| 
 | ||||
| label		: The label of the indicator LED. | ||||
| 
 | ||||
|  | @ -55,16 +59,20 @@ Example | |||
| ======= | ||||
| 
 | ||||
| 	as3645a@30 { | ||||
| 		#address-cells: 1 | ||||
| 		#size-cells: 0 | ||||
| 		reg = <0x30>; | ||||
| 		compatible = "ams,as3645a"; | ||||
| 		flash { | ||||
| 		flash@0 { | ||||
| 			reg = <0x0>; | ||||
| 			flash-timeout-us = <150000>; | ||||
| 			flash-max-microamp = <320000>; | ||||
| 			led-max-microamp = <60000>; | ||||
| 			ams,input-max-microamp = <1750000>; | ||||
| 			label = "as3645a:flash"; | ||||
| 		}; | ||||
| 		indicator { | ||||
| 		indicator@1 { | ||||
| 			reg = <0x1>; | ||||
| 			led-max-microamp = <10000>; | ||||
| 			label = "as3645a:indicator"; | ||||
| 		}; | ||||
|  |  | |||
|  | @ -8597,6 +8597,12 @@ M:	Sean Wang <sean.wang@mediatek.com> | |||
| S:	Maintained | ||||
| F:	drivers/media/rc/mtk-cir.c | ||||
| 
 | ||||
| MEDIATEK PMIC LED DRIVER | ||||
| M:	Sean Wang <sean.wang@mediatek.com> | ||||
| S:	Maintained | ||||
| F:	drivers/leds/leds-mt6323.c | ||||
| F:	Documentation/devicetree/bindings/leds/leds-mt6323.txt | ||||
| 
 | ||||
| MEDIATEK ETHERNET DRIVER | ||||
| M:	Felix Fietkau <nbd@openwrt.org> | ||||
| M:	John Crispin <john@phrozen.org> | ||||
|  |  | |||
|  | @ -267,15 +267,19 @@ | |||
| 	clock-frequency = <400000>; | ||||
| 
 | ||||
| 	as3645a@30 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		reg = <0x30>; | ||||
| 		compatible = "ams,as3645a"; | ||||
| 		flash { | ||||
| 		flash@0 { | ||||
| 			reg = <0x0>; | ||||
| 			flash-timeout-us = <150000>; | ||||
| 			flash-max-microamp = <320000>; | ||||
| 			led-max-microamp = <60000>; | ||||
| 			peak-current-limit = <1750000>; | ||||
| 			ams,input-max-microamp = <1750000>; | ||||
| 		}; | ||||
| 		indicator { | ||||
| 		indicator@1 { | ||||
| 			reg = <0x1>; | ||||
| 			led-max-microamp = <10000>; | ||||
| 		}; | ||||
| 	}; | ||||
|  |  | |||
|  | @ -112,6 +112,10 @@ | |||
| #define AS_PEAK_mA_TO_REG(a) \ | ||||
| 	((min_t(u32, AS_PEAK_mA_MAX, a) - 1250) / 250) | ||||
| 
 | ||||
| /* LED numbers for Devicetree */ | ||||
| #define AS_LED_FLASH				0 | ||||
| #define AS_LED_INDICATOR			1 | ||||
| 
 | ||||
| enum as_mode { | ||||
| 	AS_MODE_EXT_TORCH = 0 << AS_CONTROL_MODE_SETTING_SHIFT, | ||||
| 	AS_MODE_INDICATOR = 1 << AS_CONTROL_MODE_SETTING_SHIFT, | ||||
|  | @ -491,10 +495,29 @@ static int as3645a_parse_node(struct as3645a *flash, | |||
| 			      struct device_node *node) | ||||
| { | ||||
| 	struct as3645a_config *cfg = &flash->cfg; | ||||
| 	struct device_node *child; | ||||
| 	const char *name; | ||||
| 	int rval; | ||||
| 
 | ||||
| 	flash->flash_node = of_get_child_by_name(node, "flash"); | ||||
| 	for_each_child_of_node(node, child) { | ||||
| 		u32 id = 0; | ||||
| 
 | ||||
| 		of_property_read_u32(child, "reg", &id); | ||||
| 
 | ||||
| 		switch (id) { | ||||
| 		case AS_LED_FLASH: | ||||
| 			flash->flash_node = of_node_get(child); | ||||
| 			break; | ||||
| 		case AS_LED_INDICATOR: | ||||
| 			flash->indicator_node = of_node_get(child); | ||||
| 			break; | ||||
| 		default: | ||||
| 			dev_warn(&flash->client->dev, | ||||
| 				 "unknown LED %u encountered, ignoring\n", id); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (!flash->flash_node) { | ||||
| 		dev_err(&flash->client->dev, "can't find flash node\n"); | ||||
| 		return -ENODEV; | ||||
|  | @ -534,11 +557,10 @@ static int as3645a_parse_node(struct as3645a *flash, | |||
| 	of_property_read_u32(flash->flash_node, "voltage-reference", | ||||
| 			     &cfg->voltage_reference); | ||||
| 
 | ||||
| 	of_property_read_u32(flash->flash_node, "peak-current-limit", | ||||
| 	of_property_read_u32(flash->flash_node, "ams,input-max-microamp", | ||||
| 			     &cfg->peak); | ||||
| 	cfg->peak = AS_PEAK_mA_TO_REG(cfg->peak); | ||||
| 
 | ||||
| 	flash->indicator_node = of_get_child_by_name(node, "indicator"); | ||||
| 	if (!flash->indicator_node) { | ||||
| 		dev_warn(&flash->client->dev, | ||||
| 			 "can't find indicator node\n"); | ||||
|  | @ -721,6 +743,7 @@ static int as3645a_remove(struct i2c_client *client) | |||
| 	as3645a_set_control(flash, AS_MODE_EXT_TORCH, false); | ||||
| 
 | ||||
| 	v4l2_flash_release(flash->vf); | ||||
| 	v4l2_flash_release(flash->vfind); | ||||
| 
 | ||||
| 	led_classdev_flash_unregister(&flash->fled); | ||||
| 	led_classdev_unregister(&flash->iled_cdev); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Linus Torvalds
						Linus Torvalds