Linux 6.7.1
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.7.1 kernel.
All users of the 6.7 kernel series must upgrade.
The updated 6.7.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.7.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/features.rst | 2 Documentation/arch/arc/features.rst | 2 Documentation/arch/arm/features.rst | 2 Documentation/arch/arm64/features.rst | 2 Documentation/arch/loongarch/features.rst | 2 Documentation/arch/m68k/features.rst | 2 Documentation/arch/mips/features.rst | 2 Documentation/arch/nios2/features.rst | 2 Documentation/arch/openrisc/features.rst | 2 Documentation/arch/parisc/features.rst | 2 Documentation/arch/powerpc/features.rst | 2 Documentation/arch/riscv/features.rst | 2 Documentation/arch/s390/features.rst | 2 Documentation/arch/sh/features.rst | 2 Documentation/arch/sparc/features.rst | 2 Documentation/arch/x86/features.rst | 2 Documentation/arch/xtensa/features.rst | 2 Documentation/sphinx/kernel_feat.py | 55 ---- Documentation/translations/zh_CN/arch/loongarch/features.rst | 2 Documentation/translations/zh_CN/arch/mips/features.rst | 2 Documentation/translations/zh_TW/arch/loongarch/features.rst | 2 Documentation/translations/zh_TW/arch/mips/features.rst | 2 Makefile | 2 drivers/acpi/resource.c | 7 drivers/android/binder.c | 2 drivers/android/binder_alloc.c | 10 drivers/bus/moxtet.c | 9 drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 4 drivers/gpu/drm/amd/display/dc/bios/command_table2.c | 12 - drivers/gpu/drm/amd/display/dc/bios/command_table2.h | 2 drivers/gpu/drm/amd/display/dc/dc_bios_types.h | 2 drivers/gpu/drm/amd/display/dc/dce/dmub_abm.c | 8 drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.c | 7 drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.h | 2 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c | 5 drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c | 16 - drivers/gpu/drm/amd/display/dc/hwss/dcn21/dcn21_hwseq.c | 36 ++- drivers/gpu/drm/amd/display/dc/inc/hw/abm.h | 3 drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h | 2 drivers/gpu/drm/amd/display/dc/link/link_factory.c | 59 +++-- drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h | 14 + drivers/hwtracing/coresight/coresight-etm4x.h | 2 drivers/leds/trigger/ledtrig-tty.c | 4 drivers/md/raid5.c | 12 - drivers/parport/parport_serial.c | 64 +++++ drivers/pci/quirks.c | 8 drivers/uio/uio.c | 7 fs/f2fs/xattr.c | 6 fs/smb/server/smb2pdu.c | 23 -- fs/smb/server/smbacl.c | 11 mm/memory_hotplug.c | 8 scripts/decode_stacktrace.sh | 19 + sound/pci/hda/cs35l41_hda.c | 25 +- sound/pci/hda/cs35l41_hda.h | 12 - sound/pci/hda/cs35l41_hda_i2c.c | 2 sound/pci/hda/cs35l41_hda_property.c | 126 +++++++---- sound/pci/hda/cs35l41_hda_spi.c | 2 sound/pci/hda/patch_realtek.c | 18 + 58 files changed, 441 insertions(+), 207 deletions(-)
Cameron Williams (2):
parport: parport_serial: Add Brainboxes BAR details
parport: parport_serial: Add Brainboxes device IDs and geometry
Carlos Llamas (5):
binder: use EPOLLERR from eventpoll.h
binder: fix use-after-free in shinker's callback
binder: fix trivial typo of binder_free_buf_locked()
binder: fix comment on binder_alloc_new_buf() return value scripts/decode_stacktrace.sh: optionally use LLVM utilities
Dorian Cruveiller (2):
ALSA: hda: Add driver properties for cs35l41 for Lenovo Legion Slim 7 Gen 8 serie
ALSA: hda/realtek: enable SND_PCI_QUIRK for Lenovo Legion Slim 7 Gen 8 (2023) serie
Eric Biggers (1):
f2fs: explicitly null-terminate the xattr list
Fedor Pchelkin (1):
ksmbd: free ppace array on error in parse_dacl
Florian Eckert (1):
leds: ledtrig-tty: Free allocated ttyname buffer on deactivate
Greg Kroah-Hartman (1):
Linux 6.7.1
Guanghui Feng (1):
uio: Fix use-after-free in uio_open
Hans de Goede (1):
ACPI: resource: Add another DMI match for the TongFang GMxXGxx
James Clark (1):
coresight: etm4x: Fix width of CCITMIN field
Junxiao Bi (1):
Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"
LeoLiuoc (1):
PCI: Add ACS quirk for more Zhaoxin Root Ports
Lewis Huang (1):
drm/amd/display: Pass pwrseq inst for backlight and ABM
Lorenz Brun (1):
ALSA: hda: cs35l41: Support more HP models without _DSD
Namjae Jeon (1):
ksmbd: don't allow O_TRUNC open on read-only share
Sjoerd Simons (2):
bus: moxtet: Mark the irq as shared
bus: moxtet: Add spi device table
Stefan Binding (3):
ALSA: hda/realtek: Add quirks for Dell models
ALSA: hda: cs35l41: Support additional Dell models without _DSD
ALSA: hda: cs35l41: Prevent firmware load if SPI speed too low
Sumanth Korikkar (1):
mm/memory_hotplug: fix memmap_on_memory sysfs value retrieval
Tom Jason Schwanke (1):
ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP Envy X360 13-ay0xxx
Vegard Nossum (1):
docs: kernel_feat.py: fix potential command injection
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features +.. kernel-feat:: features
Documentation/arch/arc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arc +.. kernel-feat:: features arc
Documentation/arch/arm/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arm +.. kernel-feat:: features arm
Documentation/arch/arm64/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arm64 +.. kernel-feat:: features arm64
Documentation/arch/loongarch/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features loongarch +.. kernel-feat:: features loongarch
Documentation/arch/m68k/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features m68k +.. kernel-feat:: features m68k
Documentation/arch/mips/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features mips +.. kernel-feat:: features mips
Documentation/arch/nios2/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features nios2 +.. kernel-feat:: features nios2
Documentation/arch/openrisc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features openrisc +.. kernel-feat:: features openrisc
Documentation/arch/parisc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features parisc +.. kernel-feat:: features parisc
Documentation/arch/powerpc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features powerpc +.. kernel-feat:: features powerpc
Documentation/arch/riscv/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features riscv +.. kernel-feat:: features riscv
Documentation/arch/s390/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features s390 +.. kernel-feat:: features s390
Documentation/arch/sh/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features sh +.. kernel-feat:: features sh
Documentation/arch/sparc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features sparc +.. kernel-feat:: features sparc
Documentation/arch/x86/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features x86 +.. kernel-feat:: features x86
Documentation/arch/xtensa/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features xtensa +.. kernel-feat:: features xtensa
Documentation/sphinx/kernel_feat.py +11 -44
82 lines not on this page · raw message
Documentation/translations/zh_CN/arch/loongarch/features.rst +1 -1
@@ -5,4 +5,4 @@ :Original: Documentation/arch/loongarch/features.rst :Translator: Huacai Chen <[email protected]> -.. kernel-feat:: $srctree/Documentation/features loongarch +.. kernel-feat:: features loongarch
Documentation/translations/zh_CN/arch/mips/features.rst +1 -1
@@ -10,4 +10,4 @@ .. _cn_features: -.. kernel-feat:: $srctree/Documentation/features mips +.. kernel-feat:: features mips
Documentation/translations/zh_TW/arch/loongarch/features.rst +1 -1
@@ -5,5 +5,5 @@ :Original: Documentation/arch/loongarch/features.rst :Translator: Huacai Chen <[email protected]> -.. kernel-feat:: $srctree/Documentation/features loongarch +.. kernel-feat:: features loongarch
Documentation/translations/zh_TW/arch/mips/features.rst +1 -1
@@ -10,5 +10,5 @@ .. _tw_features: -.. kernel-feat:: $srctree/Documentation/features mips +.. kernel-feat:: features mips
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 7 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
drivers/acpi/resource.c +7 -0
@@ -510,6 +510,13 @@ static const struct dmi_system_id irq1_edge_low_force_override[] = { DMI_MATCH(DMI_BOARD_NAME, "GMxXGxx"), }, }, + { +/* TongFang GMxXGxx sold as Eluktronics Inc. RP-15 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Eluktronics Inc." ), + DMI_MATCH(DMI_BOARD_NAME, "RP-15"), + }, + }, {/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ .matches = {
drivers/android/binder.c +1 -1
@@ -5030,7 +5030,7 @@ static __poll_t binder_poll(struct file *filp, thread =binder_get_thread (proc);if (!thread) -return POLLERR ; +return EPOLLERR ;binder_inner_proc_lock (thread->proc); thread->looper |=BINDER_LOOPER_STATE_POLL ;
drivers/android/binder_alloc.c +7 -3
@@ -557,7 +557,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked(* is the sum of the three given sizes (each rounded up to * pointer-sized boundary) * -* Return: The allocated buffer or %NULL if error +* Return: The allocated buffer or %ERR_PTR(-errno) if error */ struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc, size_t data_size,
@@ -706,7 +706,7 @@ void binder_alloc_free_buf(struct binder_alloc *alloc,/* * We could eliminate the call to binder_alloc_clear_buf() * from binder_alloc_deferred_release() by moving this to -* binder_alloc_free_buf_locked(). However, that could +* binder_free_buf_locked(). However, that could * increase contention for the alloc mutex if clear_on_free * is used frequently for large buffers. The mutex is not * needed for correctness here.
@@ -1005,7 +1005,9 @@ enum lru_status binder_alloc_free_page(struct list_head *item, goto err_mmget;if (!mmap_read_trylock (mm)) goto err_mmap_read_lock_failed; - vma =binder_alloc_get_vma (alloc); + vma =vma_lookup (mm, page_addr); +if (vma && vma !=binder_alloc_get_vma (alloc)) + goto err_invalid_vma;list_lru_isolate (lru, item);spin_unlock (lock);
@@ -1031,6 +1033,8 @@ enum lru_status binder_alloc_free_page(struct list_head *item,mutex_unlock (&alloc->mutex);return LRU_REMOVED_RETRY ; +err_invalid_vma: +mmap_read_unlock (mm); err_mmap_read_lock_failed:mmput_async (mm); err_mmget:
drivers/bus/moxtet.c +8 -1
@@ -755,7 +755,7 @@ static int moxtet_irq_setup(struct moxtet *moxtet) moxtet->irq.masked = ~0 ; ret =request_threaded_irq (moxtet->dev_irq,NULL , moxtet_irq_thread_fn, -IRQF_ONESHOT ,"moxtet" , moxtet); +IRQF_SHARED |IRQF_ONESHOT ,"moxtet" , moxtet);if (ret <0 ) goto err_free;
@@ -830,6 +830,12 @@ static void moxtet_remove(struct spi_device *spi)mutex_destroy (&moxtet->lock); } +static const struct spi_device_id moxtet_spi_ids[] = { + {"moxtet" }, + { }, +}; +MODULE_DEVICE_TABLE (spi, moxtet_spi_ids); +static const struct of_device_id moxtet_dt_ids[] = { { .compatible ="cznic,moxtet" }, {},
@@ -841,6 +847,7 @@ static struct spi_driver moxtet_spi_driver = { .name = "moxtet", .of_match_table = moxtet_dt_ids, }, + .id_table = moxtet_spi_ids, .probe = moxtet_probe, .remove = moxtet_remove, };
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +2 -2
@@ -1698,7 +1698,7 @@ static enum bp_result bios_parser_enable_disp_power_gating(static enum bp_result bios_parser_enable_lvtma_control (struct dc_bios *dcb,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait) {struct bios_parser *bp =BP_FROM_DCB (dcb);
@@ -1706,7 +1706,7 @@ static enum bp_result bios_parser_enable_lvtma_control(if (!bp->cmd_tbl.enable_lvtma_control)return BP_RESULT_FAILURE ; -return bp->cmd_tbl.enable_lvtma_control (bp, uc_pwr_on, panel_instance, bypass_panel_control_wait); +return bp->cmd_tbl.enable_lvtma_control (bp, uc_pwr_on, pwrseq_instance, bypass_panel_control_wait); } static bool bios_parser_is_accelerated_mode(
drivers/gpu/drm/amd/display/dc/bios/command_table2.c +6 -6
@@ -976,7 +976,7 @@ static unsigned int get_smu_clock_info_v3_1(struct bios_parser *bp, uint8_t id)static enum bp_result enable_lvtma_control (struct bios_parser *bp,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait);static void init_enable_lvtma_control (struct bios_parser *bp)
@@ -989,7 +989,7 @@ static void init_enable_lvtma_control(struct bios_parser *bp)static void enable_lvtma_control_dmcub (struct dc_dmub_srv *dmcub,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait) {
@@ -1002,8 +1002,8 @@ static void enable_lvtma_control_dmcub(DMUB_CMD__VBIOS_LVTMA_CONTROL ; cmd.lvtma_control.data.uc_pwr_action = uc_pwr_on; - cmd.lvtma_control.data.panel_inst = - panel_instance; + cmd.lvtma_control.data.pwrseq_inst = + pwrseq_instance; cmd.lvtma_control.data.bypass_panel_control_wait = bypass_panel_control_wait;dm_execute_dmub_cmd (dmcub->ctx, &cmd,DM_DMUB_WAIT_TYPE_WAIT );
@@ -1012,7 +1012,7 @@ static void enable_lvtma_control_dmcub(static enum bp_result enable_lvtma_control (struct bios_parser *bp,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait) {enum bp_result result =BP_RESULT_FAILURE ;
@@ -1021,7 +1021,7 @@ static enum bp_result enable_lvtma_control( bp->base.ctx->dc->debug.dmub_command_table) {enable_lvtma_control_dmcub (bp->base.ctx->dmub_srv, uc_pwr_on, - panel_instance, + pwrseq_instance, bypass_panel_control_wait);return BP_RESULT_OK ; }
drivers/gpu/drm/amd/display/dc/bios/command_table2.h +1 -1
@@ -96,7 +96,7 @@ struct cmd_tbl { struct bios_parser *bp, uint8_t id);enum bp_result (*enable_lvtma_control)(struct bios_parser *bp,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait); };
drivers/gpu/drm/amd/display/dc/dc_bios_types.h +1 -1
@@ -140,7 +140,7 @@ struct dc_vbios_funcs {enum bp_result (*enable_lvtma_control)(struct dc_bios *bios,uint8_t uc_pwr_on, -uint8_t panel_instance, +uint8_t pwrseq_instance,uint8_t bypass_panel_control_wait); enum bp_result (*get_soc_bb_info)(
drivers/gpu/drm/amd/display/dc/dce/dmub_abm.c +6 -2
@@ -145,7 +145,11 @@ static bool dmub_abm_save_restore_ex(return ret; } -static bool dmub_abm_set_pipe_ex (struct abm *abm,uint32_t otg_inst,uint32_t option,uint32_t panel_inst) +static bool dmub_abm_set_pipe_ex (struct abm *abm, +uint32_t otg_inst, +uint32_t option, +uint32_t panel_inst, +uint32_t pwrseq_inst) {bool ret = false;unsigned int feature_support;
@@ -153,7 +157,7 @@ static bool dmub_abm_set_pipe_ex(struct abm *abm, uint32_t otg_inst, uint32_t op feature_support =abm_feature_support (abm, panel_inst);if (feature_support ==ABM_LCD_SUPPORT ) - ret =dmub_abm_set_pipe (abm, otg_inst, option, panel_inst); + ret =dmub_abm_set_pipe (abm, otg_inst, option, panel_inst, pwrseq_inst);return ret; }
drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.c +6 -1
@@ -254,7 +254,11 @@ bool dmub_abm_save_restore(return true; } -bool dmub_abm_set_pipe (struct abm *abm,uint32_t otg_inst,uint32_t option,uint32_t panel_inst) +bool dmub_abm_set_pipe (struct abm *abm, +uint32_t otg_inst, +uint32_t option, +uint32_t panel_inst, +uint32_t pwrseq_inst) {union dmub_rb_cmd cmd;struct dc_context *dc = abm->ctx;
@@ -264,6 +268,7 @@ bool dmub_abm_set_pipe(struct abm *abm, uint32_t otg_inst, uint32_t option, uint cmd.abm_set_pipe.header.type =DMUB_CMD__ABM ; cmd.abm_set_pipe.header.sub_type =DMUB_CMD__ABM_SET_PIPE ; cmd.abm_set_pipe.abm_set_pipe_data.otg_inst = otg_inst; + cmd.abm_set_pipe.abm_set_pipe_data.pwrseq_inst = pwrseq_inst; cmd.abm_set_pipe.abm_set_pipe_data.set_pipe_option = option; cmd.abm_set_pipe.abm_set_pipe_data.panel_inst = panel_inst; cmd.abm_set_pipe.abm_set_pipe_data.ramping_boundary = ramping_boundary;
drivers/gpu/drm/amd/display/dc/dce/dmub_abm_lcd.h +1 -1
@@ -44,7 +44,7 @@ bool dmub_abm_save_restore(struct dc_context *dc, unsigned int panel_inst, struct abm_save_restore *pData); -bool dmub_abm_set_pipe (struct abm *abm,uint32_t otg_inst,uint32_t option,uint32_t panel_inst); +bool dmub_abm_set_pipe (struct abm *abm,uint32_t otg_inst,uint32_t option,uint32_t panel_inst,uint32_t pwrseq_inst); bool dmub_abm_set_backlight_level(struct abm *abm, unsigned int backlight_pwm_u16_16, unsigned int frame_ramp,
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c +3 -2
@@ -50,7 +50,7 @@ static bool dcn31_query_backlight_info(struct panel_cntl *panel_cntl, union dmub cmd->panel_cntl.header.type =DMUB_CMD__PANEL_CNTL ; cmd->panel_cntl.header.sub_type =DMUB_CMD__PANEL_CNTL_QUERY_BACKLIGHT_INFO ; cmd->panel_cntl.header.payload_bytes =sizeof (cmd->panel_cntl.data); - cmd->panel_cntl.data.inst = dcn31_panel_cntl->base.inst; + cmd->panel_cntl.data.pwrseq_inst = dcn31_panel_cntl->base.pwrseq_inst;return dm_execute_dmub_cmd (dc_dmub_srv->ctx, cmd,DM_DMUB_WAIT_TYPE_WAIT_WITH_REPLY ); }
@@ -78,7 +78,7 @@ static uint32_t dcn31_panel_cntl_hw_init(struct panel_cntl *panel_cntl) cmd.panel_cntl.header.type =DMUB_CMD__PANEL_CNTL ; cmd.panel_cntl.header.sub_type =DMUB_CMD__PANEL_CNTL_HW_INIT ; cmd.panel_cntl.header.payload_bytes =sizeof (cmd.panel_cntl.data); - cmd.panel_cntl.data.inst = dcn31_panel_cntl->base.inst; + cmd.panel_cntl.data.pwrseq_inst = dcn31_panel_cntl->base.pwrseq_inst; cmd.panel_cntl.data.bl_pwm_cntl = panel_cntl->stored_backlight_registers.BL_PWM_CNTL; cmd.panel_cntl.data.bl_pwm_period_cntl = panel_cntl->stored_backlight_registers.BL_PWM_PERIOD_CNTL; cmd.panel_cntl.data.bl_pwm_ref_div1 =
@@ -157,4 +157,5 @@ void dcn31_panel_cntl_construct( dcn31_panel_cntl->base.funcs = &dcn31_link_panel_cntl_funcs; dcn31_panel_cntl->base.ctx = init_data->ctx; dcn31_panel_cntl->base.inst = init_data->inst; + dcn31_panel_cntl->base.pwrseq_inst = init_data->pwrseq_inst; }
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c +8 -8
@@ -790,7 +790,7 @@ void dce110_edp_power_control(struct dc_context *ctx = link->ctx;struct bp_transmitter_control cntl = {0 };enum bp_result bp_result; -uint8_t panel_instance; +uint8_t pwrseq_instance; if (dal_graphics_object_id_get_connector_id(link->link_enc->connector)
@@ -873,7 +873,7 @@ void dce110_edp_power_control( cntl.coherent = false; cntl.lanes_number =LANE_COUNT_FOUR ; cntl.hpd_sel = link->link_enc->hpd_source; - panel_instance = link->panel_cntl->inst; + pwrseq_instance = link->panel_cntl->pwrseq_inst;if (ctx->dc->ctx->dmub_srv && ctx->dc->debug.dmub_command_table) {
@@ -881,11 +881,11 @@ void dce110_edp_power_control(if (cntl.action ==TRANSMITTER_CONTROL_POWER_ON ) { bp_result = ctx->dc_bios->funcs->enable_lvtma_control (ctx->dc_bios,LVTMA_CONTROL_POWER_ON , - panel_instance, link->link_powered_externally); + pwrseq_instance, link->link_powered_externally); }else { bp_result = ctx->dc_bios->funcs->enable_lvtma_control (ctx->dc_bios,LVTMA_CONTROL_POWER_OFF , - panel_instance, link->link_powered_externally); + pwrseq_instance, link->link_powered_externally); } }
@@ -956,7 +956,7 @@ void dce110_edp_backlight_control( {struct dc_context *ctx = link->ctx;struct bp_transmitter_control cntl = {0 }; -uint8_t panel_instance; +uint8_t pwrseq_instance;unsigned int pre_T11_delay =OLED_PRE_T11_DELAY ;unsigned int post_T7_delay =OLED_POST_T7_DELAY ;
@@ -1009,7 +1009,7 @@ void dce110_edp_backlight_control(*/ /* dc_service_sleep_in_milliseconds(50); */ /*edp 1.2*/ - panel_instance = link->panel_cntl->inst; + pwrseq_instance = link->panel_cntl->pwrseq_inst;if (cntl.action ==TRANSMITTER_CONTROL_BACKLIGHT_ON ) {if (!link->dc->config.edp_no_power_sequencing)
@@ -1034,11 +1034,11 @@ void dce110_edp_backlight_control(if (cntl.action ==TRANSMITTER_CONTROL_BACKLIGHT_ON ) ctx->dc_bios->funcs->enable_lvtma_control (ctx->dc_bios,LVTMA_CONTROL_LCD_BLON , - panel_instance, link->link_powered_externally); + pwrseq_instance, link->link_powered_externally);else ctx->dc_bios->funcs->enable_lvtma_control (ctx->dc_bios,LVTMA_CONTROL_LCD_BLOFF , - panel_instance, link->link_powered_externally); + pwrseq_instance, link->link_powered_externally); }link_transmitter_control (ctx->dc_bios, &cntl);
drivers/gpu/drm/amd/display/dc/hwss/dcn21/dcn21_hwseq.c +28 -8
@@ -137,7 +137,8 @@ void dcn21_PLAT_58856_wa(struct dc_state *context, struct pipe_ctx *pipe_ctx) pipe_ctx->stream->dpms_off = true; } -static bool dmub_abm_set_pipe (struct abm *abm,uint32_t otg_inst,uint32_t option,uint32_t panel_inst) +static bool dmub_abm_set_pipe (struct abm *abm,uint32_t otg_inst, +uint32_t option,uint32_t panel_inst,uint32_t pwrseq_inst) {union dmub_rb_cmd cmd;struct dc_context *dc = abm->ctx;
@@ -147,6 +148,7 @@ static bool dmub_abm_set_pipe(struct abm *abm, uint32_t otg_inst, uint32_t optio cmd.abm_set_pipe.header.type =DMUB_CMD__ABM ; cmd.abm_set_pipe.header.sub_type =DMUB_CMD__ABM_SET_PIPE ; cmd.abm_set_pipe.abm_set_pipe_data.otg_inst = otg_inst; + cmd.abm_set_pipe.abm_set_pipe_data.pwrseq_inst = pwrseq_inst; cmd.abm_set_pipe.abm_set_pipe_data.set_pipe_option = option; cmd.abm_set_pipe.abm_set_pipe_data.panel_inst = panel_inst; cmd.abm_set_pipe.abm_set_pipe_data.ramping_boundary = ramping_boundary;
@@ -179,7 +181,6 @@ void dcn21_set_abm_immediate_disable(struct pipe_ctx *pipe_ctx)struct abm *abm = pipe_ctx->stream_res.abm;uint32_t otg_inst = pipe_ctx->stream_res.tg->inst;struct panel_cntl *panel_cntl = pipe_ctx->stream->link->panel_cntl; -struct dmcu *dmcu = pipe_ctx->stream->ctx->dc->res_pool->dmcu;if (dmcu) {
@@ -190,9 +191,13 @@ void dcn21_set_abm_immediate_disable(struct pipe_ctx *pipe_ctx)if (abm && panel_cntl) {if (abm->funcs && abm->funcs->set_pipe_ex) { abm->funcs->set_pipe_ex (abm, otg_inst,SET_ABM_PIPE_IMMEDIATELY_DISABLE , - panel_cntl->inst); + panel_cntl->inst, panel_cntl->pwrseq_inst); }else { -dmub_abm_set_pipe (abm, otg_inst,SET_ABM_PIPE_IMMEDIATELY_DISABLE , panel_cntl->inst); +dmub_abm_set_pipe (abm, + otg_inst, +SET_ABM_PIPE_IMMEDIATELY_DISABLE , + panel_cntl->inst, + panel_cntl->pwrseq_inst); } panel_cntl->funcs->store_backlight_level (panel_cntl); }
@@ -212,9 +217,16 @@ void dcn21_set_pipe(struct pipe_ctx *pipe_ctx)if (abm && panel_cntl) {if (abm->funcs && abm->funcs->set_pipe_ex) { - abm->funcs->set_pipe_ex (abm, otg_inst,SET_ABM_PIPE_NORMAL , panel_cntl->inst); + abm->funcs->set_pipe_ex (abm, + otg_inst, +SET_ABM_PIPE_NORMAL , + panel_cntl->inst, + panel_cntl->pwrseq_inst); }else { -dmub_abm_set_pipe (abm, otg_inst,SET_ABM_PIPE_NORMAL , panel_cntl->inst); +dmub_abm_set_pipe (abm, otg_inst, +SET_ABM_PIPE_NORMAL , + panel_cntl->inst, + panel_cntl->pwrseq_inst); } } }
@@ -237,9 +249,17 @@ bool dcn21_set_backlight_level(struct pipe_ctx *pipe_ctx,if (abm && panel_cntl) {if (abm->funcs && abm->funcs->set_pipe_ex) { - abm->funcs->set_pipe_ex (abm, otg_inst,SET_ABM_PIPE_NORMAL , panel_cntl->inst); + abm->funcs->set_pipe_ex (abm, + otg_inst, +SET_ABM_PIPE_NORMAL , + panel_cntl->inst, + panel_cntl->pwrseq_inst); }else { -dmub_abm_set_pipe (abm, otg_inst,SET_ABM_PIPE_NORMAL , panel_cntl->inst); +dmub_abm_set_pipe (abm, + otg_inst, +SET_ABM_PIPE_NORMAL , + panel_cntl->inst, + panel_cntl->pwrseq_inst); } } }
drivers/gpu/drm/amd/display/dc/inc/hw/abm.h +2 -1
@@ -64,7 +64,8 @@ struct abm_funcs {bool (*set_pipe_ex)(struct abm *abm,unsigned int otg_inst,unsigned int option, - unsigned int panel_inst); +unsigned int panel_inst, + unsigned int pwrseq_inst); };#endif
drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h +2 -0
@@ -56,12 +56,14 @@ struct panel_cntl_funcs {struct panel_cntl_init_data {struct dc_context *ctx;uint32_t inst; +uint32_t pwrseq_inst; };struct panel_cntl {const struct panel_cntl_funcs *funcs;struct dc_context *ctx;uint32_t inst; +uint32_t pwrseq_inst;/* registers setting needs to be saved and restored at InitBacklight */ struct panel_cntl_backlight_registers stored_backlight_registers; };
drivers/gpu/drm/amd/display/dc/link/link_factory.c +41 -18
77 lines not on this page · raw message
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h +12 -2
@@ -3357,6 +3357,16 @@ struct dmub_cmd_abm_set_pipe_data {* TODO: Remove. */ uint8_t ramping_boundary; + +/** +* PwrSeq HW Instance. +*/ +uint8_t pwrseq_inst; + +/** +* Explicit padding to 4 byte boundary. +*/ +uint8_t pad[3 ]; };/**
@@ -3737,7 +3747,7 @@ enum dmub_cmd_panel_cntl_type {* struct dmub_cmd_panel_cntl_data - Panel control data. */ struct dmub_cmd_panel_cntl_data { -uint32_t inst;/**< panel instance */ +uint32_t pwrseq_inst;/**< pwrseq instance */ uint32_t current_backlight;/* in/out */ uint32_t bl_pwm_cntl;/* in/out */ uint32_t bl_pwm_period_cntl;/* in/out */
@@ -3796,7 +3806,7 @@ struct dmub_cmd_lvtma_control_data {uint8_t uc_pwr_action;/**< LVTMA_ACTION */ uint8_t bypass_panel_control_wait;uint8_t reserved_0[2 ];/**< For future use */ -uint8_t panel_inst;/**< LVTMA control instance */ +uint8_t pwrseq_inst;/**< LVTMA control instance */ uint8_t reserved_1[3 ];/**< For future use */ };
drivers/hwtracing/coresight/coresight-etm4x.h +1 -1
@@ -1036,7 +1036,7 @@ struct etmv4_drvdata {u8 ctxid_size;u8 vmid_size;u8 ccsize; -u8 ccitmin; +u16 ccitmin;u8 s_ex_level;u8 ns_ex_level;u8 q_support;
drivers/leds/trigger/ledtrig-tty.c +4 -0
@@ -168,6 +168,10 @@ static void ledtrig_tty_deactivate(struct led_classdev *led_cdev)cancel_delayed_work_sync (&trigger_data->dwork); +kfree (trigger_data->ttyname); +tty_kref_put (trigger_data->tty); + trigger_data->tty =NULL ; +kfree (trigger_data); }
drivers/md/raid5.c +0 -12
@@ -36,7 +36,6 @@*/ #include <linux/blkdev.h> -#include <linux/delay.h> #include <linux/kthread.h> #include <linux/raid/pq.h> #include <linux/async_tx.h>
@@ -6820,18 +6819,7 @@ static void raid5d(struct md_thread *thread)spin_unlock_irq (&conf->device_lock);md_check_recovery (mddev);spin_lock_irq (&conf->device_lock); - -/* -* Waiting on MD_SB_CHANGE_PENDING below may deadlock -* seeing md_check_recovery() is needed to clear -* the flag when using mdmon. -*/ -continue ; } - -wait_event_lock_irq (mddev->sb_wait, - !test_bit (MD_SB_CHANGE_PENDING , &mddev->sb_flags), - conf->device_lock); }pr_debug ("%d stripes handled\n" , handled);
drivers/parport/parport_serial.c +64 -0
88 lines not on this page · raw message
drivers/pci/quirks.c +6 -2
@@ -4699,17 +4699,21 @@ static int pci_quirk_xgene_acs(struct pci_dev *dev, u16 acs_flags)* But the implementation could block peer-to-peer transactions between them * and provide ACS-like functionality. */ -static int pci_quirk_zhaoxin_pcie_ports_acs (struct pci_dev *dev,u16 acs_flags) +static int pci_quirk_zhaoxin_pcie_ports_acs (struct pci_dev *dev,u16 acs_flags) {if (!pci_is_pcie (dev) || ((pci_pcie_type (dev) !=PCI_EXP_TYPE_ROOT_PORT ) && (pci_pcie_type (dev) !=PCI_EXP_TYPE_DOWNSTREAM )))return -ENOTTY ; +/* +* Future Zhaoxin Root Ports and Switch Downstream Ports will +* implement ACS capability in accordance with the PCIe Spec. +*/ switch (dev->device) { case 0x0710 ... 0x071e:case 0x0721 : - case 0x0723 ... 0x0732: + case 0x0723 ... 0x0752:return pci_acs_ctrl_enabled (acs_flags,PCI_ACS_SV |PCI_ACS_RR |PCI_ACS_CR |PCI_ACS_UF ); }
drivers/uio/uio.c +3 -4
@@ -466,13 +466,13 @@ static int uio_open(struct inode *inode, struct file *filep)mutex_lock (&minor_lock); idev =idr_find (&uio_idr,iminor (inode)); -mutex_unlock (&minor_lock);if (!idev) { ret = -ENODEV ; +mutex_unlock (&minor_lock); goto out; } -get_device (&idev->dev); +mutex_unlock (&minor_lock);if (!try_module_get (idev->owner)) { ret = -ENODEV ;
@@ -1064,9 +1064,8 @@ void uio_unregister_device(struct uio_info *info)wake_up_interruptible (&idev->wait);kill_fasync (&idev->async_queue,SIGIO ,POLL_HUP ); -device_unregister (&idev->dev); -uio_free_minor (minor); +device_unregister (&idev->dev);return ; }
fs/f2fs/xattr.c +6 -0
@@ -754,6 +754,12 @@ static int __f2fs_setxattr(struct inode *inode, int index,memcpy (pval, value, size); last->e_value_size =cpu_to_le16 (size); new_hsize += newsize; +/* +* Explicitly add the null terminator. The unused xattr space +* is supposed to always be zeroed, which would make this +* unnecessary, but don't depend on that. +*/ + *(u32 *)((u8 *)last + newsize) =0 ; } error =write_all_xattrs (inode, new_hsize, base_addr, ipage);
fs/smb/server/smb2pdu.c +9 -14
@@ -2971,7 +2971,7 @@ int smb2_open(struct ksmbd_work *work) &may_flags);if (!test_tree_conn_flag (tcon,KSMBD_TREE_CONN_FLAG_WRITABLE )) { -if (open_flags &O_CREAT ) { +if (open_flags & (O_CREAT |O_TRUNC )) {ksmbd_debug (SMB ,"User does not have write permission\n" ); rc = -EACCES ;
@@ -5943,12 +5943,6 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, }case FILE_RENAME_INFORMATION : { -if (!test_tree_conn_flag (work->tcon,KSMBD_TREE_CONN_FLAG_WRITABLE )) { -ksmbd_debug (SMB , -"User does not have write permission\n" ); -return -EACCES ; - } -if (buf_len <sizeof (struct smb2_file_rename_info ))return -EINVAL ;
@@ -5968,12 +5962,6 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, }case FILE_DISPOSITION_INFORMATION : { -if (!test_tree_conn_flag (work->tcon,KSMBD_TREE_CONN_FLAG_WRITABLE )) { -ksmbd_debug (SMB , -"User does not have write permission\n" ); -return -EACCES ; - } -if (buf_len <sizeof (struct smb2_file_disposition_info ))return -EINVAL ;
@@ -6035,7 +6023,7 @@ int smb2_set_info(struct ksmbd_work *work) {struct smb2_set_info_req *req;struct smb2_set_info_rsp *rsp; -struct ksmbd_file *fp; +struct ksmbd_file *fp =NULL ;int rc =0 ;unsigned int id =KSMBD_NO_FID , pid =KSMBD_NO_FID ;
@@ -6055,6 +6043,13 @@ int smb2_set_info(struct ksmbd_work *work) rsp =smb2_get_msg (work->response_buf); } +if (!test_tree_conn_flag (work->tcon,KSMBD_TREE_CONN_FLAG_WRITABLE )) { +ksmbd_debug (SMB ,"User does not have write permission\n" ); +pr_err ("User does not have write permission\n" ); + rc = -EACCES ; + goto err_out; + } +if (!has_file_id (id)) { id = req->VolatileFileId; pid = req->PersistentFileId;
fs/smb/server/smbacl.c +7 -4
@@ -401,10 +401,6 @@ static void parse_dacl(struct mnt_idmap *idmap,if (num_aces >ULONG_MAX /sizeof (struct smb_ace *))return ; - ppace =kmalloc_array (num_aces,sizeof (struct smb_ace *),GFP_KERNEL ); -if (!ppace) -return ; - ret =init_acl_state (&acl_state, num_aces);if (ret)return ;
@@ -414,6 +410,13 @@ static void parse_dacl(struct mnt_idmap *idmap,return ; } + ppace =kmalloc_array (num_aces,sizeof (struct smb_ace *),GFP_KERNEL ); +if (!ppace) { +free_acl_state (&default_acl_state); +free_acl_state (&acl_state); +return ; + } +/* * reset rwx permissions for user/group/other. * Also, if num_aces is 0 i.e. DACL has no ACEs,
mm/memory_hotplug.c +5 -3
@@ -101,9 +101,11 @@ static int set_memmap_mode(const char *val, const struct kernel_param *kp)static int get_memmap_mode (char *buffer,const struct kernel_param *kp) { -if (*((int *)kp->arg) ==MEMMAP_ON_MEMORY_FORCE ) -return sprintf (buffer,"force\n" ); -return param_get_bool (buffer, kp); +int mode = *((int *)kp->arg); + +if (mode ==MEMMAP_ON_MEMORY_FORCE ) +return sprintf (buffer,"force\n" ); +return sprintf (buffer,"%c\n" , mode ?'Y' :'N' ); }static const struct kernel_param_ops memmap_mode_ops = {
scripts/decode_stacktrace.sh +17 -2
@@ -16,6 +16,21 @@ elif type c++filt >/dev/null 2>&1 ; then cppfilt_opts=-i fi +UTIL_SUFFIX= +if [[ -z ${LLVM:-} ]]; then + UTIL_PREFIX=${CROSS_COMPILE:-} +else + UTIL_PREFIX=llvm- + if [[ ${LLVM} == */ ]]; then + UTIL_PREFIX=${LLVM}${UTIL_PREFIX} + elif [[ ${LLVM} == -* ]]; then + UTIL_SUFFIX=${LLVM} + fi +fi + +READELF=${UTIL_PREFIX}readelf${UTIL_SUFFIX} +ADDR2LINE=${UTIL_PREFIX}addr2line${UTIL_SUFFIX} + if [[ $1 == "-r" ]] ; then vmlinux="" basepath="auto"
@@ -75,7 +90,7 @@ find_module() { if [[ "$modpath" != "" ]] ; then for fn in $(find "$modpath" -name "${module//_/[-_]}.ko*") ; do - if readelf -WS "$fn" | grep -qwF .debug_line ; then + if ${READELF} -WS "$fn" | grep -qwF .debug_line ; then echo $fn return fi
@@ -169,7 +184,7 @@ parse_symbol() { if [[ $aarray_support == true && "${cache[$module,$address]+isset}" == "isset" ]]; then local code=${cache[$module,$address]} else - local code=$(${CROSS_COMPILE}addr2line -i -e "$objfile" "$address" 2>/dev/null) + local code=$(${ADDR2LINE} -i -e "$objfile" "$address" 2>/dev/null) if [[ $aarray_support == true ]]; then cache[$module,$address]=$code fi
sound/pci/hda/cs35l41_hda.c +22 -3
@@ -12,6 +12,7 @@#include <sound/hda_codec.h> #include <sound/soc.h> #include <linux/pm_runtime.h> +#include <linux/spi/spi.h> #include "hda_local.h" #include "hda_auto_parser.h" #include "hda_jack.h"
@@ -996,6 +997,11 @@ static int cs35l41_smart_amp(struct cs35l41_hda *cs35l41)__be32 halo_sts;int ret; +if (cs35l41->bypass_fw) { +dev_warn (cs35l41->dev,"Bypassing Firmware.\n" ); +return 0 ; + } + ret =cs35l41_init_dsp (cs35l41);if (ret) {dev_warn (cs35l41->dev,"Cannot Initialize Firmware. Error: %d\n" , ret);
@@ -1588,6 +1594,7 @@ static int cs35l41_hda_read_acpi(struct cs35l41_hda *cs35l41, const char *hid, iu32 values[HDA_MAX_COMPONENTS ];struct acpi_device *adev;struct device *physdev; +struct spi_device *spi;const char *sub;char *property;size_t nval;
@@ -1610,7 +1617,7 @@ static int cs35l41_hda_read_acpi(struct cs35l41_hda *cs35l41, const char *hid, i ret =cs35l41_add_dsd_properties (cs35l41, physdev, id, hid);if (!ret) {dev_info (cs35l41->dev,"Using extra _DSD properties, bypassing _DSD in ACPI\n" ); - goto put_physdev; + goto out; } property ="cirrus,dev-index" ;
@@ -1701,8 +1708,20 @@ static int cs35l41_hda_read_acpi(struct cs35l41_hda *cs35l41, const char *hid, i hw_cfg->bst_type =CS35L41_EXT_BOOST ; hw_cfg->valid = true; +out:put_device (physdev); + cs35l41->bypass_fw = false; +if (cs35l41->control_bus ==SPI ) { + spi =to_spi_device (cs35l41->dev); +if (spi->max_speed_hz <CS35L41_MAX_ACCEPTABLE_SPI_SPEED_HZ ) { +dev_warn (cs35l41->dev, +"SPI speed is too slow to support firmware download: %d Hz.\n" , + spi->max_speed_hz); + cs35l41->bypass_fw = true; + } + } +return 0 ; err:
@@ -1711,14 +1730,13 @@ static int cs35l41_hda_read_acpi(struct cs35l41_hda *cs35l41, const char *hid, i hw_cfg->gpio1.valid = false; hw_cfg->gpio2.valid = false;acpi_dev_put (cs35l41->dacpi); -put_physdev:put_device (physdev);return ret; }int cs35l41_hda_probe (struct device *dev,const char *device_name,int id,int irq, -struct regmap *regmap) +struct regmap *regmap,enum control_bus control_bus) {unsigned int regid, reg_revid;struct cs35l41_hda *cs35l41;
@@ -1737,6 +1755,7 @@ int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int i cs35l41->dev = dev; cs35l41->irq = irq; cs35l41->regmap = regmap; + cs35l41->control_bus = control_bus;dev_set_drvdata (dev, cs35l41); ret =cs35l41_hda_read_acpi (cs35l41, device_name, id);
sound/pci/hda/cs35l41_hda.h +11 -1
@@ -20,6 +20,8 @@#include <linux/firmware/cirrus/cs_dsp.h> #include <linux/firmware/cirrus/wmfw.h> +#define CS35L41_MAX_ACCEPTABLE_SPI_SPEED_HZ 1000000 +struct cs35l41_amp_cal_data {u32 calTarget[2 ];u32 calTime[2 ];
@@ -46,6 +48,11 @@ enum cs35l41_hda_gpio_function { CS35l41_SYNC, }; +enum control_bus { +I2C , +SPI +}; +struct cs35l41_hda {struct device *dev;struct regmap *regmap;
@@ -74,6 +81,9 @@ struct cs35l41_hda {struct cs_dsp cs_dsp;struct acpi_device *dacpi;bool mute_override; +enum control_bus control_bus; +bool bypass_fw; + };enum halo_state {
@@ -85,7 +95,7 @@ enum halo_state {extern const struct dev_pm_ops cs35l41_hda_pm_ops;int cs35l41_hda_probe (struct device *dev,const char *device_name,int id,int irq, -struct regmap *regmap); +struct regmap *regmap,enum control_bus control_bus);void cs35l41_hda_remove (struct device *dev);int cs35l41_get_speaker_id (struct device *dev,int amp_index,int num_amps,int fixed_gpio_id);
sound/pci/hda/cs35l41_hda_i2c.c +1 -1
@@ -30,7 +30,7 @@ static int cs35l41_hda_i2c_probe(struct i2c_client *clt)return -ENODEV ;return cs35l41_hda_probe (&clt->dev, device_name, clt->addr, clt->irq, -devm_regmap_init_i2c (clt, &cs35l41_regmap_i2c)); +devm_regmap_init_i2c (clt, &cs35l41_regmap_i2c),I2C ); }static void cs35l41_hda_i2c_remove (struct i2c_client *clt)
sound/pci/hda/cs35l41_hda_property.c +91 -35
163 lines not on this page · raw message
sound/pci/hda/cs35l41_hda_spi.c +1 -1
@@ -26,7 +26,7 @@ static int cs35l41_hda_spi_probe(struct spi_device *spi)return -ENODEV ;return cs35l41_hda_probe (&spi->dev, device_name,spi_get_chipselect (spi,0 ), spi->irq, -devm_regmap_init_spi (spi, &cs35l41_regmap_spi)); +devm_regmap_init_spi (spi, &cs35l41_regmap_spi),SPI ); }static void cs35l41_hda_spi_remove (struct spi_device *spi)
sound/pci/hda/patch_realtek.c +18 -0
@@ -6956,6 +6956,11 @@ static void cs35l41_fixup_i2c_two(struct hda_codec *cdc, const struct hda_fixupcs35l41_generic_fixup (cdc, action,"i2c" ,"CSC3551" ,2 ); } +static void cs35l41_fixup_i2c_four (struct hda_codec *cdc,const struct hda_fixup *fix,int action) +{ +cs35l41_generic_fixup (cdc, action,"i2c" ,"CSC3551" ,4 ); +} +static void cs35l41_fixup_spi_two (struct hda_codec *codec,const struct hda_fixup *fix,int action) {cs35l41_generic_fixup (codec, action,"spi" ,"CSC3551" ,2 );
@@ -7441,6 +7446,7 @@ enum {ALC287_FIXUP_LEGION_16ACHG6 ,ALC287_FIXUP_CS35L41_I2C_2 ,ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED , +ALC287_FIXUP_CS35L41_I2C_4 ,ALC245_FIXUP_CS35L41_SPI_2 ,ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED , ALC245_FIXUP_CS35L41_SPI_4,
@@ -9427,6 +9433,10 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC285_FIXUP_HP_MUTE_LED, }, + [ALC287_FIXUP_CS35L41_I2C_4] = { + .type = HDA_FIXUP_FUNC, + .v.func = cs35l41_fixup_i2c_four, + }, [ALC245_FIXUP_CS35L41_SPI_2] = { .type = HDA_FIXUP_FUNC, .v.func = cs35l41_fixup_spi_two,
@@ -9703,6 +9713,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1028 ,0x0a9e ,"Dell Latitude 5430" ,ALC269_FIXUP_DELL4_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x1028 ,0x0b19 ,"Dell XPS 15 9520" ,ALC289_FIXUP_DUAL_SPK ),SND_PCI_QUIRK (0x1028 ,0x0b1a ,"Dell Precision 5570" ,ALC289_FIXUP_DUAL_SPK ), +SND_PCI_QUIRK (0x1028 ,0x0b27 ,"Dell" ,ALC245_FIXUP_CS35L41_SPI_2 ), +SND_PCI_QUIRK (0x1028 ,0x0b28 ,"Dell" ,ALC245_FIXUP_CS35L41_SPI_2 ),SND_PCI_QUIRK (0x1028 ,0x0b37 ,"Dell Inspiron 16 Plus 7620 2-in-1" ,ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS ),SND_PCI_QUIRK (0x1028 ,0x0b71 ,"Dell Inspiron 16 Plus 7620" ,ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS ), SND_PCI_QUIRK(0x1028, 0x0beb, "Dell XPS 15 9530 (2023)", ALC289_FIXUP_DELL_CS35L41_SPI_2),
@@ -9713,6 +9725,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1028 ,0x0c1c ,"Dell Precision 3540" ,ALC236_FIXUP_DELL_DUAL_CODECS ),SND_PCI_QUIRK (0x1028 ,0x0c1d ,"Dell Precision 3440" ,ALC236_FIXUP_DELL_DUAL_CODECS ),SND_PCI_QUIRK (0x1028 ,0x0c1e ,"Dell Precision 3540" ,ALC236_FIXUP_DELL_DUAL_CODECS ), +SND_PCI_QUIRK (0x1028 ,0x0c4d ,"Dell" ,ALC287_FIXUP_CS35L41_I2C_4 ),SND_PCI_QUIRK (0x1028 ,0x0cbd ,"Dell Oasis 13 CS MTL-U" ,ALC289_FIXUP_DELL_CS35L41_SPI_2 ),SND_PCI_QUIRK (0x1028 ,0x0cbe ,"Dell Oasis 13 2-IN-1 MTL-U" ,ALC289_FIXUP_DELL_CS35L41_SPI_2 ), SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC289_FIXUP_DELL_CS35L41_SPI_2),
@@ -9816,6 +9829,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x103c ,0x8735 ,"HP ProBook 435 G7" ,ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF ),SND_PCI_QUIRK (0x103c ,0x8736 ,"HP" ,ALC285_FIXUP_HP_GPIO_AMP_INIT ),SND_PCI_QUIRK (0x103c ,0x8760 ,"HP" ,ALC285_FIXUP_HP_MUTE_LED ), +SND_PCI_QUIRK (0x103c ,0x876e ,"HP ENVY x360 Convertible 13-ay0xxx" ,ALC245_FIXUP_HP_X360_MUTE_LEDS ),SND_PCI_QUIRK (0x103c ,0x877a ,"HP" ,ALC285_FIXUP_HP_MUTE_LED ),SND_PCI_QUIRK (0x103c ,0x877d ,"HP" ,ALC236_FIXUP_HP_MUTE_LED ), SND_PCI_QUIRK(0x103c, 0x8780, "HP ZBook Fury 17 G7 Mobile Workstation",
@@ -10229,6 +10243,10 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x17aa ,0x3886 ,"Y780 VECO DUAL" ,ALC287_FIXUP_TAS2781_I2C ),SND_PCI_QUIRK (0x17aa ,0x38a7 ,"Y780P AMD YG dual" ,ALC287_FIXUP_TAS2781_I2C ),SND_PCI_QUIRK (0x17aa ,0x38a8 ,"Y780P AMD VECO dual" ,ALC287_FIXUP_TAS2781_I2C ), +SND_PCI_QUIRK (0x17aa ,0x38b4 ,"Legion Slim 7 16IRH8" ,ALC287_FIXUP_CS35L41_I2C_2 ), +SND_PCI_QUIRK (0x17aa ,0x38b5 ,"Legion Slim 7 16IRH8" ,ALC287_FIXUP_CS35L41_I2C_2 ), +SND_PCI_QUIRK (0x17aa ,0x38b6 ,"Legion Slim 7 16APH8" ,ALC287_FIXUP_CS35L41_I2C_2 ), +SND_PCI_QUIRK (0x17aa ,0x38b7 ,"Legion Slim 7 16APH8" ,ALC287_FIXUP_CS35L41_I2C_2 ),SND_PCI_QUIRK (0x17aa ,0x38ba ,"Yoga S780-14.5 Air AMD quad YC" ,ALC287_FIXUP_TAS2781_I2C ),SND_PCI_QUIRK (0x17aa ,0x38bb ,"Yoga S780-14.5 Air AMD quad AAC" ,ALC287_FIXUP_TAS2781_I2C ), SND_PCI_QUIRK(0x17aa, 0x38be, "Yoga S980-14.5 proX YC Dual", ALC287_FIXUP_TAS2781_I2C),