Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arm64: dts: qcom: msm8939-longcheer-l9100: Add sound #295

Draft
wants to merge 1,031 commits into
base: wip/msm8916/6.10-rc5
Choose a base branch
from

Conversation

a-andre
Copy link

@a-andre a-andre commented Mar 4, 2023

No description provided.

// wlf,ldospk = <0x77 0x00 0x00>; // gpio101? downstream spk_vreg
// wlf,init-mic-delay = <0x1f4>;

/* ldo1 {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The driver has a ldo1 property, but driver isn't coming up when I try to use this instead of the fixed regulator regulator-wm8998-ldo. Any ideas what could be wrong?

@a-andre
Copy link
Author

a-andre commented Mar 4, 2023

The integrated microphone doesn't show up. Headset detection seems to work.
But sound doesn't work, yet. Probably because of a missing UCM config.

@stephan-gh stephan-gh changed the base branch from msm8916/6.2-rc5 to msm8916/6.3-rc7 April 22, 2023 15:07
@a-andre a-andre force-pushed the bqm5_sound branch 2 times, most recently from fd30dcc to 47f7bfa Compare April 27, 2023 17:40
@a-andre a-andre changed the base branch from msm8916/6.3-rc7 to msm8916/6.6-rc3 October 2, 2023 20:09
@stephan-gh stephan-gh changed the base branch from msm8916/6.6-rc3 to msm8916/6.6-rc4 October 7, 2023 13:59
@a-andre a-andre force-pushed the bqm5_sound branch 2 times, most recently from a4c1316 to ba70c06 Compare January 6, 2024 18:02
@stephan-gh stephan-gh changed the base branch from msm8916/6.6-rc4 to msm8916/6.7-rc4 January 6, 2024 18:15
@stephan-gh stephan-gh changed the base branch from msm8916/6.7-rc4 to msm8916/wip/msm8916/6.7-rc8 January 6, 2024 18:16
@a-andre a-andre changed the base branch from msm8916/wip/msm8916/6.7-rc8 to wip/msm8916/6.10-rc5 June 28, 2024 21:14
torvalds and others added 13 commits July 10, 2024 09:05
…l/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki:
 "Fix the sorting of _CST output data in the ACPI processor idle driver
  (Kuan-Wei Chiu)"

* tag 'acpi-6.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: processor_idle: Fix invalid comparison with insertion sort for latency
…scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fix from Hans de Goede:
 "One-liner fix for a dmi_system_id array in the toshiba_acpi driver not
  being terminated properly.

  Something which somehow has escaped detection since being introduced
  in 2022 until now"

* tag 'platform-drivers-x86-v6.10-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: toshiba_acpi: Fix array out-of-bounds access
Reported-by: [email protected]
Signed-off-by: Kent Overstreet <[email protected]>
…linux/kernel/git/johan/usb-serial into usb-linus

Johan writes:

USB-serial fixes for 6.10-rc8

Here's a fix for a long-standing issue in the mos7840 driver that can trigger
a crash when resuming from system suspend.

Included are also some new modem device ids.

All have been in linux-next with no reported issues.

* tag 'usb-serial-6.10-rc8' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial:
  USB: serial: mos7840: fix crash on resume
  USB: serial: option: add Rolling RW350-GL variants
  USB: serial: option: add support for Foxconn T99W651
  USB: serial: option: add Netprisma LCUK54 series modules
…hefs

Pull bcachefs fixes from Kent Overstreet:

 - Switch some asserts to WARN()

 - Fix a few "transaction not locked" asserts in the data read retry
   paths and backpointers gc

 - Fix a race that would cause the journal to get stuck on a flush
   commit

 - Add missing fsck checks for the fragmentation LRU

 - The usual assorted ssorted syzbot fixes

* tag 'bcachefs-2024-07-10' of https://evilpiepirate.org/git/bcachefs: (22 commits)
  bcachefs: Add missing bch2_trans_begin()
  bcachefs: Fix missing error check in journal_entry_btree_keys_validate()
  bcachefs: Warn on attempting a move with no replicas
  bcachefs: bch2_data_update_to_text()
  bcachefs: Log mount failure error code
  bcachefs: Fix undefined behaviour in eytzinger1_first()
  bcachefs: Mark bch_inode_info as SLAB_ACCOUNT
  bcachefs: Fix bch2_inode_insert() race path for tmpfiles
  closures: fix closure_sync + closure debugging
  bcachefs: Fix journal getting stuck on a flush commit
  bcachefs: io clock: run timer fns under clock lock
  bcachefs: Repair fragmentation_lru in alloc_write_key()
  bcachefs: add check for missing fragmentation in check_alloc_to_lru_ref()
  bcachefs: bch2_btree_write_buffer_maybe_flush()
  bcachefs: Add missing printbuf_tabstops_reset() calls
  bcachefs: Fix loop restart in bch2_btree_transactions_read()
  bcachefs: Fix bch2_read_retry_nodecode()
  bcachefs: Don't use the new_fs() bucket alloc path on an initialized fs
  bcachefs: Fix shift greater than integer size
  bcachefs: Change bch2_fs_journal_stop() BUG_ON() to warning
  ...
Pull VFIO fix from Alex Williamson:

 - Recent stable backports are exposing a bug introduced in the v6.10
   development cycle where a counter value is uninitialized.  This leads
   to regressions in userspace drivers like QEMU where where the kernel
   might ask for an arbitrary buffer size or return out of memory itself
   based on a bogus value.  Zero initialize the counter.  (Yi Liu)

* tag 'vfio-v6.10' of https://github.com/awilliam/linux-vfio:
  vfio/pci: Init the count variable in collecting hot-reset devices
We should allow RXDMA only if the reset was really successful, so clear
the flag after the reset call.

Fixes: 0e864b5 ("i2c: rcar: reset controller is mandatory for Gen3+")
Signed-off-by: Wolfram Sang <[email protected]>
Signed-off-by: Andi Shyti <[email protected]>
…it/jejb/scsi

Pull SCSI fixes from James Bottomley:
 "One core change that moves a disk start message to a location where it
  will only be printed once instead of twice plus a couple of error
  handling race fixes in the ufs driver"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: sd: Do not repeat the starting disk message
  scsi: ufs: core: Fix ufshcd_abort_one racing issue
  scsi: ufs: core: Fix ufshcd_clear_cmd racing issue
…rg/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:
 "21 hotfixes, 15 of which are cc:stable.

  No identifiable theme here - all are singleton patches, 19 are for MM"

* tag 'mm-hotfixes-stable-2024-07-10-13-19' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (21 commits)
  mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio
  mm/hugetlb: fix potential race in __update_and_free_hugetlb_folio()
  filemap: replace pte_offset_map() with pte_offset_map_nolock()
  arch/xtensa: always_inline get_current() and current_thread_info()
  sched.h: always_inline alloc_tag_{save|restore} to fix modpost warnings
  MAINTAINERS: mailmap: update Lorenzo Stoakes's email address
  mm: fix crashes from deferred split racing folio migration
  lib/build_OID_registry: avoid non-destructive substitution for Perl < 5.13.2 compat
  mm: gup: stop abusing try_grab_folio
  nilfs2: fix kernel bug on rename operation of broken directory
  mm/hugetlb_vmemmap: fix race with speculative PFN walkers
  cachestat: do not flush stats in recency check
  mm/shmem: disable PMD-sized page cache if needed
  mm/filemap: skip to create PMD-sized page cache if needed
  mm/readahead: limit page cache size in page_cache_ra_order()
  mm/filemap: make MAX_PAGECACHE_ORDER acceptable to xarray
  mm/damon/core: merge regions aggressively when max_nr_regions is unmet
  Fix userfaultfd_api to return EINVAL as expected
  mm: vmalloc: check if a hash-index is in cpu_possible_mask
  mm: prevent derefencing NULL ptr in pfn_section_valid()
  ...
The original function call passed size of smap->bucket before the number of
buckets which raises the error 'calloc-transposed-args' on compilation.

Vlastimil Babka added:

The order of parameters can be traced back all the way to 6ac99e8
("bpf: Introduce bpf sk local storage") accross several refactorings,
and that's why the commit is used as a Fixes: tag.

In v6.10-rc1, a different commit 2c321f3 ("mm: change inlined
allocation helpers to account at the call site") however exposed the
order of args in a way that gcc-14 has enough visibility to start
warning about it, because (in !CONFIG_MEMCG case) bpf_map_kvcalloc is
then a macro alias for kvcalloc instead of a static inline wrapper.

To sum up the warning happens when the following conditions are all met:

- gcc-14 is used (didn't see it with gcc-13)
- commit 2c321f3 is present
- CONFIG_MEMCG is not enabled in .config
- CONFIG_WERROR turns this from a compiler warning to error

Fixes: 6ac99e8 ("bpf: Introduce bpf sk local storage")
Reviewed-by: Andrii Nakryiko <[email protected]>
Tested-by: Christian Kujau <[email protected]>
Signed-off-by: Mohammad Shehar Yaar Tausif <[email protected]>
Signed-off-by: Vlastimil Babka <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Alexei Starovoitov <[email protected]>
Given a schedule:

timer1 cb			timer2 cb

bpf_timer_cancel(timer2);	bpf_timer_cancel(timer1);

Both bpf_timer_cancel calls would wait for the other callback to finish
executing, introducing a lockup.

Add an atomic_t count named 'cancelling' in bpf_hrtimer. This keeps
track of all in-flight cancellation requests for a given BPF timer.
Whenever cancelling a BPF timer, we must check if we have outstanding
cancellation requests, and if so, we must fail the operation with an
error (-EDEADLK) since cancellation is synchronous and waits for the
callback to finish executing. This implies that we can enter a deadlock
situation involving two or more timer callbacks executing in parallel
and attempting to cancel one another.

Note that we avoid incrementing the cancelling counter for the target
timer (the one being cancelled) if bpf_timer_cancel is not invoked from
a callback, to avoid spurious errors. The whole point of detecting
cur->cancelling and returning -EDEADLK is to not enter a busy wait loop
(which may or may not lead to a lockup). This does not apply in case the
caller is in a non-callback context, the other side can continue to
cancel as it sees fit without running into errors.

Background on prior attempts:

Earlier versions of this patch used a bool 'cancelling' bit and used the
following pattern under timer->lock to publish cancellation status.

lock(t->lock);
t->cancelling = true;
mb();
if (cur->cancelling)
	return -EDEADLK;
unlock(t->lock);
hrtimer_cancel(t->timer);
t->cancelling = false;

The store outside the critical section could overwrite a parallel
requests t->cancelling assignment to true, to ensure the parallely
executing callback observes its cancellation status.

It would be necessary to clear this cancelling bit once hrtimer_cancel
is done, but lack of serialization introduced races. Another option was
explored where bpf_timer_start would clear the bit when (re)starting the
timer under timer->lock. This would ensure serialized access to the
cancelling bit, but may allow it to be cleared before in-flight
hrtimer_cancel has finished executing, such that lockups can occur
again.

Thus, we choose an atomic counter to keep track of all outstanding
cancellation requests and use it to prevent lockups in case callbacks
attempt to cancel each other while executing in parallel.

Reported-by: Dohyun Kim <[email protected]>
Reported-by: Neel Natu <[email protected]>
Fixes: b00628b ("bpf: Introduce bpf timers.")
Signed-off-by: Kumar Kartikeya Dwivedi <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Alexei Starovoitov <[email protected]>
Currently, the same case as previous patch (two timer callbacks trying
to cancel each other) can be invoked through bpf_map_update_elem as
well, or more precisely, freeing map elements containing timers. Since
this relies on hrtimer_cancel as well, it is prone to the same deadlock
situation as the previous patch.

It would be sufficient to use hrtimer_try_to_cancel to fix this problem,
as the timer cannot be enqueued after async_cancel_and_free. Once
async_cancel_and_free has been done, the timer must be reinitialized
before it can be armed again. The callback running in parallel trying to
arm the timer will fail, and freeing bpf_hrtimer without waiting is
sufficient (given kfree_rcu), and bpf_timer_cb will return
HRTIMER_NORESTART, preventing the timer from being rearmed again.

However, there exists a UAF scenario where the callback arms the timer
before entering this function, such that if cancellation fails (due to
timer callback invoking this routine, or the target timer callback
running concurrently). In such a case, if the timer expiration is
significantly far in the future, the RCU grace period expiration
happening before it will free the bpf_hrtimer state and along with it
the struct hrtimer, that is enqueued.

Hence, it is clear cancellation needs to occur after
async_cancel_and_free, and yet it cannot be done inline due to deadlock
issues. We thus modify bpf_timer_cancel_and_free to defer work to the
global workqueue, adding a work_struct alongside rcu_head (both used at
_different_ points of time, so can share space).

Update existing code comments to reflect the new state of affairs.

Fixes: b00628b ("bpf: Introduce bpf timers.")
Signed-off-by: Kumar Kartikeya Dwivedi <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Alexei Starovoitov <[email protected]>
stephan-gh and others added 29 commits July 17, 2024 18:35
v2: Make reset-gpios GPIO_ACTIVE_LOW
v3: Add &mdss { status = "okay"; };

Signed-off-by: Stephan Gerhold <[email protected]>
…anel (v4)

Signed-off-by: Gaëtan André <[email protected]>

v2: Make reset-gpios GPIO_ACTIVE_LOW
v3: Add &mdss { status = "okay"; };
v4: - Set up fixed regulators properly
    - Allow turning off LCD regulator
    - Set up clk-pwm for brightness control
    - Use panel-simple instead

Signed-off-by: Stephan Gerhold <[email protected]>
This adds headphone jack detection for samsung-gtelwifiue. This
is required for headset microphones to work.

Signed-off-by: Michael Abood <[email protected]>
The device uses nt51017 based display panel. Add it.

Signed-off-by: Michael Abood <[email protected]>
v2: Make reset-gpios GPIO_ACTIVE_LOW
v3: Add &mdss { status = "okay"; };

Signed-off-by: Markuss Broks <[email protected]>

v4: Move from msm8916-samsung-j5
Signed-off-by: Lin, Meng-Bo <[email protected]>
Add regulators for the panel on J3. Note that l17 is required.

Signed-off-by: Lin, Meng-Bo <[email protected]>
J3 and J5X use an Imagis IST3038C touchscreen that is connected to
blsp_i2c5. Add it to the device tree.

Regulator and MFD drivers for SM5703 are unavailable at the moment, which
is required to power up the touchscreen on J5, so it's disabled on J5 for
now.

Signed-off-by: Lin, Meng-Bo <[email protected]>
Signed-off-by: Lin, Meng-Bo <[email protected]>
v4: Split from common commit after j5 upstreaming
Signed-off-by: Stephan Gerhold <[email protected]>
…tection (v2)

v2: Moved from msm8916-samsung-j5x

Headset microphone is broken with this on j5x, headphone buttons are
broken as well. (Needs more investigation...)

Signed-off-by: Lin, Meng-Bo <[email protected]>
E7 uses a ST-Microelectronics FingerTip touchscreen that is connected to
blsp_i2c5. Add it to the device tree.

v2: Add suffix "-state" to pinctrl.

Signed-off-by: "Lin, Meng-Bo" <[email protected]>
v2: Add suffix "-state" to pinctrl.

Signed-off-by: "Lin, Meng-Bo" <[email protected]>
Grand Max uses an Imagis IST3038 touchscreen that is connected to
blsp_i2c5. Add it to the device tree.

Signed-off-by: "Lin, Meng-Bo" <[email protected]>
v2: Add touch keys
Signed-off-by: Raymond Hackley <[email protected]>
v2: Set &mdss_dsi0 and &mdss_dsi0_phy with status = "okay";
v3: adapted for current msm8939.dtsi (mdss_dsi0 and mdss_dsi0_phy)
[vknecht: adapted for current msm8939.dtsi (mdss_dsi0 and mdss_dsi0_phy)]
v4: adapted for current msm8939.dtsi (dsi0 and dsi_phy0)
Add suffix "-state" to pinctrl.
Put status = "okay"; at the end of the properties
v5: Add missed status for the dsi phy

Signed-off-by: "Lin, Meng-Bo" <[email protected]>
v2: Add suffix "-state" to pinctrl.

Signed-off-by: Lin, Meng-Bo <[email protected]>
- Sensors (magnetometer)
- Display
- Sound (headphones and speakers)

Signed-off-by: lukas walter <[email protected]>
v3: Split up from upstreamed patch
Add support for SMB1360 fuel gauge & charger circuit.

Signed-off-by: Vincent Knecht <[email protected]>
v2: Increase timeout to 768
Signed-off-by: Jakob Hauser <[email protected]>
Signed-off-by: André Apitzsch <[email protected]>
v4: split from initial commit after upstreaming
Signed-off-by: Stephan Gerhold <[email protected]>
Add support for SMB1360 fuel gauge and charger circuit.

Signed-off-by: André Apitzsch <[email protected]>
v2: Increase timeout to 768
Signed-off-by: Jakob Hauser <[email protected]>
Signed-off-by: André Apitzsch <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.