Commit graph android_kernel_motorola_sm6375/drivers/leds
Author SHA1 Message Date
qctecmdr
d3fc7ea1c3 Merge "leds: qti-flash: Add support for on_time and off_time parameters" 2020-03-16 20:03:19 -07:00
Jishnu Prakash
108427ae28 leds: qpnp: Add snapshot of vibrator LDO driver
This is a snapshot of the vibrator LDO driver as of msm-4.19
'commit c527cd5c987ac (Merge "mhi: cntrl: qcom: allow printing
large strings to IPC logs")' with the following modifications:
	- Replace snprintf with scnprintf.

Change-Id: Id58fbcc33607c309366104fe72282c09c86a3227
Signed-off-by: Jishnu Prakash <jprakash@codeaurora.org>
2020-03-15 08:19:03 -07:00
Shyam Kumar Thella
a6927b5426 leds: qti-flash: Add support for on_time and off_time parameters
Add support to enable switch after a delay of on_time milliseconds
and to disable switch after a delay of off_time milliseconds. Adding
delays to turn ON and OFF the switch is required by flash client
(camera) for fine precision flash control.

Add sysfs support to configure on_time and off_time for switch devices.

E.g. To configure ON time of 1 second and OFF time of 0.5 seconds on
switch 0 and strobing flash LED 0,
 echo 300 > /sys/class/leds/leds:flash_0/flash_brightness
 echo 1000 > /sys/class/leds/led:switch_0/on_time
 echo 500 > /sys/class/leds/led_switch_0/off_time
 echo 1 > /sys/class/leds/led_switch_0/brightness

Change-Id: I343eddf097bc7bb9960cd3fd4934c9b0a40cf450
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
2020-03-13 10:24:04 +05:30
Blagovest Kolenichev
2b9f49ee80 Merge android-5.4.8 (de197c5) into msm-5.4
* refs/heads/tmp-de197c5:
  Linux 5.4.8
  mm/hugetlbfs: fix for_each_hstate() loop in init_hugetlbfs_fs()
  mmc: sdhci-of-esdhc: re-implement erratum A-009204 workaround
  mmc: sdhci-of-esdhc: fix up erratum A-008171 workaround
  vhost/vsock: accept only packets with the right dst_cid
  net: ena: fix napi handler misbehavior when the napi budget is zero
  net: phylink: fix interface passed to mac_link_up
  ipv6/addrconf: only check invalid header values when NETLINK_F_STRICT_CHK is set
  bnxt: apply computed clamp value for coalece parameter
  gtp: do not allow adding duplicate tid and ms_addr pdp context
  gtp: fix an use-after-free in ipv4_pdp_find()
  hv_netvsc: Fix tx_table init in rndis_set_subchannel()
  tcp/dccp: fix possible race __inet_lookup_established()
  tcp: do not send empty skb from tcp_write_xmit()
  bonding: fix active-backup transition after link failure
  gtp: avoid zero size hashtable
  gtp: fix wrong condition in gtp_genl_dump_pdp()
  net: marvell: mvpp2: phylink requires the link interrupt
  net: dsa: sja1105: Reconcile the meaning of TPID and TPID2 for E/T and P/Q/R/S
  net/dst: do not confirm neighbor for vxlan and geneve pmtu update
  sit: do not confirm neighbor when do pmtu update
  vti: do not confirm neighbor when do pmtu update
  tunnel: do not confirm neighbor when do pmtu update
  net/dst: add new function skb_dst_update_pmtu_no_confirm
  gtp: do not confirm neighbor when do pmtu update
  ip6_gre: do not confirm neighbor when do pmtu update
  net: add bool confirm_neigh parameter for dst_ops.update_pmtu
  mlxsw: spectrum: Use dedicated policer for VRRP packets
  mlxsw: spectrum_router: Skip loopback RIFs during MAC validation
  bnxt_en: Add missing devlink health reporters for VFs.
  bnxt_en: Fix the logic that creates the health reporters.
  bnxt_en: Remove unnecessary NULL checks for fw_health
  bnxt_en: Fix bp->fw_health allocation and free logic.
  bnxt_en: Return error if FW returns more data than dump length
  bnxt_en: Free context memory in the open path if firmware has been reset.
  bnxt_en: Fix MSIX request logic for RDMA driver.
  udp: fix integer overflow while computing available space in sk_rcvbuf
  tcp: Fix highest_sack and highest_sack_seq
  ptp: fix the race between the release of ptp_clock and cdev
  net: stmmac: dwmac-meson8b: Fix the RGMII TX delay on Meson8b/8m2 SoCs
  net_sched: sch_fq: properly set sk->sk_pacing_status
  net/sched: add delete_empty() to filters and use it in cls_flower
  net/sched: act_mirred: Pull mac prior redir to non mac_header_xmit device
  net: phy: aquantia: add suspend / resume ops for AQR105
  net/mlxfw: Fix out-of-memory error in mfa2 flash burning
  net: dsa: bcm_sf2: Fix IP fragment location and behavior
  cxgb4/cxgb4vf: fix flow control display for auto negotiation
  xfs: fix mount failure crash on invalid iclog memory access
  drm: limit to INT_MAX in create_blob ioctl
  uaccess: disallow > INT_MAX copy sizes
  tomoyo: Don't use nifty names on sockets.
  hrtimer: Annotate lockless access to timer->state
  net: icmp: fix data-race in cmp_global_allow()
  net: add a READ_ONCE() in skb_peek_tail()
  inetpeer: fix data-race in inet_putpeer / inet_putpeer
  netfilter: bridge: make sure to pull arp header in br_nf_forward_arp()
  net/smc: add fallback check to connect()
  powerpc: Fix __clear_user() with KUAP enabled
  6pack,mkiss: fix possible deadlock
  netfilter: ebtables: compat: reject all padding in matches/watchers
  Revert "iwlwifi: assign directly to iwl_trans->cfg in QuZ detection"
  md: make sure desc_nr less than MD_SB_DISKS
  sctp: fix err handling of stream initialization
  Revert "powerpc/vcpu: Assume dedicated processors as non-preempt"
  userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
  kernel: sysctl: make drop_caches write-only
  mm/hugetlbfs: fix error handling when setting up mounts
  selftests: vm: add fragment CONFIG_TEST_VMALLOC
  s390: disable preemption when switching to nodat stack with CALL_ON_STACK
  mailbox: imx: Fix Tx doorbell shutdown path
  ocfs2: fix passing zero to 'PTR_ERR' warning
  s390/cpum_sf: Check for SDBT and SDB consistency
  s390/unwind: filter out unreliable bogus %r14
  libfdt: define INT32_MAX and UINT32_MAX in libfdt_env.h
  mailbox: imx: Clear the right interrupts at shutdown
  s390/zcrypt: handle new reply code FILTERED_BY_HYPERVISOR
  perf regs: Make perf_reg_name() return "unknown" instead of NULL
  perf script: Fix brstackinsn for AUXTRACE
  perf diff: Use llabs() with 64-bit values
  cifs: move cifsFileInfo_put logic into a work-queue
  cdrom: respect device capabilities during opening action
  of: unittest: fix memory leak in attach_node_and_children
  io_uring: io_allocate_scq_urings() should return a sane state
  um: virtio: Keep reading on -EAGAIN
  cifs: Fix use-after-free bug in cifs_reconnect()
  powerpc: Don't add -mabi= flags when building with Clang
  scripts/kallsyms: fix definitely-lost memory leak
  drm/amdgpu: Call find_vma under mmap_sem
  apparmor: fix unsigned len comparison with less than zero
  Drivers: hv: vmbus: Fix crash handler reset of Hyper-V synic
  tools/power/x86/intel-speed-select: Ignore missing config level
  gpio: lynxpoint: Setup correct IRQ handlers
  gpio: mpc8xxx: Don't overwrite default irq_set_type callback
  platform/x86: intel_pmc_core: Add Comet Lake (CML) platform support to intel_pmc_core driver
  platform/x86: intel_pmc_core: Fix the SoC naming inconsistency
  gpio/mpc8xxx: fix qoriq GPIO reading
  habanalabs: skip VA block list update in reset flow
  f2fs: Fix deadlock in f2fs_gc() context during atomic files handling
  scsi: target: iscsi: Wait for all commands to finish before freeing a session
  scsi: iscsi: Don't send data to unbound connection
  scsi: ufs: Fix up auto hibern8 enablement
  scsi: target: core: Release SPC-2 reservations when closing a session
  scsi: NCR5380: Add disconnect_mask module parameter
  scsi: scsi_debug: num_tgts must be >= 0
  scsi: ufs: Fix error handing during hibern8 enter
  scsi: pm80xx: Fix for SATA device discovery
  powerpc/fixmap: Use __fix_to_virt() instead of fix_to_virt()
  watchdog: Fix the race between the release of watchdog_core_data and cdev
  watchdog: prevent deferral of watchdogd wakeup on RT
  watchdog: imx7ulp: Fix reboot hang
  HID: rmi: Check that the RMI_STARTED bit is set before unregistering the RMI transport device
  HID: Improve Windows Precision Touchpad detection.
  libnvdimm/btt: fix variable 'rc' set but not used
  ARM: 8937/1: spectre-v2: remove Brahma-B53 from hardening
  HID: i2c-hid: fix no irq after reset on raydium 3118
  HID: logitech-hidpp: Silence intermittent get_battery_capacity errors
  dt-bindings: Improve validation build error handling
  HID: quirks: Add quirk for HP MSU1465 PIXART OEM mouse
  bcache: at least try to shrink 1 node in bch_mca_scan()
  clk: pxa: fix one of the pxa RTC clocks
  scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE
  powerpc/book3s/mm: Update Oops message to print the correct translation in use
  powerpc/eeh: differentiate duplicate detection message
  powerpc/security: Fix wrong message when RFI Flush is disable
  PCI: rpaphp: Correctly match ibm, my-drc-index to drc-name when using drc-info
  PCI: rpaphp: Annotate and correctly byte swap DRC properties
  PCI: rpaphp: Don't rely on firmware feature to imply drc-info support
  powerpc/pseries/cmm: Implement release() function for sysfs device
  scsi: ufs: fix potential bug which ends in system hang
  PCI: rpaphp: Fix up pointer to first drc-info entry
  scsi: zorro_esp: Limit DMA transfers to 65536 bytes (except on Fastlane)
  scsi: lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): Null pointer dereferences
  Input: ili210x - handle errors from input_mt_init_slots()
  iomap: fix return value of iomap_dio_bio_actor on 32bit systems
  i2c: stm32f7: fix & reorder remove & probe error handling
  iommu/arm-smmu-v3: Don't display an error when IRQ lines are missing
  fs/quota: handle overflows of sysctl fs.quota.* and report as unsigned long
  dma-direct: check for overflows on 32 bit DMA addresses
  irqchip: ingenic: Error out if IRQ domain creation failed
  irqchip/irq-bcm7038-l1: Enable parent IRQ if necessary
  clk: clk-gpio: propagate rate change to parent
  clk: qcom: Allow constant ratio freq tables for rcg
  clk: qcom: smd: Add missing pnoc clock
  f2fs: fix to update dir's i_pino during cross_rename
  scsi: lpfc: Fix duplicate unreg_rpi error in port offline flow
  scsi: lpfc: Fix unexpected error messages during RSCN handling
  scsi: tracing: Fix handling of TRANSFER LENGTH == 0 for READ(6) and WRITE(6)
  jbd2: Fix statistics for the number of logged blocks
  ext4: iomap that extends beyond EOF should be marked dirty
  ext4: update direct I/O read lock pattern for IOCB_NOWAIT
  powerpc/book3s64/hash: Add cond_resched to avoid soft lockup warning
  powerpc/security/book3s64: Report L1TF status in sysfs
  selftests/powerpc: Skip tm-signal-sigreturn-nt if TM not available
  dtc: Use pkg-config to locate libyaml
  clocksource/drivers/timer-of: Use unique device name instead of timer
  clocksource/drivers/asm9260: Add a check for of_clk_get
  leds: trigger: netdev: fix handling on interface rename
  leds: an30259a: add a check for devm_regmap_init_i2c
  leds: lm3692x: Handle failure to probe the regulator
  dmaengine: fsl-qdma: Handle invalid qdma-queue0 IRQ
  dma-mapping: fix handling of dma-ranges for reserved memory (again)
  dma-mapping: Add vmap checks to dma_map_single()
  dma-debug: add a schedule point in debug_dma_dump_mappings()
  powerpc/tools: Don't quote $objdump in scripts
  selftests/powerpc: Fixup clobbers for TM tests
  Input: st1232 - do not reset the chip too early
  powerpc/pseries: Don't fail hash page table insert for bolted mapping
  powerpc/pseries: Mark accumulate_stolen_time() as notrace
  scsi: hisi_sas: Delete the debugfs folder of hisi_sas when the probe fails
  scsi: hisi_sas: Replace in_softirq() check in hisi_sas_task_exec()
  scsi: csiostor: Don't enable IRQs too early
  scsi: lpfc: Fix SLI3 hba in loop mode not discovering devices
  scsi: lpfc: Fix hardlockup in lpfc_abort_handler
  scsi: target: compare full CHAP_A Algorithm strings
  dmaengine: xilinx_dma: Clear desc_pendingcount in xilinx_dma_reset
  iommu/tegra-smmu: Fix page tables in > 4 GiB memory
  iommu: rockchip: Free domain on .domain_free
  platform/x86: peaq-wmi: switch to using polled mode of input devices
  tools/power/x86/intel-speed-select: Remove warning for unused result
  powerpc/papr_scm: Fix an off-by-one check in papr_scm_meta_{get, set}
  f2fs: fix to update time in lazytime mode
  Input: atmel_mxt_ts - disable IRQ across suspend
  scsi: lpfc: Fix list corruption in lpfc_sli_get_iocbq
  gpio: mxc: Only get the second IRQ when there is more than one IRQ
  scsi: mpt3sas: Reject NVMe Encap cmnds to unsupported HBA
  scsi: lpfc: Fix locking on mailbox command completion
  scsi: mpt3sas: Fix clear pending bit in ioctl status
  scsi: lpfc: Fix discovery failures when target device connectivity bounces
  scsi: lpfc: Fix spinlock_irq issues in lpfc_els_flush_cmd()
  Revert "MIPS: futex: Emit Loongson3 sync workarounds within asm"
  Revert "MIPS: futex: Restore \n after sync instructions"
  UPSTREAM: exit: panic before exit_mm() on global init exit
  ANDROID: serdev: Fix platform device support

Conflicts:
	Documentation/devicetree/bindings
	Documentation/devicetree/bindings/Makefile
	kernel/time/hrtimer.c

Change-Id: I271162549a080e2b747572f5c87cfd8fa111da51
Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2020-03-06 19:19:20 -08:00
Shyam Kumar Thella
19b532c6ac leds: qti-flash: Add maximum available flash current prediction
Add support to calculate maximum current available for flash module.
Clients of flash LED makes use of this API qti_flash_led_prepare()
to query maximum available current for different flash LED channels.

Change-Id: I26988b1afb1e57a190aa25061189b71ca3f7ea95
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
2020-02-28 10:36:59 +05:30
Shyam Kumar Thella
58d77b9db0 leds: qti-flash: Add support for qti_flash_led_prepare()
qti_flash_led_prepare() API is used by flash clients (E.g. Camera) to
query maximum current available for flash. Add support for this API
which initially returns maximum current that is supported for flash
LED module (2000 mA). Also, add a sysfs parameter under switch devices
to show max available flash current.

Change-Id: I3aed009a0d7e0f34a6d05a45af34fcd0f37a6fe7
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
Signed-off-by: Guru Das Srinagesh <gurus@codeaurora.org>
2020-02-14 18:01:08 -08:00
qctecmdr
7d3eb3102b Merge "leds: qti-flash: Add individual APIs to enable and disable switch" 2020-02-14 08:25:42 -08:00
Shyam Kumar Thella
47bdf1e475 leds: qti-flash: Add individual APIs to enable and disable switch
Currently qti_flash_led_switch_brightness_set() is used to enable or
disable switch. Split it into separate APIs to enable and disable
switch. This will make it easier to control switches which is required
for implementing slow-sync flash feature.

Change-Id: I668ab872d1d646f97ed8fbfba4dfca6b4db5bc70
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
2020-02-13 10:55:21 +05:30
Subbaraman Narayanamurthy
f0d6115e00 leds: qti-flash: Update interrupt names
Update interrupt names to have "flash" prefix so that all the
interrupts for flash LED can be monitored easily.

Change-Id: Ib7c17ea48110461823702c8d11b7554ddebbbb26
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
2020-02-11 18:09:53 -08:00
Shyam Kumar Thella
d06911ff63 leds: qti-flash: Fix updating flags when disabling flash/torch device
Currently when brightness is zeroed-out for a flash/torch device its
"configured" flag is set to false. Hence the flash/torch device is
ignored when its switch is disabled. This leads to the corresponding
LED channel left enabled. Fix this by setting "configured" flag to
false only when led strobe is de-asserted.

Change-Id: I46c640d3e0db8611343e2e67321db820161dd144
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
2020-02-07 23:30:49 +05:30
Shyam Kumar Thella
8a6773fc9f leds: add support for QTI flash LED driver
QTI flash LED driver supports flash LED module on PM8350C. It is used
for illumination by camera sensor and also for torch application.

Change-Id: Iaa4754591e37db48c0ab360cdf4660d50c908337
Signed-off-by: Shyam Kumar Thella <sthella@codeaurora.org>
2020-01-28 10:36:53 +05:30
Martin Schiller
b6b7636ac4 leds: trigger: netdev: fix handling on interface rename
[ Upstream commit 5f820ed52371b4f5d8c43c93f03408d0dbc01e5b ]

The NETDEV_CHANGENAME code is not "unneeded" like it is stated in commit
4cb6560514 ("leds: trigger: netdev: fix refcnt leak on interface
rename").

The event was accidentally misinterpreted equivalent to
NETDEV_UNREGISTER, but should be equivalent to NETDEV_REGISTER.

This was the case in the original code from the openwrt project.

Otherwise, you are unable to set netdev led triggers for (non-existent)
netdevices, which has to be renamed. This is the case, for example, for
ppp interfaces in openwrt.

Fixes: 06f502f57d ("leds: trigger: Introduce a NETDEV trigger")
Fixes: 4cb6560514 ("leds: trigger: netdev: fix refcnt leak on interface rename")
Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-04 19:17:05 +01:00
Chuhong Yuan
fd2f1bc5b6 leds: an30259a: add a check for devm_regmap_init_i2c
[ Upstream commit fc7b5028f2627133c7c18734715a08829eab4d1f ]

an30259a_probe misses a check for devm_regmap_init_i2c and may cause
problems.
Add a check and print errors like other leds drivers.

Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-04 19:17:03 +01:00
Guido Günther
af4eac2a28 leds: lm3692x: Handle failure to probe the regulator
[ Upstream commit 396128d2ffcba6e1954cfdc9a89293ff79cbfd7c ]

Instead use devm_regulator_get_optional since the regulator
is optional and check for errors.

Signed-off-by: Guido Günther <agx@sigxcpu.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-04 19:17:02 +01:00
Guru Das Srinagesh
67222c1d60 leds: Add snapshot of QTI Tri-LED driver
The QTI Tri-LED driver enables the configuration of the output of LED
channels in the TRI_LED and HR_LED peripherals found in QTI PMICs.

This is a snapshot of the driver taken from msm-4.19 as of commit
cf2cbb63fb60 ("Merge "input: touchscreen: synaptics_tcm: enable touch
driver"") with the following modifications:
  - Remove the setting of struct pwm_output_pattern to NULL in
    __tri_led_config_pwm()
  - Remove LED_KEEP_TRIGGER from qpnp_tri_led_register()
  - Add a MODULE_SOFTDEP link to the QTI PWM LPG driver so that modprobe
    can enforce the functional dependency on it.

Change-Id: I7ceb2ff1a9ed1fec09651744ec2e7b2ba73f1bae
Signed-off-by: Guru Das Srinagesh <gurus@codeaurora.org>
2019-12-10 10:53:13 -08:00
Dan Murphy
6d4faf3b6b leds: lm3532: Fix optional led-max-microamp prop error handling
Fix the error handling for the led-max-microamp property.
Need to check if the property is present and then if it is
retrieve the setting and its max boundary

Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-12 20:45:52 +02:00
Oleh Kravchenko
4016ba8588 led: triggers: Fix dereferencing of null pointer
Error was detected by PVS-Studio:
V522 Dereferencing of the null pointer 'led_cdev->trigger' might take place.

Fixes: 2282e125a4 ("leds: triggers: let struct led_trigger::activate() return an error code")
Signed-off-by: Oleh Kravchenko <oleg@kaa.org.ua>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-05 22:32:45 +02:00
Krzysztof Wilczynski
ba7eb84f71 leds: ti-lmu-common: Move static keyword to the front of declaration
Move the static keyword to the front of declaration of ramp_table,
and resolve the following compiler warning that can be seen when
building with warnings enabled (W=1):

drivers/leds/leds-ti-lmu-common.c:14:1: warning:
  ‘static’ is not at beginning of declaration [-Wold-style-declaration]

Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-03 20:34:46 +02:00
Krzysztof Wilczynski
536129cc9a leds: lm3532: Move static keyword to the front of declarations
Move the static keyword to the front of declarations ramp_table,
als_avrg_table and als_imp_table, and resolve the following
compiler warnings that can be seen when building with warnings
enabled (W=1):

drivers/leds/leds-lm3532.c:209:1: warning:
‘static’ is not at beginning of declaration [-Wold-style-declaration]

drivers/leds/leds-lm3532.c:266:1: warning:
‘static’ is not at beginning of declaration [-Wold-style-declaration]

drivers/leds/leds-lm3532.c:281:1: warning:
‘static’ is not at beginning of declaration [-Wold-style-declaration]

Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-03 20:34:39 +02:00
Andy Shevchenko
4e42104026 leds: trigger: gpio: GPIO 0 is valid
Allow all valid GPIOs to be used in the driver.

Fixes: 17354bfe85 ("leds: Add gpio-led trigger")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:30 +02:00
Gustavo A. R. Silva
d4b02200ae leds: pwm: Use struct_size() helper
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:

struct led_pwm_priv {
	...
        struct led_pwm_data leds[0];
};

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

So, replace the following function:

static inline size_t sizeof_pwm_leds_priv(int num_leds)
{
       return sizeof(struct led_pwm_priv) +
                     (sizeof(struct led_pwm_data) * num_leds);
}

with:

struct_size(priv, leds, count)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:29 +02:00
Gustavo A. R. Silva
1669ec78b8 leds: is31fl32xx: Use struct_size() helper
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:

struct is31fl32xx_priv {
	...
        struct is31fl32xx_led_data leds[0];
};

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

So, replace the following function:

static inline size_t sizeof_is31fl32xx_priv(int num_leds)
{
       return sizeof(struct is31fl32xx_priv) +
                     (sizeof(struct is31fl32xx_led_data) * num_leds);
}

with:

struct_size(priv, leds, count)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:29 +02:00
Dan Murphy
2637fd436c leds: ti-lmu-common: Fix coccinelle issue in TI LMU
Fix the coccinelle issues found in the TI LMU common code

drivers/leds/leds-ti-lmu-common.c:97:20-29: WARNING: Unsigned expression compared with zero: ramp_down < 0
drivers/leds/leds-ti-lmu-common.c:97:5-12: WARNING: Unsigned expression compared with zero: ramp_up < 0

Fixes: 3fce8e1eb9 ("leds: TI LMU: Add common code for TI LMU devices")
Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:28 +02:00
Tony Lindgren
070a0eed75 leds: lm3532: Avoid potentially unpaired regulator calls
We may currently get unpaired regulator calls when configuring the LED
brightness via sysfs in case of regulator calls producing errors. Let's
fix this by maintaining local state for enabled.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:27 +02:00
Alexander Dahl
68bfcf6deb leds: syscon: Use resource managed variant of device register
We have a MFD driver compiled as module instantiating this driver. When
unloading that module, those LED devices are not removed, which produces
conflicts, when that module is inserted again.

Signed-off-by: Alexander Dahl <ada@thorsis.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-09-01 13:33:27 +02:00
Andy Shevchenko
1dbb9fb408 leds: Allow to call led_classdev_unregister() unconditionally
If in the certain driver the LED is optional, and it's a majority of them,
the call of led_classdev_unregister() still requires some additional
checks.

The usual pattern on unregistering is to check for NULL, but we also check
for IS_ERR() in case device_create_with_groups() fails.

The change will reduce a burden in a lot of drivers to repeatedly check
for above conditions.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-26 20:03:58 +02:00
Dan Murphy
517ea49a7b leds: lm3532: Add full scale current configuration
Allow the full scale current to be configured at init.
Valid rangles are 5mA->29.8mA.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-26 20:03:58 +02:00
Dan Murphy
6559ac3299 leds: lm3532: Fixes for the driver for stability
Fixed misspelled words, added error check during probe
on the init of the registers, and fixed ALS/I2C control
mode.

Fixes: bc1b8492c7 ("leds: lm3532: Introduce the lm3532 LED driver")
Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-26 20:03:50 +02:00
Dan Murphy
4c9054506c leds: lm3532: Change the define for the fs current register
Change the define name of the full scale current registers.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-26 20:03:49 +02:00
Dan Murphy
1312394023 leds: lm3532: Fix brightness control for i2c mode
Fix the brightness control for I2C mode.  Instead of
changing the full scale current register update the ALS target
register for the appropriate banks.

In addition clean up some code errors and random misspellings found
during coding.

Tested on Droid4 as well as LM3532 EVM connected to a BeagleBoneBlack

Fixes: bc1b8492c7 ("leds: lm3532: Introduce the lm3532 LED driver")
Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-26 20:03:26 +02:00
Andy Shevchenko
fd81d7e946 leds: Switch to use fwnode instead of be stuck with OF one
There is no need to be stuck with OF node when we may use agnostic
firmware node instead.

It allows users to get property if needed independently of provider.

Note, some OF parts are left because %pfw [1] is in progress.

[1]: https://lore.kernel.org/patchwork/cover/1054863/

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-23 23:39:37 +02:00
Andy Shevchenko
ae6c4c70df leds: max77650: Switch to fwnode property API
Switch the max77650 from OF to the fwnode property API.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-23 23:39:31 +02:00
Wenwen Wang
60e2dde1e9 led: triggers: Fix a memory leak bug
In led_trigger_set(), 'event' is allocated in kasprintf(). However, it is
not deallocated in the following execution if the label 'err_activate' or
'err_add_groups' is entered, leading to memory leaks. To fix this issue,
free 'event' before returning the error.

Fixes: 52c47742f7 ("leds: triggers: send uevent when changing triggers")
Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-20 20:21:22 +02:00
Linus Walleij
3881a72f8d leds: pca953x: Include the right header
This LED chip provides a GPIO driver, so include
<linux/gpio/driver.h> rather than the legacy header
<linux/gpio.h>.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-08-08 20:38:24 +02:00
Jacek Anaszewski
be7fc2cc86 Generic Device Lookup Helpers
Persistent tag for others to pull this branch from
 
 Based on patch series from Suzuki K Poulose <suzuki.poulose@arm.com>
 with Subject: [PATCH v3 0/7] drivers: Add generic device lookup helpers
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl1AL7obHGdyZWdraEBs
 aW51eGZvdW5kYXRpb24ub3JnAAoJEDjbvchgkmk+X9cP/jXGxNeD4Hv2KfpQb32E
 Zl7bnblRwKaheD1s91WzfV8HFgLcylmu2chW/IGpgX7ujHRr5zIu/H8FApK+Z5F+
 8LiF8HnW2GICcSf95VMLNBXFY3wZq7NzOVnLIPvVcLJdOPPEjfYafQwSxB4WYxW5
 UK4JVsLg8SpAOdqA5bGhlOHWaTssLRsktA0VEh4w0uUOxPeel7gh16GRK8GLlKTq
 8lHiIKaN7PL9eDFTjh1wYP6FFgEAQhKexYVDtVj3fcEf8M0ArJTPIuPgaCKUqmD/
 J233RyFAuMtR8N1jY4ScPlnUyHJzNmM1wF77PRupwIAO0opRjTJ2BNI7GwC1hB2J
 xiPWtHrD21MBh2g44v+b/OwFNJ5AvuIlWEdEnrpNyj2KzrZP9H8G8Fy6CjFdVsEU
 HzccNdkfZ0Y2juJjE/HvpPe3t3NjncUgeuFALzgjYrmm/1KVGL16HH2YFvtGZI5P
 wrJVjyjdkRVU2u5I5+lIHRfULSmQIEPvp2BfkHnsmDmLNQbL8eTYCuowpSdbWWYB
 yFxoavHuga7uDW3MPMr6c62csaUXMyeb1y9gCKnUqhg9lxkbGujFsUBVviFKJTvH
 bWt79T2hqShe22JvwoIMSnH0DGpmFxFfdXk5/D7dGJJ5KUFoQ7bI0Q4wB9wW5+C4
 uNqNTLD+o6uyIXD3wwRy/kkN
 =XFYe
 -----END PGP SIGNATURE-----

Merge tag 'generic_lookup_helpers' into for-next

Generic Device Lookup Helpers

Persistent tag for others to pull this branch from

Based on patch series from Suzuki K Poulose <suzuki.poulose@arm.com>
with Subject: [PATCH v3 0/7] drivers: Add generic device lookup helpers

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

* tag 'generic_lookup_helpers':
  platform: Add platform_find_device_by_driver() helper
  drivers: Add generic helper to match any device
  drivers: Introduce device lookup variants by ACPI_COMPANION device
  drivers: Introduce device lookup variants by device type
  drivers: Introduce device lookup variants by fwnode
  drivers: Introduce device lookup variants by of_node
  drivers: Introduce device lookup variants by name
2019-07-30 22:36:31 +02:00
Suzuki K Poulose
6cda08a20d drivers: Introduce device lookup variants by name
Add a helper to match the device name for device lookup. Also
reuse this generic exported helper for the existing bus_find_device_by_name().
and add similar variants for driver/class.

Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexander Aring <alex.aring@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Dan Murphy <dmurphy@ti.com>
Cc: Harald Freudenberger <freude@linux.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: linux-leds@vger.kernel.org
Cc: linux-rtc@vger.kernel.org
Cc: linux-usb@vger.kernel.org
Cc: linux-wpan@vger.kernel.org
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Stefan Schmidt <stefan@datenfreihafen.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20190723221838.12024-2-suzuki.poulose@arm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-07-30 13:07:41 +02:00
Nishka Dasgupta
af7b650549 leds: netxbig: Add of_node_put() in netxbig_leds_get_of_pdata()
The variable gpio_ext_np in the function netxbig_leds_get_of_pdata takes
the value returned by of_parse_phandle; hence, it must be put in order
to prevent a memory leak. Add an of_node_put for gpio_ext_np before a
return statement, and move a pre-existing of_node_put statement to right
after the last usage of this variable.
Issue found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-07-29 21:12:54 +02:00
Masahiro Yamada
156189a6d7 leds: netxbig: remove legacy board-file support
Since commit ebc278f157 ("ARM: mvebu: remove static LED setup for
netxbig boards"), no one in upstream passes in the platform data to
this driver.

Squash leds-kirkwood-netxbig.h into the driver, and remove the legacy
board-file support.

Link: https://lkml.org/lkml/2019/7/20/83
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-07-29 21:04:53 +02:00
Andy Shevchenko
246eab59ee leds: lm3697: Switch to use fwnode_property_count_uXX()
Use fwnode_property_count_uXX() directly, that makes code neater.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-07-25 20:08:03 +02:00
Andy Shevchenko
ebefec8d9f leds: lm36274: Switch to use fwnode_property_count_uXX()
Use fwnode_property_count_uXX() directly, that makes code neater.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-07-25 20:08:03 +02:00
Andy Shevchenko
cc93c86370 leds: lm3532: Switch to use fwnode_property_count_uXX()
Use fwnode_property_count_uXX() directly, that makes code neater.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
2019-07-25 20:08:02 +02:00
Jacek Anaszewski
1817208e14 leds: an30259a: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Simon Shields <simon@lineageos.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:08:02 +02:00
Jacek Anaszewski
d7235f5fea leds: gpio: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:08:01 +02:00
Jacek Anaszewski
b1f24498f1 leds: as3645a: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

After switching to new led_classdev_register_ext() the validity
of struct led_classdev's name property is no longer guaranteed,
and therefore rely on struct device's kobj.name instead.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:08:00 +02:00
Jacek Anaszewski
8103f55852 leds: aat1290: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

After switching to new led_classdev_register_ext() the validity
of struct led_classdev's name property is no longer guaranteed,
and therefore rely on struct device's kobj.name instead.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:07:59 +02:00
Jacek Anaszewski
889003c206 leds: cr0014114: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

At this occassion remove initialization of struct led_classdev's
dev->of_node property in the driver, since now it will be taken from
fwnode assigned to struct led_init_data and passed to the new
devm_led_classdev_register_ext() API.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Oleh Kravchenko <oleg@kaa.org.ua>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:07:58 +02:00
Jacek Anaszewski
e322b75a30 leds: lm3601x: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Tested-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:07:57 +02:00
Jacek Anaszewski
a50ff28348 leds: lm3692x: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

At this occassion remove initialization of struct led_classdev's
dev->of_node property in the driver, since now it will be taken from
fwnode assigned to struct led_init_data and passed to the new
devm_led_classdev_register_ext() API.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Tested-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:07:56 +02:00
Jacek Anaszewski
99ca0ea573 leds: lp8860: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

While at it, avoid iterating through available child of nodes
in favor of obtaining single expected child node using single
call to of_get_next_available_child().

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Tested-by: Dan Murphy <dmurphy@ti.com>
2019-07-25 20:07:55 +02:00
Jacek Anaszewski
68e192078e leds: lt3593: Use generic support for composing LED names
Switch to using generic LED support for composing LED class
device name.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Daniel Mack <daniel@zonque.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
2019-07-25 20:07:54 +02:00