- 07 2月, 2013 21 次提交
-
-
由 Milo(Woogyom) Kim 提交于
LED current is configurable via the sysfs. Max current is a read-only attribute. These attributes code can be shared in lp55xx common driver. Device attributes: 'led_current' and 'max_current' move to lp55xx common driver Replaced functions: show_max_current() => lp55xx_show_max_current() show_current() => lp55xx_show_current() store_current() => lp55xx_store_current() LED setting function: set_led_current() Current registers are device specific, so configurable function is added in each driver. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
lp5521_set_brightness() and lp5523_set_brightness() are replaced with common function, lp55xx_set_brightness(). This function is invoked when the brightness of each LED channel is updated. LP5521 and LP5523 have different register address for the brightness control, so this work is done by chip specific brightness_work_fn(). lp5521/5523_led_brightness_work(): use lp55xx_led and lp55xx_chip data structure. use lp55xx write function. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
lp5521_init_led() and lp5523_init_led() are replaced with one common function, lp55xx_init_led(). Max channels is configurable, so it's used in lp55xx_init_led(). 'LP5523_LEDS' are changed to 'LP5523_MAX_LEDS'. lp55xx_set_brightness, lp55xx_led_attributes: skeleton Will be filled in next patches. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LED class devices are registered in lp5521_register_leds() and lp5523_register_leds(). Two separate functions are merged into consolidated lp55xx function, lp55xx_register_leds(). Error handling fix: Unregistering LEDS are handled in lp55xx_register_leds() when LED registration failure occurs. So each driver error handler is changed to 'err_register_leds' Chip dependency: 'brightness_work_fn' and 'set_led_current' To make the structure abstract, both functions are configured in each driver. Those functions should be done by each driver because register control is chip-dependant work. lp55xx_init_led: skeleton Will be filled in next patch Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
Two separate de-init functions are merged into one common function. And it is used in err_post_init of lp55xx_init_device(). Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
lp5521/5523_init_device() are replaced with lp55xx common function, lp55xx_init_device(). Error handler in init_device: deinit function are matched with 'err_post_init' section in lp55xx_init_device(). Remove LP5523 engine intialization code: Engine functionality is not mandatory but optional. Moreover engine initialization is done internally with device reset command. Therefore, this code is unnecessary. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LP5521/5523 chip configuration is replaced with lp55xx common function, lp55xx_post_init_device(). Name change: lp5521/5523_configure() to lp5521/5523_post_init_device() These are called in init function. Register access function Argument type is changed from 'i2c_client' to 'lp55xx_chip'. Use exported R/W functions of lp55xx common driver. Temporary variables in lp5521/5523_init_device() These functions will be removed but temporary variables are needed for blocking build warnings - incompatible pointer. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LP5521/5523 chip detection functions are replaced with lp55xx common function, lp55xx_detect_device(). Chip dependent address and values are configurable in each driver. In init function, chip detection is executed. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LP5521/5523 reset device functions are moved to lp55xx common driver. Value of register address and value are chip dependent. Those are configured in each driver. In init function, reset command is executed. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LP5521/5523 platform data functions are moved to lp55xx common driver. New init function, lp55xx_init_device() is created. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
This patch is a preceding step for making common lp55xx init function. Return code: Do not use 'OR' arithmetic for the result. If some error occurs, just return it. Remove engine verification code: To check whether internal engine works or not, many lines of code are executed. However, this job is unnecessary during the chip initialization because the engine usage is not mandatory but optional function. LED engines are enabled when specific LED pattern is loaded. Therefore, this verification code is removed. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
This patch is a preceding step for making common lp55xx init function. LP5521_REG_R_CURRENT register code moved: Chip specific code moved from lp5521_init_device() to lp5521_configure(). Remove engine init function: LP5521 has internal program engines which are used for running LED patterns. (blinking, ramp up/down and other emotional visual effects) Engine initialization is done by reset command in lp5521_init_device(). Remove this duplicate code. Return code: Do not use 'OR' arithmetic for the result. If some error occus, just return it. Enable latency: Use explicit named function, lp5521_wait_enable_done(). According to the datasheet, 500us is guaranteed time. Thus wait time is changed from 1000us to 500us. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
LP5521 and LP5523 data structures have common features. Use common lp55xx data structures rather than chip specific data. Legacy code in probe is replaced with this new data structures. lp55xx_chip : Common data between lp5521_chip and lp5523_chip lp55xx_led : Common LED structure between lp5521_led and lp5523_led lp55xx_platform_data : Common platform data between lp5521_platform_data and lp5523_platform_data Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
Change the name of chip data structure and platform data. This patch is a preceding step for cleaning up lp5521/5523 probe and remove. These data will be replaced with new lp55xx common data structures in next patch. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
This patch supports basic common driver code for LP5521, LP5523/55231 devices. ( Driver Structure Data ) lp55xx_led and lp55xx_chip In lp55xx common driver, two different data structure is used. o lp55xx_led control multi output LED channels such as led current, channel index. o lp55xx_chip general chip control such like the I2C and platform data. For example, LP5521 has maximum 3 LED channels. LP5523/55231 has 9 output channels. lp55xx_chip for LP5521 ... lp55xx_led #1 lp55xx_led #2 lp55xx_led #3 lp55xx_chip for LP5523 ... lp55xx_led #1 lp55xx_led #2 . . lp55xx_led #9 ( Platform Data ) LP5521 and LP5523/55231 have own specific platform data. However, this data can be handled with just one platform data structure. The lp55xx platform data is declared in the header. This structure is derived from leds-lp5521.h and leds-lp5523.h Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
Chip specific function is configured when the device is initialized. So _configure() is moved to each device init function. If chip configuration gets failed, the device is de-initialized in each _init_device(), not probe(). For compile error fix, function type declarations are added. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
Use explicit each driver function rather than raw command. These function will be merged into the lp55xx common driver. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
To make LED unregistration code simple, new function, _unregister_leds() is added in each driver. This patch is a preceding step for lp55xx common driver architecture. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
To make LED initialization code simple, new function, _register_leds() is added at each driver. This patch is a preceding step for lp55xx common driver architecture. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
Device de-initialization code is moved to _deinit_device() at each driver. This patch is a preceding step for lp55xx common driver architecture. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Milo(Woogyom) Kim 提交于
To make _probe() simple, device initialization code is moved to _init_device() at each driver. This patch is a preceding step for lp55xx common driver architecture. leds-lp5521: When 'lp5521_init_device()' gets failed, error handling should be 'fail1' rather than 'fail2'. fail1: releasing platform resource and return code fail2: releasing allocated LED devices with handling 'fail1' The 'lp5521_init_device()' is called before creating LED devices. Thus, 'goto fail1' is proper error handler of this function. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
- 02 2月, 2013 16 次提交
-
-
由 Jingoo Han 提交于
Fixed the checkpatch warning as below: WARNING: static const char * array should probably be static const char * const Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Jingoo Han 提交于
This macro is used to create a struct pci_device_id array. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Jingoo Han 提交于
Fixed the checkpatch warning as below: WARNING: suspect code indent for conditional statements (8, 8) Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Jingoo Han 提交于
Fixed the checkpatch warning as below: WARNING: Avoid CamelCase: <devAttr> Rename devAttr to attr. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Jingoo Han 提交于
Fixed the checkpatch warning as below: WARNING: Avoid CamelCase: <devAttr> Rename devAttr to attr. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Axel Lin 提交于
I spent a few minutes to understand why the code catching the mismatch case by checking if k is 0 or not. And the code using "k - 1" as array index is unusual. This patch checks acceptable rate from the lowest rate, and then we don't need to subtract k by 1. This change improves the readability. Signed-off-by: NAxel Lin <axel.lin@ingics.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Axel Lin 提交于
Add lm3530_led_enable() and lm3530_led_disable() helper functions. This ensures setting drvdata->enable to correct status if regulator_disable fails. Signed-off-by: NAxel Lin <axel.lin@ingics.com> Acked-by: NShreshtha Kumar SAHU <shreshthakumar.sahu@stericsson.com> Acked-by: NMilo Kim <milo.kim@ti.com> Tested-by: NMilo Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Kim, Milo 提交于
The lp8788-keyled is a platform driver of lp8788-mfd. The platform device is allocated when mfd_add_devices() is called in lp8788-mfd. On the other hand, 'lp->dev' is the i2c client device. Therefore, this 'platform_device' is a proper parent device in case of resource managed mem alloc, registering led device and device kernel messages. Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
The DT binding for the pwm-leds devices are similar to the gpio-leds type. LEDs are represented as sub-nodes of the pwm-leds device. The code for handling the DT boot is based on the code found in the leds-gpio driver and adapted to use PWMs instead of GPIOs. To avoid having custom cleanup code in case of DT boot the newly created devm_of_pwm_get() API is used to get the correct PWM instance. For usage see: Documentation/devicetree/bindings/leds/leds-pwm.txt Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: NGrant Likely <grant.likely@secretlab.ca> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
The code looks more nicer if we use: while (i--) instead: if (i > 0) for (i = i - 1; i >= 0; i--) Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
When booted with DT users can use devm version of of_pwm_get() to benefit from automatic resource release. Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: NThierry Reding <thierry.reding@avionic-design.de> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
Allow client driver to use of_pwm_get() to get the PWM they need. This is needed for drivers which handle more than one PWM separately, like leds-pwm driver, which have: pwmleds { compatible = "pwm-leds"; kpad { label = "omap4::keypad"; pwms = <&twl_pwm 0 7812500>; max-brightness = <127>; }; charging { label = "omap4:green:chrg"; pwms = <&twl_pwmled 0 7812500>; max-brightness = <255>; }; }; in the dts files. Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: NThierry Reding <thierry.reding@avionic-design.de> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
In order to be able to add device tree support for leds-pwm driver we need to rearrange the data structures used by the drivers. Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Peter Ujfalusi 提交于
Update the driver to use the new API for requesting pwm so we can take advantage of the pwm_lookup table to find the correct pwm to be used for the LED functionality. Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Axel Lin 提交于
Signed-off-by: NAxel Lin <axel.lin@ingics.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
由 Marek Belisko 提交于
Support added only for leds (not for gpio's). (cooloney@gmail.com: fix 2 building errors) Signed-off-by: NMarek Belisko <marek.belisko@open-nandra.com> Signed-off-by: NBryan Wu <cooloney@gmail.com>
-
- 01 2月, 2013 1 次提交
-
-
由 Benjamin Tissoires 提交于
i2c_hid_output_raw_report is used by hidraw to forward set_report requests. The current implementation of i2c_hid_set_report needs to take the report_id as an argument. The report_id is stored in the first byte of the buffer in argument of i2c_hid_output_raw_report. Not removing the report_id from the given buffer adds this byte 2 times in the command, leading to a non working command. Reported-by: NAndrew Duggan <aduggan@synaptics.com> Signed-off-by: NBenjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
-
- 31 1月, 2013 2 次提交
-
-
由 Alasdair G Kergon 提交于
When processing write same requests, fix dm to send the configured number of WRITE SAME requests to the target rather than the number of discards, which is not always the same. Device-mapper WRITE SAME support was introduced by commit 23508a96 ("dm: add WRITE SAME support"). Signed-off-by: NAlasdair G Kergon <agk@redhat.com> Acked-by: NMike Snitzer <snitzer@redhat.com>
-
由 Mike Snitzer 提交于
thin_io_hints() is blindly copying the queue limits from the thin-pool which can lead to incorrect limits being set. The fix here simply deletes the thin_io_hints() hook which leaves the existing stacking infrastructure to set the limits correctly. When a thin-pool uses an MD device for the data device a thin device from the thin-pool must respect MD's constraints about disallowing a bio from spanning multiple chunks. Otherwise we can see problems. If the raid0 chunksize is 1152K and thin-pool chunksize is 256K I see the following md/raid0 error (with extra debug tracing added to thin_endio) when mkfs.xfs is executed against the thin device: md/raid0:md99: make_request bug: can't convert block across chunks or bigger than 1152k 6688 127 device-mapper: thin: bio sector=2080 err=-5 bi_size=130560 bi_rw=17 bi_vcnt=32 bi_idx=0 This extra DM debugging shows that the failing bio is spanning across the first and second logical 1152K chunk (sector 2080 + 255 takes the bio beyond the first chunk's boundary of sector 2304). So the bio splitting that DM is doing clearly isn't respecting the MD limits. max_hw_sectors_kb is 127 for both the thin-pool and thin device (queue_max_hw_sectors returns 255 so we'll excuse sysfs's lack of precision). So this explains why bi_size is 130560. But the thin device's max_hw_sectors_kb should be 4 (PAGE_SIZE) given that it doesn't have a .merge function (for bio_add_page to consult indirectly via dm_merge_bvec) yet the thin-pool does sit above an MD device that has a compulsory merge_bvec_fn. This scenario is exactly why DM must resort to sending single PAGE_SIZE bios to the underlying layer. Some additional context for this is available in the header for commit 8cbeb67a ("dm: avoid unsupported spanning of md stripe boundaries"). Long story short, the reason a thin device doesn't properly get configured to have a max_hw_sectors_kb of 4 (PAGE_SIZE) is that thin_io_hints() is blindly copying the queue limits from the thin-pool device directly to the thin device's queue limits. Fix this by eliminating thin_io_hints. Doing so is safe because the block layer's queue limits stacking already enables the upper level thin device to inherit the thin-pool device's discard and minimum_io_size and optimal_io_size limits that get set in pool_io_hints. But avoiding the queue limits copy allows the thin and thin-pool limits to be different where it is important, namely max_hw_sectors_kb. Reported-by: NDaniel Browning <db@kavod.com> Signed-off-by: NMike Snitzer <snitzer@redhat.com> Cc: stable@vger.kernel.org Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
-