Merge 5.10.148 into android12-5.10-lts
Changes in 5.10.148 nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level() nilfs2: fix use-after-free bug of struct nilfs_root nilfs2: fix leak of nilfs_root in case of writer thread creation failure nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure ceph: don't truncate file in atomic_open Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 docs: update mediator information in CoC docs perf tools: Fixup get_current_dir_name() compilation xsk: Inherit need_wakeup flag for shared sockets ALSA: pcm: oss: Fix race at SNDCTL_DSP_SYNC mm: gup: fix the fast GUP race against THP collapse powerpc/64s/radix: don't need to broadcast IPI for radix pmd collapse flush fs: fix UAF/GPF bug in nilfs_mdt_destroy compiler_attributes.h: move __compiletime_{error|warning} firmware: arm_scmi: Add SCMI PM driver remove routine dmaengine: xilinx_dma: Fix devm_platform_ioremap_resource error handling dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API failure ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer scsi: qedf: Fix a UAF bug in __qedf_probe() net/ieee802154: fix uninit value bug in dgram_sendmsg ALSA: hda/hdmi: Fix the converter reuse for the silent stream um: Cleanup syscall_handler_t cast in syscalls_32.h um: Cleanup compiler warning in arch/x86/um/tls_32.c arch: um: Mark the stack non-executable to fix a binutils warning net: atlantic: fix potential memory leak in aq_ndev_close() drm/amd/display: update gamut remap if plane has changed drm/amd/display: skip audio setup when audio stream is enabled mmc: core: Replace with already defined values for readability mmc: core: Terminate infinite loop in SD-UHS voltage switch usb: mon: make mmapped memory read only USB: serial: ftdi_sio: fix 300 bps rate for SIO rpmsg: qcom: glink: replace strncpy() with strscpy_pad() Revert "clk: ti: Stop using legacy clkctrl names for omap4 and 5" random: restore O_NONBLOCK support random: clamp credited irq bits to maximum mixed ALSA: hda: Fix position reporting on Poulsbo efi: Correct Macmini DMI match in uefi cert quirk scsi: stex: Properly zero out the passthrough command structure USB: serial: qcserial: add new usb-id for Dell branded EM7455 random: avoid reading two cache lines on irq randomness random: use expired timer rather than wq for mixing fast pool wifi: cfg80211: fix u8 overflow in cfg80211_update_notlisted_nontrans() wifi: cfg80211/mac80211: reject bad MBSSID elements wifi: cfg80211: ensure length byte is present before access wifi: cfg80211: fix BSS refcounting bugs wifi: cfg80211: avoid nontransmitted BSS list corruption wifi: mac80211_hwsim: avoid mac80211 warning on bad rate wifi: mac80211: fix crash in beacon protection for P2P-device wifi: cfg80211: update hidden BSSes to avoid WARN_ON Input: xpad - add supported devices as contributed on github Input: xpad - fix wireless 360 controller breaking after suspend misc: pci_endpoint_test: Aggregate params checking for xfer misc: pci_endpoint_test: Fix pci_endpoint_test_{copy,write,read}() panic Linux 5.10.148 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Ieced30eaa00066cb2fc36836250f8f0a553f490f
This commit is contained in:
@@ -34,8 +34,8 @@ Example:
|
|||||||
Use specific request line passing from dma
|
Use specific request line passing from dma
|
||||||
For example, MMC request line is 5
|
For example, MMC request line is 5
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 0>;
|
interrupts = <5 0>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@@ -51,7 +51,7 @@ the Technical Advisory Board (TAB) or other maintainers if you're
|
|||||||
uncertain how to handle situations that come up. It will not be
|
uncertain how to handle situations that come up. It will not be
|
||||||
considered a violation report unless you want it to be. If you are
|
considered a violation report unless you want it to be. If you are
|
||||||
uncertain about approaching the TAB or any other maintainers, please
|
uncertain about approaching the TAB or any other maintainers, please
|
||||||
reach out to our conflict mediator, Mishi Choudhary <mishi@linux.com>.
|
reach out to our conflict mediator, Joanna Lee <joanna.lee@gesmer.com>.
|
||||||
|
|
||||||
In the end, "be kind to each other" is really what the end goal is for
|
In the end, "be kind to each other" is really what the end goal is for
|
||||||
everybody. We know everyone is human and we all fail at times, but the
|
everybody. We know everyone is human and we all fail at times, but the
|
||||||
|
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 147
|
SUBLEVEL = 148
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@
|
|||||||
clocks = <&ref12>;
|
clocks = <&ref12>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhci {
|
&mmc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -93,8 +93,8 @@
|
|||||||
clock-names = "PCLK";
|
clock-names = "PCLK";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@@ -997,15 +997,6 @@ pmd_t radix__pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long addre
|
|||||||
pmd = *pmdp;
|
pmd = *pmdp;
|
||||||
pmd_clear(pmdp);
|
pmd_clear(pmdp);
|
||||||
|
|
||||||
/*
|
|
||||||
* pmdp collapse_flush need to ensure that there are no parallel gup
|
|
||||||
* walk after this call. This is needed so that we can have stable
|
|
||||||
* page ref count when collapsing a page. We don't allow a collapse page
|
|
||||||
* if we have gup taken on the page. We can ensure that by sending IPI
|
|
||||||
* because gup walk happens with IRQ disabled.
|
|
||||||
*/
|
|
||||||
serialize_against_pte_lookup(vma->vm_mm);
|
|
||||||
|
|
||||||
radix__flush_tlb_collapsed_pmd(vma->vm_mm, address);
|
radix__flush_tlb_collapsed_pmd(vma->vm_mm, address);
|
||||||
|
|
||||||
return pmd;
|
return pmd;
|
||||||
|
@@ -131,10 +131,18 @@ export LDS_ELF_FORMAT := $(ELF_FORMAT)
|
|||||||
# The wrappers will select whether using "malloc" or the kernel allocator.
|
# The wrappers will select whether using "malloc" or the kernel allocator.
|
||||||
LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc
|
LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc
|
||||||
|
|
||||||
|
# Avoid binutils 2.39+ warnings by marking the stack non-executable and
|
||||||
|
# ignorning warnings for the kallsyms sections.
|
||||||
|
LDFLAGS_EXECSTACK = -z noexecstack
|
||||||
|
ifeq ($(CONFIG_LD_IS_BFD),y)
|
||||||
|
LDFLAGS_EXECSTACK += $(call ld-option,--no-warn-rwx-segments)
|
||||||
|
endif
|
||||||
|
|
||||||
LD_FLAGS_CMDLINE = $(foreach opt,$(KBUILD_LDFLAGS),-Wl,$(opt))
|
LD_FLAGS_CMDLINE = $(foreach opt,$(KBUILD_LDFLAGS),-Wl,$(opt))
|
||||||
|
|
||||||
# Used by link-vmlinux.sh which has special support for um link
|
# Used by link-vmlinux.sh which has special support for um link
|
||||||
export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE)
|
export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE)
|
||||||
|
export LDFLAGS_vmlinux := $(LDFLAGS_EXECSTACK)
|
||||||
|
|
||||||
# When cleaning we don't include .config, so we don't include
|
# When cleaning we don't include .config, so we don't include
|
||||||
# TT or skas makefiles and don't clean skas_ptregs.h.
|
# TT or skas makefiles and don't clean skas_ptregs.h.
|
||||||
|
@@ -6,10 +6,9 @@
|
|||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include <sysdep/ptrace.h>
|
#include <sysdep/ptrace.h>
|
||||||
|
|
||||||
typedef long syscall_handler_t(struct pt_regs);
|
typedef long syscall_handler_t(struct syscall_args);
|
||||||
|
|
||||||
extern syscall_handler_t *sys_call_table[];
|
extern syscall_handler_t *sys_call_table[];
|
||||||
|
|
||||||
#define EXECUTE_SYSCALL(syscall, regs) \
|
#define EXECUTE_SYSCALL(syscall, regs) \
|
||||||
((long (*)(struct syscall_args)) \
|
((*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs))
|
||||||
(*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs))
|
|
||||||
|
@@ -65,9 +65,6 @@ static int get_free_idx(struct task_struct* task)
|
|||||||
struct thread_struct *t = &task->thread;
|
struct thread_struct *t = &task->thread;
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
if (!t->arch.tls_array)
|
|
||||||
return GDT_ENTRY_TLS_MIN;
|
|
||||||
|
|
||||||
for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++)
|
for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++)
|
||||||
if (!t->arch.tls_array[idx].present)
|
if (!t->arch.tls_array[idx].present)
|
||||||
return idx + GDT_ENTRY_TLS_MIN;
|
return idx + GDT_ENTRY_TLS_MIN;
|
||||||
@@ -240,9 +237,6 @@ static int get_tls_entry(struct task_struct *task, struct user_desc *info,
|
|||||||
{
|
{
|
||||||
struct thread_struct *t = &task->thread;
|
struct thread_struct *t = &task->thread;
|
||||||
|
|
||||||
if (!t->arch.tls_array)
|
|
||||||
goto clear;
|
|
||||||
|
|
||||||
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
|
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ quiet_cmd_vdso = VDSO $@
|
|||||||
-Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
|
-Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
|
||||||
sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
|
sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
|
||||||
|
|
||||||
VDSO_LDFLAGS = -fPIC -shared -Wl,--hash-style=sysv
|
VDSO_LDFLAGS = -fPIC -shared -Wl,--hash-style=sysv -z noexecstack
|
||||||
GCOV_PROFILE := n
|
GCOV_PROFILE := n
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -981,8 +981,8 @@ static const struct memdev {
|
|||||||
#endif
|
#endif
|
||||||
[5] = { "zero", 0666, &zero_fops, 0 },
|
[5] = { "zero", 0666, &zero_fops, 0 },
|
||||||
[7] = { "full", 0666, &full_fops, 0 },
|
[7] = { "full", 0666, &full_fops, 0 },
|
||||||
[8] = { "random", 0666, &random_fops, 0 },
|
[8] = { "random", 0666, &random_fops, FMODE_NOWAIT },
|
||||||
[9] = { "urandom", 0666, &urandom_fops, 0 },
|
[9] = { "urandom", 0666, &urandom_fops, FMODE_NOWAIT },
|
||||||
#ifdef CONFIG_PRINTK
|
#ifdef CONFIG_PRINTK
|
||||||
[11] = { "kmsg", 0644, &kmsg_fops, 0 },
|
[11] = { "kmsg", 0644, &kmsg_fops, 0 },
|
||||||
#endif
|
#endif
|
||||||
|
@@ -902,20 +902,23 @@ void __cold add_bootloader_randomness(const void *buf, size_t len)
|
|||||||
EXPORT_SYMBOL_GPL(add_bootloader_randomness);
|
EXPORT_SYMBOL_GPL(add_bootloader_randomness);
|
||||||
|
|
||||||
struct fast_pool {
|
struct fast_pool {
|
||||||
struct work_struct mix;
|
|
||||||
unsigned long pool[4];
|
unsigned long pool[4];
|
||||||
unsigned long last;
|
unsigned long last;
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
|
struct timer_list mix;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void mix_interrupt_randomness(struct timer_list *work);
|
||||||
|
|
||||||
static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = {
|
static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = {
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
#define FASTMIX_PERM SIPHASH_PERMUTATION
|
#define FASTMIX_PERM SIPHASH_PERMUTATION
|
||||||
.pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 }
|
.pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 },
|
||||||
#else
|
#else
|
||||||
#define FASTMIX_PERM HSIPHASH_PERMUTATION
|
#define FASTMIX_PERM HSIPHASH_PERMUTATION
|
||||||
.pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 }
|
.pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 },
|
||||||
#endif
|
#endif
|
||||||
|
.mix = __TIMER_INITIALIZER(mix_interrupt_randomness, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -957,7 +960,7 @@ int __cold random_online_cpu(unsigned int cpu)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void mix_interrupt_randomness(struct work_struct *work)
|
static void mix_interrupt_randomness(struct timer_list *work)
|
||||||
{
|
{
|
||||||
struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix);
|
struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix);
|
||||||
/*
|
/*
|
||||||
@@ -988,7 +991,7 @@ static void mix_interrupt_randomness(struct work_struct *work)
|
|||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
||||||
mix_pool_bytes(pool, sizeof(pool));
|
mix_pool_bytes(pool, sizeof(pool));
|
||||||
credit_init_bits(max(1u, (count & U16_MAX) / 64));
|
credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8));
|
||||||
|
|
||||||
memzero_explicit(pool, sizeof(pool));
|
memzero_explicit(pool, sizeof(pool));
|
||||||
}
|
}
|
||||||
@@ -1011,10 +1014,11 @@ void add_interrupt_randomness(int irq)
|
|||||||
if (new_count < 1024 && !time_is_before_jiffies(fast_pool->last + HZ))
|
if (new_count < 1024 && !time_is_before_jiffies(fast_pool->last + HZ))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (unlikely(!fast_pool->mix.func))
|
|
||||||
INIT_WORK(&fast_pool->mix, mix_interrupt_randomness);
|
|
||||||
fast_pool->count |= MIX_INFLIGHT;
|
fast_pool->count |= MIX_INFLIGHT;
|
||||||
queue_work_on(raw_smp_processor_id(), system_highpri_wq, &fast_pool->mix);
|
if (!timer_pending(&fast_pool->mix)) {
|
||||||
|
fast_pool->mix.expires = jiffies;
|
||||||
|
add_timer_on(&fast_pool->mix, raw_smp_processor_id());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(add_interrupt_randomness);
|
EXPORT_SYMBOL_GPL(add_interrupt_randomness);
|
||||||
|
|
||||||
@@ -1306,6 +1310,11 @@ static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (!crng_ready() &&
|
||||||
|
((kiocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) ||
|
||||||
|
(kiocb->ki_filp->f_flags & O_NONBLOCK)))
|
||||||
|
return -EAGAIN;
|
||||||
|
|
||||||
ret = wait_for_random_bytes();
|
ret = wait_for_random_bytes();
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -56,7 +56,7 @@ static const struct omap_clkctrl_bit_data omap4_aess_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_func_dmic_abe_gfclk_parents[] __initconst = {
|
static const char * const omap4_func_dmic_abe_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0018:26",
|
"abe_cm:clk:0018:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -76,7 +76,7 @@ static const struct omap_clkctrl_bit_data omap4_dmic_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_func_mcasp_abe_gfclk_parents[] __initconst = {
|
static const char * const omap4_func_mcasp_abe_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0020:26",
|
"abe_cm:clk:0020:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -89,7 +89,7 @@ static const struct omap_clkctrl_bit_data omap4_mcasp_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_func_mcbsp1_gfclk_parents[] __initconst = {
|
static const char * const omap4_func_mcbsp1_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0028:26",
|
"abe_cm:clk:0028:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -102,7 +102,7 @@ static const struct omap_clkctrl_bit_data omap4_mcbsp1_bit_data[] __initconst =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_func_mcbsp2_gfclk_parents[] __initconst = {
|
static const char * const omap4_func_mcbsp2_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0030:26",
|
"abe_cm:clk:0030:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -115,7 +115,7 @@ static const struct omap_clkctrl_bit_data omap4_mcbsp2_bit_data[] __initconst =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_func_mcbsp3_gfclk_parents[] __initconst = {
|
static const char * const omap4_func_mcbsp3_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0038:26",
|
"abe_cm:clk:0038:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -183,18 +183,18 @@ static const struct omap_clkctrl_bit_data omap4_timer8_bit_data[] __initconst =
|
|||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_abe_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_abe_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_L4_ABE_CLKCTRL, NULL, 0, "ocp_abe_iclk" },
|
{ OMAP4_L4_ABE_CLKCTRL, NULL, 0, "ocp_abe_iclk" },
|
||||||
{ OMAP4_AESS_CLKCTRL, omap4_aess_bit_data, CLKF_SW_SUP, "abe-clkctrl:0008:24" },
|
{ OMAP4_AESS_CLKCTRL, omap4_aess_bit_data, CLKF_SW_SUP, "abe_cm:clk:0008:24" },
|
||||||
{ OMAP4_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
|
{ OMAP4_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
|
||||||
{ OMAP4_DMIC_CLKCTRL, omap4_dmic_bit_data, CLKF_SW_SUP, "abe-clkctrl:0018:24" },
|
{ OMAP4_DMIC_CLKCTRL, omap4_dmic_bit_data, CLKF_SW_SUP, "abe_cm:clk:0018:24" },
|
||||||
{ OMAP4_MCASP_CLKCTRL, omap4_mcasp_bit_data, CLKF_SW_SUP, "abe-clkctrl:0020:24" },
|
{ OMAP4_MCASP_CLKCTRL, omap4_mcasp_bit_data, CLKF_SW_SUP, "abe_cm:clk:0020:24" },
|
||||||
{ OMAP4_MCBSP1_CLKCTRL, omap4_mcbsp1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0028:24" },
|
{ OMAP4_MCBSP1_CLKCTRL, omap4_mcbsp1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0028:24" },
|
||||||
{ OMAP4_MCBSP2_CLKCTRL, omap4_mcbsp2_bit_data, CLKF_SW_SUP, "abe-clkctrl:0030:24" },
|
{ OMAP4_MCBSP2_CLKCTRL, omap4_mcbsp2_bit_data, CLKF_SW_SUP, "abe_cm:clk:0030:24" },
|
||||||
{ OMAP4_MCBSP3_CLKCTRL, omap4_mcbsp3_bit_data, CLKF_SW_SUP, "abe-clkctrl:0038:24" },
|
{ OMAP4_MCBSP3_CLKCTRL, omap4_mcbsp3_bit_data, CLKF_SW_SUP, "abe_cm:clk:0038:24" },
|
||||||
{ OMAP4_SLIMBUS1_CLKCTRL, omap4_slimbus1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0040:8" },
|
{ OMAP4_SLIMBUS1_CLKCTRL, omap4_slimbus1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0040:8" },
|
||||||
{ OMAP4_TIMER5_CLKCTRL, omap4_timer5_bit_data, CLKF_SW_SUP, "abe-clkctrl:0048:24" },
|
{ OMAP4_TIMER5_CLKCTRL, omap4_timer5_bit_data, CLKF_SW_SUP, "abe_cm:clk:0048:24" },
|
||||||
{ OMAP4_TIMER6_CLKCTRL, omap4_timer6_bit_data, CLKF_SW_SUP, "abe-clkctrl:0050:24" },
|
{ OMAP4_TIMER6_CLKCTRL, omap4_timer6_bit_data, CLKF_SW_SUP, "abe_cm:clk:0050:24" },
|
||||||
{ OMAP4_TIMER7_CLKCTRL, omap4_timer7_bit_data, CLKF_SW_SUP, "abe-clkctrl:0058:24" },
|
{ OMAP4_TIMER7_CLKCTRL, omap4_timer7_bit_data, CLKF_SW_SUP, "abe_cm:clk:0058:24" },
|
||||||
{ OMAP4_TIMER8_CLKCTRL, omap4_timer8_bit_data, CLKF_SW_SUP, "abe-clkctrl:0060:24" },
|
{ OMAP4_TIMER8_CLKCTRL, omap4_timer8_bit_data, CLKF_SW_SUP, "abe_cm:clk:0060:24" },
|
||||||
{ OMAP4_WD_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
{ OMAP4_WD_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
@@ -287,7 +287,7 @@ static const struct omap_clkctrl_bit_data omap4_fdif_bit_data[] __initconst = {
|
|||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_iss_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_iss_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_ISS_CLKCTRL, omap4_iss_bit_data, CLKF_SW_SUP, "ducati_clk_mux_ck" },
|
{ OMAP4_ISS_CLKCTRL, omap4_iss_bit_data, CLKF_SW_SUP, "ducati_clk_mux_ck" },
|
||||||
{ OMAP4_FDIF_CLKCTRL, omap4_fdif_bit_data, CLKF_SW_SUP, "iss-clkctrl:0008:24" },
|
{ OMAP4_FDIF_CLKCTRL, omap4_fdif_bit_data, CLKF_SW_SUP, "iss_cm:clk:0008:24" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ static const struct omap_clkctrl_bit_data omap4_dss_core_bit_data[] __initconst
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_l3_dss_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_l3_dss_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_DSS_CORE_CLKCTRL, omap4_dss_core_bit_data, CLKF_SW_SUP, "l3-dss-clkctrl:0000:8" },
|
{ OMAP4_DSS_CORE_CLKCTRL, omap4_dss_core_bit_data, CLKF_SW_SUP, "l3_dss_cm:clk:0000:8" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -336,7 +336,7 @@ static const struct omap_clkctrl_bit_data omap4_gpu_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_l3_gfx_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_l3_gfx_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_GPU_CLKCTRL, omap4_gpu_bit_data, CLKF_SW_SUP, "l3-gfx-clkctrl:0000:24" },
|
{ OMAP4_GPU_CLKCTRL, omap4_gpu_bit_data, CLKF_SW_SUP, "l3_gfx_cm:clk:0000:24" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -372,12 +372,12 @@ static const struct omap_clkctrl_bit_data omap4_hsi_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
|
static const char * const omap4_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
|
||||||
"l3-init-clkctrl:0038:24",
|
"l3_init_cm:clk:0038:24",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
|
static const char * const omap4_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
|
||||||
"l3-init-clkctrl:0038:25",
|
"l3_init_cm:clk:0038:25",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -418,7 +418,7 @@ static const struct omap_clkctrl_bit_data omap4_usb_host_hs_bit_data[] __initcon
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_usb_otg_hs_xclk_parents[] __initconst = {
|
static const char * const omap4_usb_otg_hs_xclk_parents[] __initconst = {
|
||||||
"l3-init-clkctrl:0040:24",
|
"l3_init_cm:clk:0040:24",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -452,14 +452,14 @@ static const struct omap_clkctrl_bit_data omap4_ocp2scp_usb_phy_bit_data[] __ini
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_l3_init_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_l3_init_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_MMC1_CLKCTRL, omap4_mmc1_bit_data, CLKF_SW_SUP, "l3-init-clkctrl:0008:24" },
|
{ OMAP4_MMC1_CLKCTRL, omap4_mmc1_bit_data, CLKF_SW_SUP, "l3_init_cm:clk:0008:24" },
|
||||||
{ OMAP4_MMC2_CLKCTRL, omap4_mmc2_bit_data, CLKF_SW_SUP, "l3-init-clkctrl:0010:24" },
|
{ OMAP4_MMC2_CLKCTRL, omap4_mmc2_bit_data, CLKF_SW_SUP, "l3_init_cm:clk:0010:24" },
|
||||||
{ OMAP4_HSI_CLKCTRL, omap4_hsi_bit_data, CLKF_HW_SUP, "l3-init-clkctrl:0018:24" },
|
{ OMAP4_HSI_CLKCTRL, omap4_hsi_bit_data, CLKF_HW_SUP, "l3_init_cm:clk:0018:24" },
|
||||||
{ OMAP4_USB_HOST_HS_CLKCTRL, omap4_usb_host_hs_bit_data, CLKF_SW_SUP, "init_60m_fclk" },
|
{ OMAP4_USB_HOST_HS_CLKCTRL, omap4_usb_host_hs_bit_data, CLKF_SW_SUP, "init_60m_fclk" },
|
||||||
{ OMAP4_USB_OTG_HS_CLKCTRL, omap4_usb_otg_hs_bit_data, CLKF_HW_SUP, "l3_div_ck" },
|
{ OMAP4_USB_OTG_HS_CLKCTRL, omap4_usb_otg_hs_bit_data, CLKF_HW_SUP, "l3_div_ck" },
|
||||||
{ OMAP4_USB_TLL_HS_CLKCTRL, omap4_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
{ OMAP4_USB_TLL_HS_CLKCTRL, omap4_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
||||||
{ OMAP4_USB_HOST_FS_CLKCTRL, NULL, CLKF_SW_SUP, "func_48mc_fclk" },
|
{ OMAP4_USB_HOST_FS_CLKCTRL, NULL, CLKF_SW_SUP, "func_48mc_fclk" },
|
||||||
{ OMAP4_OCP2SCP_USB_PHY_CLKCTRL, omap4_ocp2scp_usb_phy_bit_data, CLKF_HW_SUP, "l3-init-clkctrl:00c0:8" },
|
{ OMAP4_OCP2SCP_USB_PHY_CLKCTRL, omap4_ocp2scp_usb_phy_bit_data, CLKF_HW_SUP, "l3_init_cm:clk:00c0:8" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -530,7 +530,7 @@ static const struct omap_clkctrl_bit_data omap4_gpio6_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_per_mcbsp4_gfclk_parents[] __initconst = {
|
static const char * const omap4_per_mcbsp4_gfclk_parents[] __initconst = {
|
||||||
"l4-per-clkctrl:00c0:26",
|
"l4_per_cm:clk:00c0:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
@@ -570,12 +570,12 @@ static const struct omap_clkctrl_bit_data omap4_slimbus2_bit_data[] __initconst
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP4_TIMER10_CLKCTRL, omap4_timer10_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0008:24" },
|
{ OMAP4_TIMER10_CLKCTRL, omap4_timer10_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0008:24" },
|
||||||
{ OMAP4_TIMER11_CLKCTRL, omap4_timer11_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0010:24" },
|
{ OMAP4_TIMER11_CLKCTRL, omap4_timer11_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0010:24" },
|
||||||
{ OMAP4_TIMER2_CLKCTRL, omap4_timer2_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0018:24" },
|
{ OMAP4_TIMER2_CLKCTRL, omap4_timer2_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0018:24" },
|
||||||
{ OMAP4_TIMER3_CLKCTRL, omap4_timer3_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0020:24" },
|
{ OMAP4_TIMER3_CLKCTRL, omap4_timer3_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0020:24" },
|
||||||
{ OMAP4_TIMER4_CLKCTRL, omap4_timer4_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0028:24" },
|
{ OMAP4_TIMER4_CLKCTRL, omap4_timer4_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0028:24" },
|
||||||
{ OMAP4_TIMER9_CLKCTRL, omap4_timer9_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0030:24" },
|
{ OMAP4_TIMER9_CLKCTRL, omap4_timer9_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0030:24" },
|
||||||
{ OMAP4_ELM_CLKCTRL, NULL, 0, "l4_div_ck" },
|
{ OMAP4_ELM_CLKCTRL, NULL, 0, "l4_div_ck" },
|
||||||
{ OMAP4_GPIO2_CLKCTRL, omap4_gpio2_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
{ OMAP4_GPIO2_CLKCTRL, omap4_gpio2_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
||||||
{ OMAP4_GPIO3_CLKCTRL, omap4_gpio3_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
{ OMAP4_GPIO3_CLKCTRL, omap4_gpio3_bit_data, CLKF_HW_SUP, "l4_div_ck" },
|
||||||
@@ -588,14 +588,14 @@ static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initcons
|
|||||||
{ OMAP4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
|
{ OMAP4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
|
||||||
{ OMAP4_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
|
{ OMAP4_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
|
||||||
{ OMAP4_L4_PER_CLKCTRL, NULL, 0, "l4_div_ck" },
|
{ OMAP4_L4_PER_CLKCTRL, NULL, 0, "l4_div_ck" },
|
||||||
{ OMAP4_MCBSP4_CLKCTRL, omap4_mcbsp4_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:00c0:24" },
|
{ OMAP4_MCBSP4_CLKCTRL, omap4_mcbsp4_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:00c0:24" },
|
||||||
{ OMAP4_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_SLIMBUS2_CLKCTRL, omap4_slimbus2_bit_data, CLKF_SW_SUP, "l4-per-clkctrl:0118:8" },
|
{ OMAP4_SLIMBUS2_CLKCTRL, omap4_slimbus2_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0118:8" },
|
||||||
{ OMAP4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
{ OMAP4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
@@ -630,7 +630,7 @@ static const struct omap_clkctrl_reg_data omap4_l4_wkup_clkctrl_regs[] __initcon
|
|||||||
{ OMAP4_L4_WKUP_CLKCTRL, NULL, 0, "l4_wkup_clk_mux_ck" },
|
{ OMAP4_L4_WKUP_CLKCTRL, NULL, 0, "l4_wkup_clk_mux_ck" },
|
||||||
{ OMAP4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
{ OMAP4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
||||||
{ OMAP4_GPIO1_CLKCTRL, omap4_gpio1_bit_data, CLKF_HW_SUP, "l4_wkup_clk_mux_ck" },
|
{ OMAP4_GPIO1_CLKCTRL, omap4_gpio1_bit_data, CLKF_HW_SUP, "l4_wkup_clk_mux_ck" },
|
||||||
{ OMAP4_TIMER1_CLKCTRL, omap4_timer1_bit_data, CLKF_SW_SUP, "l4-wkup-clkctrl:0020:24" },
|
{ OMAP4_TIMER1_CLKCTRL, omap4_timer1_bit_data, CLKF_SW_SUP, "l4_wkup_cm:clk:0020:24" },
|
||||||
{ OMAP4_COUNTER_32K_CLKCTRL, NULL, 0, "sys_32k_ck" },
|
{ OMAP4_COUNTER_32K_CLKCTRL, NULL, 0, "sys_32k_ck" },
|
||||||
{ OMAP4_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
{ OMAP4_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
@@ -644,7 +644,7 @@ static const char * const omap4_pmd_stm_clock_mux_ck_parents[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_trace_clk_div_div_ck_parents[] __initconst = {
|
static const char * const omap4_trace_clk_div_div_ck_parents[] __initconst = {
|
||||||
"emu-sys-clkctrl:0000:22",
|
"emu_sys_cm:clk:0000:22",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -662,7 +662,7 @@ static const struct omap_clkctrl_div_data omap4_trace_clk_div_div_ck_data __init
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap4_stm_clk_div_ck_parents[] __initconst = {
|
static const char * const omap4_stm_clk_div_ck_parents[] __initconst = {
|
||||||
"emu-sys-clkctrl:0000:20",
|
"emu_sys_cm:clk:0000:20",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -716,73 +716,73 @@ static struct ti_dt_clk omap44xx_clks[] = {
|
|||||||
* hwmod support. Once hwmod is removed, these can be removed
|
* hwmod support. Once hwmod is removed, these can be removed
|
||||||
* also.
|
* also.
|
||||||
*/
|
*/
|
||||||
DT_CLK(NULL, "aess_fclk", "abe-clkctrl:0008:24"),
|
DT_CLK(NULL, "aess_fclk", "abe_cm:0008:24"),
|
||||||
DT_CLK(NULL, "cm2_dm10_mux", "l4-per-clkctrl:0008:24"),
|
DT_CLK(NULL, "cm2_dm10_mux", "l4_per_cm:0008:24"),
|
||||||
DT_CLK(NULL, "cm2_dm11_mux", "l4-per-clkctrl:0010:24"),
|
DT_CLK(NULL, "cm2_dm11_mux", "l4_per_cm:0010:24"),
|
||||||
DT_CLK(NULL, "cm2_dm2_mux", "l4-per-clkctrl:0018:24"),
|
DT_CLK(NULL, "cm2_dm2_mux", "l4_per_cm:0018:24"),
|
||||||
DT_CLK(NULL, "cm2_dm3_mux", "l4-per-clkctrl:0020:24"),
|
DT_CLK(NULL, "cm2_dm3_mux", "l4_per_cm:0020:24"),
|
||||||
DT_CLK(NULL, "cm2_dm4_mux", "l4-per-clkctrl:0028:24"),
|
DT_CLK(NULL, "cm2_dm4_mux", "l4_per_cm:0028:24"),
|
||||||
DT_CLK(NULL, "cm2_dm9_mux", "l4-per-clkctrl:0030:24"),
|
DT_CLK(NULL, "cm2_dm9_mux", "l4_per_cm:0030:24"),
|
||||||
DT_CLK(NULL, "dmic_sync_mux_ck", "abe-clkctrl:0018:26"),
|
DT_CLK(NULL, "dmic_sync_mux_ck", "abe_cm:0018:26"),
|
||||||
DT_CLK(NULL, "dmt1_clk_mux", "l4-wkup-clkctrl:0020:24"),
|
DT_CLK(NULL, "dmt1_clk_mux", "l4_wkup_cm:0020:24"),
|
||||||
DT_CLK(NULL, "dss_48mhz_clk", "l3-dss-clkctrl:0000:9"),
|
DT_CLK(NULL, "dss_48mhz_clk", "l3_dss_cm:0000:9"),
|
||||||
DT_CLK(NULL, "dss_dss_clk", "l3-dss-clkctrl:0000:8"),
|
DT_CLK(NULL, "dss_dss_clk", "l3_dss_cm:0000:8"),
|
||||||
DT_CLK(NULL, "dss_sys_clk", "l3-dss-clkctrl:0000:10"),
|
DT_CLK(NULL, "dss_sys_clk", "l3_dss_cm:0000:10"),
|
||||||
DT_CLK(NULL, "dss_tv_clk", "l3-dss-clkctrl:0000:11"),
|
DT_CLK(NULL, "dss_tv_clk", "l3_dss_cm:0000:11"),
|
||||||
DT_CLK(NULL, "fdif_fck", "iss-clkctrl:0008:24"),
|
DT_CLK(NULL, "fdif_fck", "iss_cm:0008:24"),
|
||||||
DT_CLK(NULL, "func_dmic_abe_gfclk", "abe-clkctrl:0018:24"),
|
DT_CLK(NULL, "func_dmic_abe_gfclk", "abe_cm:0018:24"),
|
||||||
DT_CLK(NULL, "func_mcasp_abe_gfclk", "abe-clkctrl:0020:24"),
|
DT_CLK(NULL, "func_mcasp_abe_gfclk", "abe_cm:0020:24"),
|
||||||
DT_CLK(NULL, "func_mcbsp1_gfclk", "abe-clkctrl:0028:24"),
|
DT_CLK(NULL, "func_mcbsp1_gfclk", "abe_cm:0028:24"),
|
||||||
DT_CLK(NULL, "func_mcbsp2_gfclk", "abe-clkctrl:0030:24"),
|
DT_CLK(NULL, "func_mcbsp2_gfclk", "abe_cm:0030:24"),
|
||||||
DT_CLK(NULL, "func_mcbsp3_gfclk", "abe-clkctrl:0038:24"),
|
DT_CLK(NULL, "func_mcbsp3_gfclk", "abe_cm:0038:24"),
|
||||||
DT_CLK(NULL, "gpio1_dbclk", "l4-wkup-clkctrl:0018:8"),
|
DT_CLK(NULL, "gpio1_dbclk", "l4_wkup_cm:0018:8"),
|
||||||
DT_CLK(NULL, "gpio2_dbclk", "l4-per-clkctrl:0040:8"),
|
DT_CLK(NULL, "gpio2_dbclk", "l4_per_cm:0040:8"),
|
||||||
DT_CLK(NULL, "gpio3_dbclk", "l4-per-clkctrl:0048:8"),
|
DT_CLK(NULL, "gpio3_dbclk", "l4_per_cm:0048:8"),
|
||||||
DT_CLK(NULL, "gpio4_dbclk", "l4-per-clkctrl:0050:8"),
|
DT_CLK(NULL, "gpio4_dbclk", "l4_per_cm:0050:8"),
|
||||||
DT_CLK(NULL, "gpio5_dbclk", "l4-per-clkctrl:0058:8"),
|
DT_CLK(NULL, "gpio5_dbclk", "l4_per_cm:0058:8"),
|
||||||
DT_CLK(NULL, "gpio6_dbclk", "l4-per-clkctrl:0060:8"),
|
DT_CLK(NULL, "gpio6_dbclk", "l4_per_cm:0060:8"),
|
||||||
DT_CLK(NULL, "hsi_fck", "l3-init-clkctrl:0018:24"),
|
DT_CLK(NULL, "hsi_fck", "l3_init_cm:0018:24"),
|
||||||
DT_CLK(NULL, "hsmmc1_fclk", "l3-init-clkctrl:0008:24"),
|
DT_CLK(NULL, "hsmmc1_fclk", "l3_init_cm:0008:24"),
|
||||||
DT_CLK(NULL, "hsmmc2_fclk", "l3-init-clkctrl:0010:24"),
|
DT_CLK(NULL, "hsmmc2_fclk", "l3_init_cm:0010:24"),
|
||||||
DT_CLK(NULL, "iss_ctrlclk", "iss-clkctrl:0000:8"),
|
DT_CLK(NULL, "iss_ctrlclk", "iss_cm:0000:8"),
|
||||||
DT_CLK(NULL, "mcasp_sync_mux_ck", "abe-clkctrl:0020:26"),
|
DT_CLK(NULL, "mcasp_sync_mux_ck", "abe_cm:0020:26"),
|
||||||
DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe-clkctrl:0028:26"),
|
DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe_cm:0028:26"),
|
||||||
DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe-clkctrl:0030:26"),
|
DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe_cm:0030:26"),
|
||||||
DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe-clkctrl:0038:26"),
|
DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe_cm:0038:26"),
|
||||||
DT_CLK(NULL, "mcbsp4_sync_mux_ck", "l4-per-clkctrl:00c0:26"),
|
DT_CLK(NULL, "mcbsp4_sync_mux_ck", "l4_per_cm:00c0:26"),
|
||||||
DT_CLK(NULL, "ocp2scp_usb_phy_phy_48m", "l3-init-clkctrl:00c0:8"),
|
DT_CLK(NULL, "ocp2scp_usb_phy_phy_48m", "l3_init_cm:00c0:8"),
|
||||||
DT_CLK(NULL, "otg_60m_gfclk", "l3-init-clkctrl:0040:24"),
|
DT_CLK(NULL, "otg_60m_gfclk", "l3_init_cm:0040:24"),
|
||||||
DT_CLK(NULL, "per_mcbsp4_gfclk", "l4-per-clkctrl:00c0:24"),
|
DT_CLK(NULL, "per_mcbsp4_gfclk", "l4_per_cm:00c0:24"),
|
||||||
DT_CLK(NULL, "pmd_stm_clock_mux_ck", "emu-sys-clkctrl:0000:20"),
|
DT_CLK(NULL, "pmd_stm_clock_mux_ck", "emu_sys_cm:0000:20"),
|
||||||
DT_CLK(NULL, "pmd_trace_clk_mux_ck", "emu-sys-clkctrl:0000:22"),
|
DT_CLK(NULL, "pmd_trace_clk_mux_ck", "emu_sys_cm:0000:22"),
|
||||||
DT_CLK(NULL, "sgx_clk_mux", "l3-gfx-clkctrl:0000:24"),
|
DT_CLK(NULL, "sgx_clk_mux", "l3_gfx_cm:0000:24"),
|
||||||
DT_CLK(NULL, "slimbus1_fclk_0", "abe-clkctrl:0040:8"),
|
DT_CLK(NULL, "slimbus1_fclk_0", "abe_cm:0040:8"),
|
||||||
DT_CLK(NULL, "slimbus1_fclk_1", "abe-clkctrl:0040:9"),
|
DT_CLK(NULL, "slimbus1_fclk_1", "abe_cm:0040:9"),
|
||||||
DT_CLK(NULL, "slimbus1_fclk_2", "abe-clkctrl:0040:10"),
|
DT_CLK(NULL, "slimbus1_fclk_2", "abe_cm:0040:10"),
|
||||||
DT_CLK(NULL, "slimbus1_slimbus_clk", "abe-clkctrl:0040:11"),
|
DT_CLK(NULL, "slimbus1_slimbus_clk", "abe_cm:0040:11"),
|
||||||
DT_CLK(NULL, "slimbus2_fclk_0", "l4-per-clkctrl:0118:8"),
|
DT_CLK(NULL, "slimbus2_fclk_0", "l4_per_cm:0118:8"),
|
||||||
DT_CLK(NULL, "slimbus2_fclk_1", "l4-per-clkctrl:0118:9"),
|
DT_CLK(NULL, "slimbus2_fclk_1", "l4_per_cm:0118:9"),
|
||||||
DT_CLK(NULL, "slimbus2_slimbus_clk", "l4-per-clkctrl:0118:10"),
|
DT_CLK(NULL, "slimbus2_slimbus_clk", "l4_per_cm:0118:10"),
|
||||||
DT_CLK(NULL, "stm_clk_div_ck", "emu-sys-clkctrl:0000:27"),
|
DT_CLK(NULL, "stm_clk_div_ck", "emu_sys_cm:0000:27"),
|
||||||
DT_CLK(NULL, "timer5_sync_mux", "abe-clkctrl:0048:24"),
|
DT_CLK(NULL, "timer5_sync_mux", "abe_cm:0048:24"),
|
||||||
DT_CLK(NULL, "timer6_sync_mux", "abe-clkctrl:0050:24"),
|
DT_CLK(NULL, "timer6_sync_mux", "abe_cm:0050:24"),
|
||||||
DT_CLK(NULL, "timer7_sync_mux", "abe-clkctrl:0058:24"),
|
DT_CLK(NULL, "timer7_sync_mux", "abe_cm:0058:24"),
|
||||||
DT_CLK(NULL, "timer8_sync_mux", "abe-clkctrl:0060:24"),
|
DT_CLK(NULL, "timer8_sync_mux", "abe_cm:0060:24"),
|
||||||
DT_CLK(NULL, "trace_clk_div_div_ck", "emu-sys-clkctrl:0000:24"),
|
DT_CLK(NULL, "trace_clk_div_div_ck", "emu_sys_cm:0000:24"),
|
||||||
DT_CLK(NULL, "usb_host_hs_func48mclk", "l3-init-clkctrl:0038:15"),
|
DT_CLK(NULL, "usb_host_hs_func48mclk", "l3_init_cm:0038:15"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3-init-clkctrl:0038:13"),
|
DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3_init_cm:0038:13"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3-init-clkctrl:0038:14"),
|
DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3_init_cm:0038:14"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3-init-clkctrl:0038:11"),
|
DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3_init_cm:0038:11"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3-init-clkctrl:0038:12"),
|
DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3_init_cm:0038:12"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3-init-clkctrl:0038:8"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3_init_cm:0038:8"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3-init-clkctrl:0038:9"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3_init_cm:0038:9"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3_init-clkctrl:0038:10"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3_init_cm:0038:10"),
|
||||||
DT_CLK(NULL, "usb_otg_hs_xclk", "l3-init-clkctrl:0040:8"),
|
DT_CLK(NULL, "usb_otg_hs_xclk", "l3_init_cm:0040:8"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3-init-clkctrl:0048:8"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3_init_cm:0048:8"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3-init-clkctrl:0048:9"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3_init_cm:0048:9"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3-init-clkctrl:0048:10"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3_init_cm:0048:10"),
|
||||||
DT_CLK(NULL, "utmi_p1_gfclk", "l3-init-clkctrl:0038:24"),
|
DT_CLK(NULL, "utmi_p1_gfclk", "l3_init_cm:0038:24"),
|
||||||
DT_CLK(NULL, "utmi_p2_gfclk", "l3-init-clkctrl:0038:25"),
|
DT_CLK(NULL, "utmi_p2_gfclk", "l3_init_cm:0038:25"),
|
||||||
{ .node_name = NULL },
|
{ .node_name = NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -50,7 +50,7 @@ static const struct omap_clkctrl_bit_data omap5_aess_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_dmic_gfclk_parents[] __initconst = {
|
static const char * const omap5_dmic_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0018:26",
|
"abe_cm:clk:0018:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -70,7 +70,7 @@ static const struct omap_clkctrl_bit_data omap5_dmic_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_mcbsp1_gfclk_parents[] __initconst = {
|
static const char * const omap5_mcbsp1_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0028:26",
|
"abe_cm:clk:0028:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -83,7 +83,7 @@ static const struct omap_clkctrl_bit_data omap5_mcbsp1_bit_data[] __initconst =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_mcbsp2_gfclk_parents[] __initconst = {
|
static const char * const omap5_mcbsp2_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0030:26",
|
"abe_cm:clk:0030:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -96,7 +96,7 @@ static const struct omap_clkctrl_bit_data omap5_mcbsp2_bit_data[] __initconst =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_mcbsp3_gfclk_parents[] __initconst = {
|
static const char * const omap5_mcbsp3_gfclk_parents[] __initconst = {
|
||||||
"abe-clkctrl:0038:26",
|
"abe_cm:clk:0038:26",
|
||||||
"pad_clks_ck",
|
"pad_clks_ck",
|
||||||
"slimbus_clk",
|
"slimbus_clk",
|
||||||
NULL,
|
NULL,
|
||||||
@@ -136,16 +136,16 @@ static const struct omap_clkctrl_bit_data omap5_timer8_bit_data[] __initconst =
|
|||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap5_abe_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap5_abe_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP5_L4_ABE_CLKCTRL, NULL, 0, "abe_iclk" },
|
{ OMAP5_L4_ABE_CLKCTRL, NULL, 0, "abe_iclk" },
|
||||||
{ OMAP5_AESS_CLKCTRL, omap5_aess_bit_data, CLKF_SW_SUP, "abe-clkctrl:0008:24" },
|
{ OMAP5_AESS_CLKCTRL, omap5_aess_bit_data, CLKF_SW_SUP, "abe_cm:clk:0008:24" },
|
||||||
{ OMAP5_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
|
{ OMAP5_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
|
||||||
{ OMAP5_DMIC_CLKCTRL, omap5_dmic_bit_data, CLKF_SW_SUP, "abe-clkctrl:0018:24" },
|
{ OMAP5_DMIC_CLKCTRL, omap5_dmic_bit_data, CLKF_SW_SUP, "abe_cm:clk:0018:24" },
|
||||||
{ OMAP5_MCBSP1_CLKCTRL, omap5_mcbsp1_bit_data, CLKF_SW_SUP, "abe-clkctrl:0028:24" },
|
{ OMAP5_MCBSP1_CLKCTRL, omap5_mcbsp1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0028:24" },
|
||||||
{ OMAP5_MCBSP2_CLKCTRL, omap5_mcbsp2_bit_data, CLKF_SW_SUP, "abe-clkctrl:0030:24" },
|
{ OMAP5_MCBSP2_CLKCTRL, omap5_mcbsp2_bit_data, CLKF_SW_SUP, "abe_cm:clk:0030:24" },
|
||||||
{ OMAP5_MCBSP3_CLKCTRL, omap5_mcbsp3_bit_data, CLKF_SW_SUP, "abe-clkctrl:0038:24" },
|
{ OMAP5_MCBSP3_CLKCTRL, omap5_mcbsp3_bit_data, CLKF_SW_SUP, "abe_cm:clk:0038:24" },
|
||||||
{ OMAP5_TIMER5_CLKCTRL, omap5_timer5_bit_data, CLKF_SW_SUP, "abe-clkctrl:0048:24" },
|
{ OMAP5_TIMER5_CLKCTRL, omap5_timer5_bit_data, CLKF_SW_SUP, "abe_cm:clk:0048:24" },
|
||||||
{ OMAP5_TIMER6_CLKCTRL, omap5_timer6_bit_data, CLKF_SW_SUP, "abe-clkctrl:0050:24" },
|
{ OMAP5_TIMER6_CLKCTRL, omap5_timer6_bit_data, CLKF_SW_SUP, "abe_cm:clk:0050:24" },
|
||||||
{ OMAP5_TIMER7_CLKCTRL, omap5_timer7_bit_data, CLKF_SW_SUP, "abe-clkctrl:0058:24" },
|
{ OMAP5_TIMER7_CLKCTRL, omap5_timer7_bit_data, CLKF_SW_SUP, "abe_cm:clk:0058:24" },
|
||||||
{ OMAP5_TIMER8_CLKCTRL, omap5_timer8_bit_data, CLKF_SW_SUP, "abe-clkctrl:0060:24" },
|
{ OMAP5_TIMER8_CLKCTRL, omap5_timer8_bit_data, CLKF_SW_SUP, "abe_cm:clk:0060:24" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -266,12 +266,12 @@ static const struct omap_clkctrl_bit_data omap5_gpio8_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap5_l4per_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap5_l4per_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP5_TIMER10_CLKCTRL, omap5_timer10_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0008:24" },
|
{ OMAP5_TIMER10_CLKCTRL, omap5_timer10_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0008:24" },
|
||||||
{ OMAP5_TIMER11_CLKCTRL, omap5_timer11_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0010:24" },
|
{ OMAP5_TIMER11_CLKCTRL, omap5_timer11_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0010:24" },
|
||||||
{ OMAP5_TIMER2_CLKCTRL, omap5_timer2_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0018:24" },
|
{ OMAP5_TIMER2_CLKCTRL, omap5_timer2_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0018:24" },
|
||||||
{ OMAP5_TIMER3_CLKCTRL, omap5_timer3_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0020:24" },
|
{ OMAP5_TIMER3_CLKCTRL, omap5_timer3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0020:24" },
|
||||||
{ OMAP5_TIMER4_CLKCTRL, omap5_timer4_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0028:24" },
|
{ OMAP5_TIMER4_CLKCTRL, omap5_timer4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0028:24" },
|
||||||
{ OMAP5_TIMER9_CLKCTRL, omap5_timer9_bit_data, CLKF_SW_SUP, "l4per-clkctrl:0030:24" },
|
{ OMAP5_TIMER9_CLKCTRL, omap5_timer9_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0030:24" },
|
||||||
{ OMAP5_GPIO2_CLKCTRL, omap5_gpio2_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
{ OMAP5_GPIO2_CLKCTRL, omap5_gpio2_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
||||||
{ OMAP5_GPIO3_CLKCTRL, omap5_gpio3_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
{ OMAP5_GPIO3_CLKCTRL, omap5_gpio3_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
||||||
{ OMAP5_GPIO4_CLKCTRL, omap5_gpio4_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
{ OMAP5_GPIO4_CLKCTRL, omap5_gpio4_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
||||||
@@ -343,7 +343,7 @@ static const struct omap_clkctrl_bit_data omap5_dss_core_bit_data[] __initconst
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap5_dss_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap5_dss_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP5_DSS_CORE_CLKCTRL, omap5_dss_core_bit_data, CLKF_SW_SUP, "dss-clkctrl:0000:8" },
|
{ OMAP5_DSS_CORE_CLKCTRL, omap5_dss_core_bit_data, CLKF_SW_SUP, "dss_cm:clk:0000:8" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -376,7 +376,7 @@ static const struct omap_clkctrl_bit_data omap5_gpu_core_bit_data[] __initconst
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap5_gpu_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap5_gpu_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP5_GPU_CLKCTRL, omap5_gpu_core_bit_data, CLKF_SW_SUP, "gpu-clkctrl:0000:24" },
|
{ OMAP5_GPU_CLKCTRL, omap5_gpu_core_bit_data, CLKF_SW_SUP, "gpu_cm:clk:0000:24" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -387,7 +387,7 @@ static const char * const omap5_mmc1_fclk_mux_parents[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_mmc1_fclk_parents[] __initconst = {
|
static const char * const omap5_mmc1_fclk_parents[] __initconst = {
|
||||||
"l3init-clkctrl:0008:24",
|
"l3init_cm:clk:0008:24",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -403,7 +403,7 @@ static const struct omap_clkctrl_bit_data omap5_mmc1_bit_data[] __initconst = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_mmc2_fclk_parents[] __initconst = {
|
static const char * const omap5_mmc2_fclk_parents[] __initconst = {
|
||||||
"l3init-clkctrl:0010:24",
|
"l3init_cm:clk:0010:24",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -428,12 +428,12 @@ static const char * const omap5_usb_host_hs_hsic480m_p3_clk_parents[] __initcons
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
|
static const char * const omap5_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
|
||||||
"l3init-clkctrl:0038:24",
|
"l3init_cm:clk:0038:24",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * const omap5_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
|
static const char * const omap5_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
|
||||||
"l3init-clkctrl:0038:25",
|
"l3init_cm:clk:0038:25",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -492,8 +492,8 @@ static const struct omap_clkctrl_bit_data omap5_usb_otg_ss_bit_data[] __initcons
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct omap_clkctrl_reg_data omap5_l3init_clkctrl_regs[] __initconst = {
|
static const struct omap_clkctrl_reg_data omap5_l3init_clkctrl_regs[] __initconst = {
|
||||||
{ OMAP5_MMC1_CLKCTRL, omap5_mmc1_bit_data, CLKF_SW_SUP, "l3init-clkctrl:0008:25" },
|
{ OMAP5_MMC1_CLKCTRL, omap5_mmc1_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0008:25" },
|
||||||
{ OMAP5_MMC2_CLKCTRL, omap5_mmc2_bit_data, CLKF_SW_SUP, "l3init-clkctrl:0010:25" },
|
{ OMAP5_MMC2_CLKCTRL, omap5_mmc2_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0010:25" },
|
||||||
{ OMAP5_USB_HOST_HS_CLKCTRL, omap5_usb_host_hs_bit_data, CLKF_SW_SUP, "l3init_60m_fclk" },
|
{ OMAP5_USB_HOST_HS_CLKCTRL, omap5_usb_host_hs_bit_data, CLKF_SW_SUP, "l3init_60m_fclk" },
|
||||||
{ OMAP5_USB_TLL_HS_CLKCTRL, omap5_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
{ OMAP5_USB_TLL_HS_CLKCTRL, omap5_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
|
||||||
{ OMAP5_SATA_CLKCTRL, omap5_sata_bit_data, CLKF_SW_SUP, "func_48m_fclk" },
|
{ OMAP5_SATA_CLKCTRL, omap5_sata_bit_data, CLKF_SW_SUP, "func_48m_fclk" },
|
||||||
@@ -517,7 +517,7 @@ static const struct omap_clkctrl_reg_data omap5_wkupaon_clkctrl_regs[] __initcon
|
|||||||
{ OMAP5_L4_WKUP_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
|
{ OMAP5_L4_WKUP_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
|
||||||
{ OMAP5_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
{ OMAP5_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
||||||
{ OMAP5_GPIO1_CLKCTRL, omap5_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" },
|
{ OMAP5_GPIO1_CLKCTRL, omap5_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" },
|
||||||
{ OMAP5_TIMER1_CLKCTRL, omap5_timer1_bit_data, CLKF_SW_SUP, "wkupaon-clkctrl:0020:24" },
|
{ OMAP5_TIMER1_CLKCTRL, omap5_timer1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0020:24" },
|
||||||
{ OMAP5_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
|
{ OMAP5_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
|
||||||
{ OMAP5_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
{ OMAP5_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
|
||||||
{ 0 },
|
{ 0 },
|
||||||
@@ -547,58 +547,58 @@ const struct omap_clkctrl_data omap5_clkctrl_data[] __initconst = {
|
|||||||
static struct ti_dt_clk omap54xx_clks[] = {
|
static struct ti_dt_clk omap54xx_clks[] = {
|
||||||
DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"),
|
DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"),
|
||||||
DT_CLK(NULL, "sys_clkin_ck", "sys_clkin"),
|
DT_CLK(NULL, "sys_clkin_ck", "sys_clkin"),
|
||||||
DT_CLK(NULL, "dmic_gfclk", "abe-clkctrl:0018:24"),
|
DT_CLK(NULL, "dmic_gfclk", "abe_cm:0018:24"),
|
||||||
DT_CLK(NULL, "dmic_sync_mux_ck", "abe-clkctrl:0018:26"),
|
DT_CLK(NULL, "dmic_sync_mux_ck", "abe_cm:0018:26"),
|
||||||
DT_CLK(NULL, "dss_32khz_clk", "dss-clkctrl:0000:11"),
|
DT_CLK(NULL, "dss_32khz_clk", "dss_cm:0000:11"),
|
||||||
DT_CLK(NULL, "dss_48mhz_clk", "dss-clkctrl:0000:9"),
|
DT_CLK(NULL, "dss_48mhz_clk", "dss_cm:0000:9"),
|
||||||
DT_CLK(NULL, "dss_dss_clk", "dss-clkctrl:0000:8"),
|
DT_CLK(NULL, "dss_dss_clk", "dss_cm:0000:8"),
|
||||||
DT_CLK(NULL, "dss_sys_clk", "dss-clkctrl:0000:10"),
|
DT_CLK(NULL, "dss_sys_clk", "dss_cm:0000:10"),
|
||||||
DT_CLK(NULL, "gpio1_dbclk", "wkupaon-clkctrl:0018:8"),
|
DT_CLK(NULL, "gpio1_dbclk", "wkupaon_cm:0018:8"),
|
||||||
DT_CLK(NULL, "gpio2_dbclk", "l4per-clkctrl:0040:8"),
|
DT_CLK(NULL, "gpio2_dbclk", "l4per_cm:0040:8"),
|
||||||
DT_CLK(NULL, "gpio3_dbclk", "l4per-clkctrl:0048:8"),
|
DT_CLK(NULL, "gpio3_dbclk", "l4per_cm:0048:8"),
|
||||||
DT_CLK(NULL, "gpio4_dbclk", "l4per-clkctrl:0050:8"),
|
DT_CLK(NULL, "gpio4_dbclk", "l4per_cm:0050:8"),
|
||||||
DT_CLK(NULL, "gpio5_dbclk", "l4per-clkctrl:0058:8"),
|
DT_CLK(NULL, "gpio5_dbclk", "l4per_cm:0058:8"),
|
||||||
DT_CLK(NULL, "gpio6_dbclk", "l4per-clkctrl:0060:8"),
|
DT_CLK(NULL, "gpio6_dbclk", "l4per_cm:0060:8"),
|
||||||
DT_CLK(NULL, "gpio7_dbclk", "l4per-clkctrl:00f0:8"),
|
DT_CLK(NULL, "gpio7_dbclk", "l4per_cm:00f0:8"),
|
||||||
DT_CLK(NULL, "gpio8_dbclk", "l4per-clkctrl:00f8:8"),
|
DT_CLK(NULL, "gpio8_dbclk", "l4per_cm:00f8:8"),
|
||||||
DT_CLK(NULL, "mcbsp1_gfclk", "abe-clkctrl:0028:24"),
|
DT_CLK(NULL, "mcbsp1_gfclk", "abe_cm:0028:24"),
|
||||||
DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe-clkctrl:0028:26"),
|
DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe_cm:0028:26"),
|
||||||
DT_CLK(NULL, "mcbsp2_gfclk", "abe-clkctrl:0030:24"),
|
DT_CLK(NULL, "mcbsp2_gfclk", "abe_cm:0030:24"),
|
||||||
DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe-clkctrl:0030:26"),
|
DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe_cm:0030:26"),
|
||||||
DT_CLK(NULL, "mcbsp3_gfclk", "abe-clkctrl:0038:24"),
|
DT_CLK(NULL, "mcbsp3_gfclk", "abe_cm:0038:24"),
|
||||||
DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe-clkctrl:0038:26"),
|
DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe_cm:0038:26"),
|
||||||
DT_CLK(NULL, "mmc1_32khz_clk", "l3init-clkctrl:0008:8"),
|
DT_CLK(NULL, "mmc1_32khz_clk", "l3init_cm:0008:8"),
|
||||||
DT_CLK(NULL, "mmc1_fclk", "l3init-clkctrl:0008:25"),
|
DT_CLK(NULL, "mmc1_fclk", "l3init_cm:0008:25"),
|
||||||
DT_CLK(NULL, "mmc1_fclk_mux", "l3init-clkctrl:0008:24"),
|
DT_CLK(NULL, "mmc1_fclk_mux", "l3init_cm:0008:24"),
|
||||||
DT_CLK(NULL, "mmc2_fclk", "l3init-clkctrl:0010:25"),
|
DT_CLK(NULL, "mmc2_fclk", "l3init_cm:0010:25"),
|
||||||
DT_CLK(NULL, "mmc2_fclk_mux", "l3init-clkctrl:0010:24"),
|
DT_CLK(NULL, "mmc2_fclk_mux", "l3init_cm:0010:24"),
|
||||||
DT_CLK(NULL, "sata_ref_clk", "l3init-clkctrl:0068:8"),
|
DT_CLK(NULL, "sata_ref_clk", "l3init_cm:0068:8"),
|
||||||
DT_CLK(NULL, "timer10_gfclk_mux", "l4per-clkctrl:0008:24"),
|
DT_CLK(NULL, "timer10_gfclk_mux", "l4per_cm:0008:24"),
|
||||||
DT_CLK(NULL, "timer11_gfclk_mux", "l4per-clkctrl:0010:24"),
|
DT_CLK(NULL, "timer11_gfclk_mux", "l4per_cm:0010:24"),
|
||||||
DT_CLK(NULL, "timer1_gfclk_mux", "wkupaon-clkctrl:0020:24"),
|
DT_CLK(NULL, "timer1_gfclk_mux", "wkupaon_cm:0020:24"),
|
||||||
DT_CLK(NULL, "timer2_gfclk_mux", "l4per-clkctrl:0018:24"),
|
DT_CLK(NULL, "timer2_gfclk_mux", "l4per_cm:0018:24"),
|
||||||
DT_CLK(NULL, "timer3_gfclk_mux", "l4per-clkctrl:0020:24"),
|
DT_CLK(NULL, "timer3_gfclk_mux", "l4per_cm:0020:24"),
|
||||||
DT_CLK(NULL, "timer4_gfclk_mux", "l4per-clkctrl:0028:24"),
|
DT_CLK(NULL, "timer4_gfclk_mux", "l4per_cm:0028:24"),
|
||||||
DT_CLK(NULL, "timer5_gfclk_mux", "abe-clkctrl:0048:24"),
|
DT_CLK(NULL, "timer5_gfclk_mux", "abe_cm:0048:24"),
|
||||||
DT_CLK(NULL, "timer6_gfclk_mux", "abe-clkctrl:0050:24"),
|
DT_CLK(NULL, "timer6_gfclk_mux", "abe_cm:0050:24"),
|
||||||
DT_CLK(NULL, "timer7_gfclk_mux", "abe-clkctrl:0058:24"),
|
DT_CLK(NULL, "timer7_gfclk_mux", "abe_cm:0058:24"),
|
||||||
DT_CLK(NULL, "timer8_gfclk_mux", "abe-clkctrl:0060:24"),
|
DT_CLK(NULL, "timer8_gfclk_mux", "abe_cm:0060:24"),
|
||||||
DT_CLK(NULL, "timer9_gfclk_mux", "l4per-clkctrl:0030:24"),
|
DT_CLK(NULL, "timer9_gfclk_mux", "l4per_cm:0030:24"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3init-clkctrl:0038:13"),
|
DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3init_cm:0038:13"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3init-clkctrl:0038:14"),
|
DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3init_cm:0038:14"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic480m_p3_clk", "l3init-clkctrl:0038:7"),
|
DT_CLK(NULL, "usb_host_hs_hsic480m_p3_clk", "l3init_cm:0038:7"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3init-clkctrl:0038:11"),
|
DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3init_cm:0038:11"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3init-clkctrl:0038:12"),
|
DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3init_cm:0038:12"),
|
||||||
DT_CLK(NULL, "usb_host_hs_hsic60m_p3_clk", "l3init-clkctrl:0038:6"),
|
DT_CLK(NULL, "usb_host_hs_hsic60m_p3_clk", "l3init_cm:0038:6"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3init-clkctrl:0038:8"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3init_cm:0038:8"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3init-clkctrl:0038:9"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3init_cm:0038:9"),
|
||||||
DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3init-clkctrl:0038:10"),
|
DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3init_cm:0038:10"),
|
||||||
DT_CLK(NULL, "usb_otg_ss_refclk960m", "l3init-clkctrl:00d0:8"),
|
DT_CLK(NULL, "usb_otg_ss_refclk960m", "l3init_cm:00d0:8"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3init-clkctrl:0048:8"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3init_cm:0048:8"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3init-clkctrl:0048:9"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3init_cm:0048:9"),
|
||||||
DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3init-clkctrl:0048:10"),
|
DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3init_cm:0048:10"),
|
||||||
DT_CLK(NULL, "utmi_p1_gfclk", "l3init-clkctrl:0038:24"),
|
DT_CLK(NULL, "utmi_p1_gfclk", "l3init_cm:0038:24"),
|
||||||
DT_CLK(NULL, "utmi_p2_gfclk", "l3init-clkctrl:0038:25"),
|
DT_CLK(NULL, "utmi_p2_gfclk", "l3init_cm:0038:25"),
|
||||||
{ .node_name = NULL },
|
{ .node_name = NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -511,6 +511,10 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
|
|||||||
char *c;
|
char *c;
|
||||||
u16 soc_mask = 0;
|
u16 soc_mask = 0;
|
||||||
|
|
||||||
|
if (!(ti_clk_get_features()->flags & TI_CLK_CLKCTRL_COMPAT) &&
|
||||||
|
of_node_name_eq(node, "clk"))
|
||||||
|
ti_clk_features.flags |= TI_CLK_CLKCTRL_COMPAT;
|
||||||
|
|
||||||
addrp = of_get_address(node, 0, NULL, NULL);
|
addrp = of_get_address(node, 0, NULL, NULL);
|
||||||
addr = (u32)of_translate_address(node, addrp);
|
addr = (u32)of_translate_address(node, addrp);
|
||||||
|
|
||||||
|
@@ -3020,9 +3020,10 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
/* Request and map I/O memory */
|
/* Request and map I/O memory */
|
||||||
xdev->regs = devm_platform_ioremap_resource(pdev, 0);
|
xdev->regs = devm_platform_ioremap_resource(pdev, 0);
|
||||||
if (IS_ERR(xdev->regs))
|
if (IS_ERR(xdev->regs)) {
|
||||||
return PTR_ERR(xdev->regs);
|
err = PTR_ERR(xdev->regs);
|
||||||
|
goto disable_clks;
|
||||||
|
}
|
||||||
/* Retrieve the DMA engine properties from the device tree */
|
/* Retrieve the DMA engine properties from the device tree */
|
||||||
xdev->max_buffer_len = GENMASK(XILINX_DMA_MAX_TRANS_LEN_MAX - 1, 0);
|
xdev->max_buffer_len = GENMASK(XILINX_DMA_MAX_TRANS_LEN_MAX - 1, 0);
|
||||||
xdev->s2mm_chan_id = xdev->dma_config->max_channels / 2;
|
xdev->s2mm_chan_id = xdev->dma_config->max_channels / 2;
|
||||||
@@ -3050,7 +3051,7 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
|||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
dev_err(xdev->dev,
|
dev_err(xdev->dev,
|
||||||
"missing xlnx,num-fstores property\n");
|
"missing xlnx,num-fstores property\n");
|
||||||
return err;
|
goto disable_clks;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = of_property_read_u32(node, "xlnx,flush-fsync",
|
err = of_property_read_u32(node, "xlnx,flush-fsync",
|
||||||
@@ -3070,7 +3071,11 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
|||||||
xdev->ext_addr = false;
|
xdev->ext_addr = false;
|
||||||
|
|
||||||
/* Set the dma mask bits */
|
/* Set the dma mask bits */
|
||||||
dma_set_mask_and_coherent(xdev->dev, DMA_BIT_MASK(addr_width));
|
err = dma_set_mask_and_coherent(xdev->dev, DMA_BIT_MASK(addr_width));
|
||||||
|
if (err < 0) {
|
||||||
|
dev_err(xdev->dev, "DMA mask error %d\n", err);
|
||||||
|
goto disable_clks;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the DMA engine */
|
/* Initialize the DMA engine */
|
||||||
xdev->common.dev = &pdev->dev;
|
xdev->common.dev = &pdev->dev;
|
||||||
@@ -3115,7 +3120,7 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
|||||||
for_each_child_of_node(node, child) {
|
for_each_child_of_node(node, child) {
|
||||||
err = xilinx_dma_child_probe(xdev, child);
|
err = xilinx_dma_child_probe(xdev, child);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto disable_clks;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xdev->dma_config->dmatype == XDMA_TYPE_VDMA) {
|
if (xdev->dma_config->dmatype == XDMA_TYPE_VDMA) {
|
||||||
@@ -3150,12 +3155,12 @@ static int xilinx_dma_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
disable_clks:
|
|
||||||
xdma_disable_allclks(xdev);
|
|
||||||
error:
|
error:
|
||||||
for (i = 0; i < xdev->dma_config->max_channels; i++)
|
for (i = 0; i < xdev->dma_config->max_channels; i++)
|
||||||
if (xdev->chan[i])
|
if (xdev->chan[i])
|
||||||
xilinx_dma_chan_remove(xdev->chan[i]);
|
xilinx_dma_chan_remove(xdev->chan[i]);
|
||||||
|
disable_clks:
|
||||||
|
xdma_disable_allclks(xdev);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@@ -112,9 +112,28 @@ static int scmi_pm_domain_probe(struct scmi_device *sdev)
|
|||||||
scmi_pd_data->domains = domains;
|
scmi_pd_data->domains = domains;
|
||||||
scmi_pd_data->num_domains = num_domains;
|
scmi_pd_data->num_domains = num_domains;
|
||||||
|
|
||||||
|
dev_set_drvdata(dev, scmi_pd_data);
|
||||||
|
|
||||||
return of_genpd_add_provider_onecell(np, scmi_pd_data);
|
return of_genpd_add_provider_onecell(np, scmi_pd_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void scmi_pm_domain_remove(struct scmi_device *sdev)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct genpd_onecell_data *scmi_pd_data;
|
||||||
|
struct device *dev = &sdev->dev;
|
||||||
|
struct device_node *np = dev->of_node;
|
||||||
|
|
||||||
|
of_genpd_del_provider(np);
|
||||||
|
|
||||||
|
scmi_pd_data = dev_get_drvdata(dev);
|
||||||
|
for (i = 0; i < scmi_pd_data->num_domains; i++) {
|
||||||
|
if (!scmi_pd_data->domains[i])
|
||||||
|
continue;
|
||||||
|
pm_genpd_remove(scmi_pd_data->domains[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const struct scmi_device_id scmi_id_table[] = {
|
static const struct scmi_device_id scmi_id_table[] = {
|
||||||
{ SCMI_PROTOCOL_POWER, "genpd" },
|
{ SCMI_PROTOCOL_POWER, "genpd" },
|
||||||
{ },
|
{ },
|
||||||
@@ -124,6 +143,7 @@ MODULE_DEVICE_TABLE(scmi, scmi_id_table);
|
|||||||
static struct scmi_driver scmi_power_domain_driver = {
|
static struct scmi_driver scmi_power_domain_driver = {
|
||||||
.name = "scmi-power-domain",
|
.name = "scmi-power-domain",
|
||||||
.probe = scmi_pm_domain_probe,
|
.probe = scmi_pm_domain_probe,
|
||||||
|
.remove = scmi_pm_domain_remove,
|
||||||
.id_table = scmi_id_table,
|
.id_table = scmi_id_table,
|
||||||
};
|
};
|
||||||
module_scmi_driver(scmi_power_domain_driver);
|
module_scmi_driver(scmi_power_domain_driver);
|
||||||
|
@@ -2047,7 +2047,8 @@ static void dce110_setup_audio_dto(
|
|||||||
continue;
|
continue;
|
||||||
if (pipe_ctx->stream->signal != SIGNAL_TYPE_HDMI_TYPE_A)
|
if (pipe_ctx->stream->signal != SIGNAL_TYPE_HDMI_TYPE_A)
|
||||||
continue;
|
continue;
|
||||||
if (pipe_ctx->stream_res.audio != NULL) {
|
if (pipe_ctx->stream_res.audio != NULL &&
|
||||||
|
pipe_ctx->stream_res.audio->enabled == false) {
|
||||||
struct audio_output audio_output;
|
struct audio_output audio_output;
|
||||||
|
|
||||||
build_audio_output(context, pipe_ctx, &audio_output);
|
build_audio_output(context, pipe_ctx, &audio_output);
|
||||||
@@ -2075,7 +2076,8 @@ static void dce110_setup_audio_dto(
|
|||||||
if (!dc_is_dp_signal(pipe_ctx->stream->signal))
|
if (!dc_is_dp_signal(pipe_ctx->stream->signal))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pipe_ctx->stream_res.audio != NULL) {
|
if (pipe_ctx->stream_res.audio != NULL &&
|
||||||
|
pipe_ctx->stream_res.audio->enabled == false) {
|
||||||
struct audio_output audio_output;
|
struct audio_output audio_output;
|
||||||
|
|
||||||
build_audio_output(context, pipe_ctx, &audio_output);
|
build_audio_output(context, pipe_ctx, &audio_output);
|
||||||
|
@@ -1481,6 +1481,7 @@ static void dcn20_update_dchubp_dpp(
|
|||||||
/* Any updates are handled in dc interface, just need
|
/* Any updates are handled in dc interface, just need
|
||||||
* to apply existing for plane enable / opp change */
|
* to apply existing for plane enable / opp change */
|
||||||
if (pipe_ctx->update_flags.bits.enable || pipe_ctx->update_flags.bits.opp_changed
|
if (pipe_ctx->update_flags.bits.enable || pipe_ctx->update_flags.bits.opp_changed
|
||||||
|
|| pipe_ctx->update_flags.bits.plane_changed
|
||||||
|| pipe_ctx->stream->update_flags.bits.gamut_remap
|
|| pipe_ctx->stream->update_flags.bits.gamut_remap
|
||||||
|| pipe_ctx->stream->update_flags.bits.out_csc) {
|
|| pipe_ctx->stream->update_flags.bits.out_csc) {
|
||||||
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
|
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
|
||||||
|
@@ -112,6 +112,8 @@ static const struct xpad_device {
|
|||||||
u8 xtype;
|
u8 xtype;
|
||||||
} xpad_device[] = {
|
} xpad_device[] = {
|
||||||
{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
|
{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 },
|
||||||
{ 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX },
|
{ 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX },
|
||||||
{ 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX },
|
{ 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX },
|
||||||
{ 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX },
|
{ 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX },
|
||||||
@@ -242,6 +244,7 @@ static const struct xpad_device {
|
|||||||
{ 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
{ 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
||||||
{ 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE },
|
{ 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE },
|
||||||
{ 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
{ 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
||||||
|
{ 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
||||||
{ 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX },
|
{ 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX },
|
||||||
{ 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX },
|
{ 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX },
|
||||||
{ 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX },
|
{ 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX },
|
||||||
@@ -258,6 +261,7 @@ static const struct xpad_device {
|
|||||||
{ 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX },
|
{ 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX },
|
||||||
{ 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 },
|
{ 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 },
|
||||||
{ 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 },
|
{ 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
||||||
{ 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 },
|
{ 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 },
|
||||||
{ 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
{ 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE },
|
||||||
{ 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
|
{ 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
|
||||||
@@ -322,6 +326,7 @@ static const struct xpad_device {
|
|||||||
{ 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
{ 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
{ 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 },
|
{ 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 },
|
{ 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
{ 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE },
|
{ 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE },
|
||||||
@@ -331,6 +336,14 @@ static const struct xpad_device {
|
|||||||
{ 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 },
|
{ 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 },
|
{ 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 },
|
||||||
{ 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
|
{ 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE },
|
||||||
|
{ 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 },
|
||||||
|
{ 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 },
|
||||||
{ 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 },
|
{ 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 },
|
||||||
{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
|
{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
|
||||||
{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
|
{ 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
|
||||||
@@ -416,6 +429,7 @@ static const signed short xpad_abs_triggers[] = {
|
|||||||
static const struct usb_device_id xpad_table[] = {
|
static const struct usb_device_id xpad_table[] = {
|
||||||
{ USB_INTERFACE_INFO('X', 'B', 0) }, /* X-Box USB-IF not approved class */
|
{ USB_INTERFACE_INFO('X', 'B', 0) }, /* X-Box USB-IF not approved class */
|
||||||
XPAD_XBOX360_VENDOR(0x0079), /* GPD Win 2 Controller */
|
XPAD_XBOX360_VENDOR(0x0079), /* GPD Win 2 Controller */
|
||||||
|
XPAD_XBOX360_VENDOR(0x03eb), /* Wooting Keyboards (Legacy) */
|
||||||
XPAD_XBOX360_VENDOR(0x044f), /* Thrustmaster X-Box 360 controllers */
|
XPAD_XBOX360_VENDOR(0x044f), /* Thrustmaster X-Box 360 controllers */
|
||||||
XPAD_XBOX360_VENDOR(0x045e), /* Microsoft X-Box 360 controllers */
|
XPAD_XBOX360_VENDOR(0x045e), /* Microsoft X-Box 360 controllers */
|
||||||
XPAD_XBOXONE_VENDOR(0x045e), /* Microsoft X-Box One controllers */
|
XPAD_XBOXONE_VENDOR(0x045e), /* Microsoft X-Box One controllers */
|
||||||
@@ -426,6 +440,7 @@ static const struct usb_device_id xpad_table[] = {
|
|||||||
{ USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */
|
{ USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */
|
||||||
XPAD_XBOXONE_VENDOR(0x0738), /* Mad Catz FightStick TE 2 */
|
XPAD_XBOXONE_VENDOR(0x0738), /* Mad Catz FightStick TE 2 */
|
||||||
XPAD_XBOX360_VENDOR(0x07ff), /* Mad Catz GamePad */
|
XPAD_XBOX360_VENDOR(0x07ff), /* Mad Catz GamePad */
|
||||||
|
XPAD_XBOX360_VENDOR(0x0c12), /* Zeroplus X-Box 360 controllers */
|
||||||
XPAD_XBOX360_VENDOR(0x0e6f), /* 0x0e6f X-Box 360 controllers */
|
XPAD_XBOX360_VENDOR(0x0e6f), /* 0x0e6f X-Box 360 controllers */
|
||||||
XPAD_XBOXONE_VENDOR(0x0e6f), /* 0x0e6f X-Box One controllers */
|
XPAD_XBOXONE_VENDOR(0x0e6f), /* 0x0e6f X-Box One controllers */
|
||||||
XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
|
XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
|
||||||
@@ -446,8 +461,12 @@ static const struct usb_device_id xpad_table[] = {
|
|||||||
XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA Controllers */
|
XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA Controllers */
|
||||||
XPAD_XBOX360_VENDOR(0x24c6), /* PowerA Controllers */
|
XPAD_XBOX360_VENDOR(0x24c6), /* PowerA Controllers */
|
||||||
XPAD_XBOXONE_VENDOR(0x24c6), /* PowerA Controllers */
|
XPAD_XBOXONE_VENDOR(0x24c6), /* PowerA Controllers */
|
||||||
|
XPAD_XBOX360_VENDOR(0x2563), /* OneXPlayer Gamepad */
|
||||||
|
XPAD_XBOX360_VENDOR(0x260d), /* Dareu H101 */
|
||||||
|
XPAD_XBOXONE_VENDOR(0x2dc8), /* 8BitDo Pro 2 Wired Controller for Xbox */
|
||||||
XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Duke X-Box One pad */
|
XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Duke X-Box One pad */
|
||||||
XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */
|
XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */
|
||||||
|
XPAD_XBOX360_VENDOR(0x31e3), /* Wooting Keyboards */
|
||||||
XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */
|
XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
@@ -1964,7 +1983,6 @@ static struct usb_driver xpad_driver = {
|
|||||||
.disconnect = xpad_disconnect,
|
.disconnect = xpad_disconnect,
|
||||||
.suspend = xpad_suspend,
|
.suspend = xpad_suspend,
|
||||||
.resume = xpad_resume,
|
.resume = xpad_resume,
|
||||||
.reset_resume = xpad_resume,
|
|
||||||
.id_table = xpad_table,
|
.id_table = xpad_table,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -331,6 +331,22 @@ static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pci_endpoint_test_validate_xfer_params(struct device *dev,
|
||||||
|
struct pci_endpoint_test_xfer_param *param, size_t alignment)
|
||||||
|
{
|
||||||
|
if (!param->size) {
|
||||||
|
dev_dbg(dev, "Data size is zero\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param->size > SIZE_MAX - alignment) {
|
||||||
|
dev_dbg(dev, "Maximum transfer data size exceeded\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static bool pci_endpoint_test_copy(struct pci_endpoint_test *test,
|
static bool pci_endpoint_test_copy(struct pci_endpoint_test *test,
|
||||||
unsigned long arg)
|
unsigned long arg)
|
||||||
{
|
{
|
||||||
@@ -362,9 +378,11 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = pci_endpoint_test_validate_xfer_params(dev, ¶m, alignment);
|
||||||
|
if (err)
|
||||||
|
return false;
|
||||||
|
|
||||||
size = param.size;
|
size = param.size;
|
||||||
if (size > SIZE_MAX - alignment)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
||||||
if (use_dma)
|
if (use_dma)
|
||||||
@@ -496,9 +514,11 @@ static bool pci_endpoint_test_write(struct pci_endpoint_test *test,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = pci_endpoint_test_validate_xfer_params(dev, ¶m, alignment);
|
||||||
|
if (err)
|
||||||
|
return false;
|
||||||
|
|
||||||
size = param.size;
|
size = param.size;
|
||||||
if (size > SIZE_MAX - alignment)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
||||||
if (use_dma)
|
if (use_dma)
|
||||||
@@ -594,9 +614,11 @@ static bool pci_endpoint_test_read(struct pci_endpoint_test *test,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = pci_endpoint_test_validate_xfer_params(dev, ¶m, alignment);
|
||||||
|
if (err)
|
||||||
|
return false;
|
||||||
|
|
||||||
size = param.size;
|
size = param.size;
|
||||||
if (size > SIZE_MAX - alignment)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
use_dma = !!(param.flags & PCITEST_FLAGS_USE_DMA);
|
||||||
if (use_dma)
|
if (use_dma)
|
||||||
|
@@ -857,7 +857,8 @@ try_again:
|
|||||||
* the CCS bit is set as well. We deliberately deviate from the spec in
|
* the CCS bit is set as well. We deliberately deviate from the spec in
|
||||||
* regards to this, which allows UHS-I to be supported for SDSC cards.
|
* regards to this, which allows UHS-I to be supported for SDSC cards.
|
||||||
*/
|
*/
|
||||||
if (!mmc_host_is_spi(host) && rocr && (*rocr & 0x01000000)) {
|
if (!mmc_host_is_spi(host) && (ocr & SD_OCR_S18R) &&
|
||||||
|
rocr && (*rocr & SD_ROCR_S18A)) {
|
||||||
err = mmc_set_uhs_voltage(host, pocr);
|
err = mmc_set_uhs_voltage(host, pocr);
|
||||||
if (err == -EAGAIN) {
|
if (err == -EAGAIN) {
|
||||||
retries--;
|
retries--;
|
||||||
|
@@ -89,11 +89,8 @@ static int aq_ndev_close(struct net_device *ndev)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
err = aq_nic_stop(aq_nic);
|
err = aq_nic_stop(aq_nic);
|
||||||
if (err < 0)
|
|
||||||
goto err_exit;
|
|
||||||
aq_nic_deinit(aq_nic, true);
|
aq_nic_deinit(aq_nic, true);
|
||||||
|
|
||||||
err_exit:
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3681,6 +3681,8 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,
|
|||||||
|
|
||||||
rx_status.band = channel->band;
|
rx_status.band = channel->band;
|
||||||
rx_status.rate_idx = nla_get_u32(info->attrs[HWSIM_ATTR_RX_RATE]);
|
rx_status.rate_idx = nla_get_u32(info->attrs[HWSIM_ATTR_RX_RATE]);
|
||||||
|
if (rx_status.rate_idx >= data2->hw->wiphy->bands[rx_status.band]->n_bitrates)
|
||||||
|
goto out;
|
||||||
rx_status.signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]);
|
rx_status.signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]);
|
||||||
|
|
||||||
hdr = (void *)skb->data;
|
hdr = (void *)skb->data;
|
||||||
|
@@ -1472,7 +1472,7 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid)
|
|||||||
cancel_work_sync(&channel->intent_work);
|
cancel_work_sync(&channel->intent_work);
|
||||||
|
|
||||||
if (channel->rpdev) {
|
if (channel->rpdev) {
|
||||||
strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
|
strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name));
|
||||||
chinfo.src = RPMSG_ADDR_ANY;
|
chinfo.src = RPMSG_ADDR_ANY;
|
||||||
chinfo.dst = RPMSG_ADDR_ANY;
|
chinfo.dst = RPMSG_ADDR_ANY;
|
||||||
|
|
||||||
|
@@ -1073,7 +1073,7 @@ static int qcom_smd_create_device(struct qcom_smd_channel *channel)
|
|||||||
|
|
||||||
/* Assign public information to the rpmsg_device */
|
/* Assign public information to the rpmsg_device */
|
||||||
rpdev = &qsdev->rpdev;
|
rpdev = &qsdev->rpdev;
|
||||||
strncpy(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
|
strscpy_pad(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
|
||||||
rpdev->src = RPMSG_ADDR_ANY;
|
rpdev->src = RPMSG_ADDR_ANY;
|
||||||
rpdev->dst = RPMSG_ADDR_ANY;
|
rpdev->dst = RPMSG_ADDR_ANY;
|
||||||
|
|
||||||
@@ -1304,7 +1304,7 @@ static void qcom_channel_state_worker(struct work_struct *work)
|
|||||||
|
|
||||||
spin_unlock_irqrestore(&edge->channels_lock, flags);
|
spin_unlock_irqrestore(&edge->channels_lock, flags);
|
||||||
|
|
||||||
strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
|
strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name));
|
||||||
chinfo.src = RPMSG_ADDR_ANY;
|
chinfo.src = RPMSG_ADDR_ANY;
|
||||||
chinfo.dst = RPMSG_ADDR_ANY;
|
chinfo.dst = RPMSG_ADDR_ANY;
|
||||||
rpmsg_unregister_device(&edge->dev, &chinfo);
|
rpmsg_unregister_device(&edge->dev, &chinfo);
|
||||||
|
@@ -3671,11 +3671,6 @@ err2:
|
|||||||
err1:
|
err1:
|
||||||
scsi_host_put(lport->host);
|
scsi_host_put(lport->host);
|
||||||
err0:
|
err0:
|
||||||
if (qedf) {
|
|
||||||
QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_DISC, "Probe done.\n");
|
|
||||||
|
|
||||||
clear_bit(QEDF_PROBING, &qedf->flags);
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -668,16 +668,17 @@ stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
|
|||||||
return 0;
|
return 0;
|
||||||
case PASSTHRU_CMD:
|
case PASSTHRU_CMD:
|
||||||
if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) {
|
if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) {
|
||||||
struct st_drvver ver;
|
const struct st_drvver ver = {
|
||||||
|
.major = ST_VER_MAJOR,
|
||||||
|
.minor = ST_VER_MINOR,
|
||||||
|
.oem = ST_OEM,
|
||||||
|
.build = ST_BUILD_VER,
|
||||||
|
.signature[0] = PASSTHRU_SIGNATURE,
|
||||||
|
.console_id = host->max_id - 1,
|
||||||
|
.host_no = hba->host->host_no,
|
||||||
|
};
|
||||||
size_t cp_len = sizeof(ver);
|
size_t cp_len = sizeof(ver);
|
||||||
|
|
||||||
ver.major = ST_VER_MAJOR;
|
|
||||||
ver.minor = ST_VER_MINOR;
|
|
||||||
ver.oem = ST_OEM;
|
|
||||||
ver.build = ST_BUILD_VER;
|
|
||||||
ver.signature[0] = PASSTHRU_SIGNATURE;
|
|
||||||
ver.console_id = host->max_id - 1;
|
|
||||||
ver.host_no = hba->host->host_no;
|
|
||||||
cp_len = scsi_sg_copy_from_buffer(cmd, &ver, cp_len);
|
cp_len = scsi_sg_copy_from_buffer(cmd, &ver, cp_len);
|
||||||
cmd->result = sizeof(ver) == cp_len ?
|
cmd->result = sizeof(ver) == cp_len ?
|
||||||
DID_OK << 16 | COMMAND_COMPLETE << 8 :
|
DID_OK << 16 | COMMAND_COMPLETE << 8 :
|
||||||
|
@@ -1268,6 +1268,11 @@ static int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
{
|
{
|
||||||
/* don't do anything here: "fault" will set up page table entries */
|
/* don't do anything here: "fault" will set up page table entries */
|
||||||
vma->vm_ops = &mon_bin_vm_ops;
|
vma->vm_ops = &mon_bin_vm_ops;
|
||||||
|
|
||||||
|
if (vma->vm_flags & VM_WRITE)
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
|
vma->vm_flags &= ~VM_MAYWRITE;
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
||||||
vma->vm_private_data = filp->private_data;
|
vma->vm_private_data = filp->private_data;
|
||||||
mon_bin_vma_open(vma);
|
mon_bin_vma_open(vma);
|
||||||
|
@@ -1320,8 +1320,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty,
|
|||||||
case 38400: div_value = ftdi_sio_b38400; break;
|
case 38400: div_value = ftdi_sio_b38400; break;
|
||||||
case 57600: div_value = ftdi_sio_b57600; break;
|
case 57600: div_value = ftdi_sio_b57600; break;
|
||||||
case 115200: div_value = ftdi_sio_b115200; break;
|
case 115200: div_value = ftdi_sio_b115200; break;
|
||||||
} /* baud */
|
default:
|
||||||
if (div_value == 0) {
|
|
||||||
dev_dbg(dev, "%s - Baudrate (%d) requested is not supported\n",
|
dev_dbg(dev, "%s - Baudrate (%d) requested is not supported\n",
|
||||||
__func__, baud);
|
__func__, baud);
|
||||||
div_value = ftdi_sio_b9600;
|
div_value = ftdi_sio_b9600;
|
||||||
|
@@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = {
|
|||||||
{DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
|
{DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
|
||||||
{DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */
|
{DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */
|
||||||
{DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */
|
{DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */
|
||||||
|
{DEVICE_SWI(0x413c, 0x81c2)}, /* Dell Wireless 5811e */
|
||||||
{DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */
|
{DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */
|
||||||
{DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */
|
{DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */
|
||||||
{DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
|
{DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
|
||||||
|
@@ -703,6 +703,12 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||||||
if (dentry->d_name.len > NAME_MAX)
|
if (dentry->d_name.len > NAME_MAX)
|
||||||
return -ENAMETOOLONG;
|
return -ENAMETOOLONG;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Do not truncate the file, since atomic_open is called before the
|
||||||
|
* permission check. The caller will do the truncation afterward.
|
||||||
|
*/
|
||||||
|
flags &= ~O_TRUNC;
|
||||||
|
|
||||||
if (flags & O_CREAT) {
|
if (flags & O_CREAT) {
|
||||||
if (ceph_quota_is_max_files_exceeded(dir))
|
if (ceph_quota_is_max_files_exceeded(dir))
|
||||||
return -EDQUOT;
|
return -EDQUOT;
|
||||||
@@ -769,9 +775,7 @@ retry:
|
|||||||
}
|
}
|
||||||
|
|
||||||
set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags);
|
set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags);
|
||||||
err = ceph_mdsc_do_request(mdsc,
|
err = ceph_mdsc_do_request(mdsc, (flags & O_CREAT) ? dir : NULL, req);
|
||||||
(flags & (O_CREAT|O_TRUNC)) ? dir : NULL,
|
|
||||||
req);
|
|
||||||
err = ceph_handle_snapdir(req, dentry, err);
|
err = ceph_handle_snapdir(req, dentry, err);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_req;
|
goto out_req;
|
||||||
|
@@ -168,8 +168,6 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
|
|||||||
inode->i_wb_frn_history = 0;
|
inode->i_wb_frn_history = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (security_inode_alloc(inode))
|
|
||||||
goto out;
|
|
||||||
spin_lock_init(&inode->i_lock);
|
spin_lock_init(&inode->i_lock);
|
||||||
lockdep_set_class(&inode->i_lock, &sb->s_type->i_lock_key);
|
lockdep_set_class(&inode->i_lock, &sb->s_type->i_lock_key);
|
||||||
|
|
||||||
@@ -202,11 +200,12 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
|
|||||||
inode->i_fsnotify_mask = 0;
|
inode->i_fsnotify_mask = 0;
|
||||||
#endif
|
#endif
|
||||||
inode->i_flctx = NULL;
|
inode->i_flctx = NULL;
|
||||||
|
|
||||||
|
if (unlikely(security_inode_alloc(inode)))
|
||||||
|
return -ENOMEM;
|
||||||
this_cpu_inc(nr_inodes);
|
this_cpu_inc(nr_inodes);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(inode_init_always);
|
EXPORT_SYMBOL(inode_init_always);
|
||||||
|
|
||||||
|
@@ -332,6 +332,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
|
|||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
struct nilfs_inode_info *ii;
|
struct nilfs_inode_info *ii;
|
||||||
struct nilfs_root *root;
|
struct nilfs_root *root;
|
||||||
|
struct buffer_head *bh;
|
||||||
int err = -ENOMEM;
|
int err = -ENOMEM;
|
||||||
ino_t ino;
|
ino_t ino;
|
||||||
|
|
||||||
@@ -347,11 +348,25 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)
|
|||||||
ii->i_state = BIT(NILFS_I_NEW);
|
ii->i_state = BIT(NILFS_I_NEW);
|
||||||
ii->i_root = root;
|
ii->i_root = root;
|
||||||
|
|
||||||
err = nilfs_ifile_create_inode(root->ifile, &ino, &ii->i_bh);
|
err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
|
||||||
if (unlikely(err))
|
if (unlikely(err))
|
||||||
goto failed_ifile_create_inode;
|
goto failed_ifile_create_inode;
|
||||||
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
|
/* reference count of i_bh inherits from nilfs_mdt_read_block() */
|
||||||
|
|
||||||
|
if (unlikely(ino < NILFS_USER_INO)) {
|
||||||
|
nilfs_warn(sb,
|
||||||
|
"inode bitmap is inconsistent for reserved inodes");
|
||||||
|
do {
|
||||||
|
brelse(bh);
|
||||||
|
err = nilfs_ifile_create_inode(root->ifile, &ino, &bh);
|
||||||
|
if (unlikely(err))
|
||||||
|
goto failed_ifile_create_inode;
|
||||||
|
} while (ino < NILFS_USER_INO);
|
||||||
|
|
||||||
|
nilfs_info(sb, "repaired inode bitmap for reserved inodes");
|
||||||
|
}
|
||||||
|
ii->i_bh = bh;
|
||||||
|
|
||||||
atomic64_inc(&root->inodes_count);
|
atomic64_inc(&root->inodes_count);
|
||||||
inode_init_owner(inode, dir, mode);
|
inode_init_owner(inode, dir, mode);
|
||||||
inode->i_ino = ino;
|
inode->i_ino = ino;
|
||||||
@@ -444,6 +459,8 @@ int nilfs_read_inode_common(struct inode *inode,
|
|||||||
inode->i_atime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec);
|
inode->i_atime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec);
|
||||||
inode->i_ctime.tv_nsec = le32_to_cpu(raw_inode->i_ctime_nsec);
|
inode->i_ctime.tv_nsec = le32_to_cpu(raw_inode->i_ctime_nsec);
|
||||||
inode->i_mtime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec);
|
inode->i_mtime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec);
|
||||||
|
if (nilfs_is_metadata_file_inode(inode) && !S_ISREG(inode->i_mode))
|
||||||
|
return -EIO; /* this inode is for metadata and corrupted */
|
||||||
if (inode->i_nlink == 0)
|
if (inode->i_nlink == 0)
|
||||||
return -ESTALE; /* this inode is deleted */
|
return -ESTALE; /* this inode is deleted */
|
||||||
|
|
||||||
|
@@ -880,9 +880,11 @@ static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci)
|
|||||||
nilfs_mdt_mark_dirty(nilfs->ns_cpfile);
|
nilfs_mdt_mark_dirty(nilfs->ns_cpfile);
|
||||||
nilfs_cpfile_put_checkpoint(
|
nilfs_cpfile_put_checkpoint(
|
||||||
nilfs->ns_cpfile, nilfs->ns_cno, bh_cp);
|
nilfs->ns_cpfile, nilfs->ns_cno, bh_cp);
|
||||||
} else
|
} else if (err == -EINVAL || err == -ENOENT) {
|
||||||
WARN_ON(err == -EINVAL || err == -ENOENT);
|
nilfs_error(sci->sc_super,
|
||||||
|
"checkpoint creation failed due to metadata corruption.");
|
||||||
|
err = -EIO;
|
||||||
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -896,7 +898,11 @@ static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci)
|
|||||||
err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, 0,
|
err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, 0,
|
||||||
&raw_cp, &bh_cp);
|
&raw_cp, &bh_cp);
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
WARN_ON(err == -EINVAL || err == -ENOENT);
|
if (err == -EINVAL || err == -ENOENT) {
|
||||||
|
nilfs_error(sci->sc_super,
|
||||||
|
"checkpoint finalization failed due to metadata corruption.");
|
||||||
|
err = -EIO;
|
||||||
|
}
|
||||||
goto failed_ibh;
|
goto failed_ibh;
|
||||||
}
|
}
|
||||||
raw_cp->cp_snapshot_list.ssl_next = 0;
|
raw_cp->cp_snapshot_list.ssl_next = 0;
|
||||||
@@ -2791,10 +2797,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root)
|
|||||||
inode_attach_wb(nilfs->ns_bdev->bd_inode, NULL);
|
inode_attach_wb(nilfs->ns_bdev->bd_inode, NULL);
|
||||||
|
|
||||||
err = nilfs_segctor_start_thread(nilfs->ns_writer);
|
err = nilfs_segctor_start_thread(nilfs->ns_writer);
|
||||||
if (err) {
|
if (unlikely(err))
|
||||||
kfree(nilfs->ns_writer);
|
nilfs_detach_log_writer(sb);
|
||||||
nilfs->ns_writer = NULL;
|
|
||||||
}
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -54,9 +54,6 @@
|
|||||||
|
|
||||||
#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||||
|
|
||||||
#define __compiletime_warning(message) __attribute__((__warning__(message)))
|
|
||||||
#define __compiletime_error(message) __attribute__((__error__(message)))
|
|
||||||
|
|
||||||
#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
|
#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
|
||||||
#define __latent_entropy __attribute__((latent_entropy))
|
#define __latent_entropy __attribute__((latent_entropy))
|
||||||
#endif
|
#endif
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
# define __GCC4_has_attribute___assume_aligned__ (__GNUC_MINOR__ >= 9)
|
# define __GCC4_has_attribute___assume_aligned__ (__GNUC_MINOR__ >= 9)
|
||||||
# define __GCC4_has_attribute___copy__ 0
|
# define __GCC4_has_attribute___copy__ 0
|
||||||
# define __GCC4_has_attribute___designated_init__ 0
|
# define __GCC4_has_attribute___designated_init__ 0
|
||||||
|
# define __GCC4_has_attribute___error__ 1
|
||||||
# define __GCC4_has_attribute___externally_visible__ 1
|
# define __GCC4_has_attribute___externally_visible__ 1
|
||||||
# define __GCC4_has_attribute___no_caller_saved_registers__ 0
|
# define __GCC4_has_attribute___no_caller_saved_registers__ 0
|
||||||
# define __GCC4_has_attribute___noclone__ 1
|
# define __GCC4_has_attribute___noclone__ 1
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
# define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8)
|
# define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8)
|
||||||
# define __GCC4_has_attribute___no_sanitize_undefined__ (__GNUC_MINOR__ >= 9)
|
# define __GCC4_has_attribute___no_sanitize_undefined__ (__GNUC_MINOR__ >= 9)
|
||||||
# define __GCC4_has_attribute___fallthrough__ 0
|
# define __GCC4_has_attribute___fallthrough__ 0
|
||||||
|
# define __GCC4_has_attribute___warning__ 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -136,6 +138,17 @@
|
|||||||
# define __designated_init
|
# define __designated_init
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optional: only supported since clang >= 14.0
|
||||||
|
*
|
||||||
|
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-error-function-attribute
|
||||||
|
*/
|
||||||
|
#if __has_attribute(__error__)
|
||||||
|
# define __compiletime_error(msg) __attribute__((__error__(msg)))
|
||||||
|
#else
|
||||||
|
# define __compiletime_error(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Optional: not supported by clang
|
* Optional: not supported by clang
|
||||||
*
|
*
|
||||||
@@ -272,6 +285,17 @@
|
|||||||
*/
|
*/
|
||||||
#define __used __attribute__((__used__))
|
#define __used __attribute__((__used__))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optional: only supported since clang >= 14.0
|
||||||
|
*
|
||||||
|
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-warning-function-attribute
|
||||||
|
*/
|
||||||
|
#if __has_attribute(__warning__)
|
||||||
|
# define __compiletime_warning(msg) __attribute__((__warning__(msg)))
|
||||||
|
#else
|
||||||
|
# define __compiletime_warning(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-weak-function-attribute
|
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-weak-function-attribute
|
||||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-weak-variable-attribute
|
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-weak-variable-attribute
|
||||||
|
@@ -289,12 +289,6 @@ struct ftrace_likely_data {
|
|||||||
#ifndef __compiletime_object_size
|
#ifndef __compiletime_object_size
|
||||||
# define __compiletime_object_size(obj) -1
|
# define __compiletime_object_size(obj) -1
|
||||||
#endif
|
#endif
|
||||||
#ifndef __compiletime_warning
|
|
||||||
# define __compiletime_warning(message)
|
|
||||||
#endif
|
|
||||||
#ifndef __compiletime_error
|
|
||||||
# define __compiletime_error(message)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __OPTIMIZE__
|
#ifdef __OPTIMIZE__
|
||||||
# define __compiletime_assert(condition, msg, prefix, suffix) \
|
# define __compiletime_assert(condition, msg, prefix, suffix) \
|
||||||
|
@@ -15,6 +15,22 @@
|
|||||||
#ifndef IEEE802154_NETDEVICE_H
|
#ifndef IEEE802154_NETDEVICE_H
|
||||||
#define IEEE802154_NETDEVICE_H
|
#define IEEE802154_NETDEVICE_H
|
||||||
|
|
||||||
|
#define IEEE802154_REQUIRED_SIZE(struct_type, member) \
|
||||||
|
(offsetof(typeof(struct_type), member) + \
|
||||||
|
sizeof(((typeof(struct_type) *)(NULL))->member))
|
||||||
|
|
||||||
|
#define IEEE802154_ADDR_OFFSET \
|
||||||
|
offsetof(typeof(struct sockaddr_ieee802154), addr)
|
||||||
|
|
||||||
|
#define IEEE802154_MIN_NAMELEN (IEEE802154_ADDR_OFFSET + \
|
||||||
|
IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, addr_type))
|
||||||
|
|
||||||
|
#define IEEE802154_NAMELEN_SHORT (IEEE802154_ADDR_OFFSET + \
|
||||||
|
IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, short_addr))
|
||||||
|
|
||||||
|
#define IEEE802154_NAMELEN_LONG (IEEE802154_ADDR_OFFSET + \
|
||||||
|
IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, hwaddr))
|
||||||
|
|
||||||
#include <net/af_ieee802154.h>
|
#include <net/af_ieee802154.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
@@ -165,6 +181,27 @@ static inline void ieee802154_devaddr_to_raw(void *raw, __le64 addr)
|
|||||||
memcpy(raw, &temp, IEEE802154_ADDR_LEN);
|
memcpy(raw, &temp, IEEE802154_ADDR_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
ieee802154_sockaddr_check_size(struct sockaddr_ieee802154 *daddr, int len)
|
||||||
|
{
|
||||||
|
struct ieee802154_addr_sa *sa;
|
||||||
|
|
||||||
|
sa = &daddr->addr;
|
||||||
|
if (len < IEEE802154_MIN_NAMELEN)
|
||||||
|
return -EINVAL;
|
||||||
|
switch (sa->addr_type) {
|
||||||
|
case IEEE802154_ADDR_SHORT:
|
||||||
|
if (len < IEEE802154_NAMELEN_SHORT)
|
||||||
|
return -EINVAL;
|
||||||
|
break;
|
||||||
|
case IEEE802154_ADDR_LONG:
|
||||||
|
if (len < IEEE802154_NAMELEN_LONG)
|
||||||
|
return -EINVAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void ieee802154_addr_from_sa(struct ieee802154_addr *a,
|
static inline void ieee802154_addr_from_sa(struct ieee802154_addr *a,
|
||||||
const struct ieee802154_addr_sa *sa)
|
const struct ieee802154_addr_sa *sa)
|
||||||
{
|
{
|
||||||
|
@@ -86,7 +86,7 @@ struct xsk_buff_pool *xp_create_and_assign_umem(struct xdp_sock *xs,
|
|||||||
struct xdp_umem *umem);
|
struct xdp_umem *umem);
|
||||||
int xp_assign_dev(struct xsk_buff_pool *pool, struct net_device *dev,
|
int xp_assign_dev(struct xsk_buff_pool *pool, struct net_device *dev,
|
||||||
u16 queue_id, u16 flags);
|
u16 queue_id, u16 flags);
|
||||||
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_umem *umem,
|
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs,
|
||||||
struct net_device *dev, u16 queue_id);
|
struct net_device *dev, u16 queue_id);
|
||||||
void xp_destroy(struct xsk_buff_pool *pool);
|
void xp_destroy(struct xsk_buff_pool *pool);
|
||||||
void xp_release(struct xdp_buff_xsk *xskb);
|
void xp_release(struct xdp_buff_xsk *xskb);
|
||||||
|
@@ -211,7 +211,7 @@ static inline unsigned int scsi_get_resid(struct scsi_cmnd *cmd)
|
|||||||
for_each_sg(scsi_sglist(cmd), sg, nseg, __i)
|
for_each_sg(scsi_sglist(cmd), sg, nseg, __i)
|
||||||
|
|
||||||
static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd,
|
static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd,
|
||||||
void *buf, int buflen)
|
const void *buf, int buflen)
|
||||||
{
|
{
|
||||||
return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd),
|
return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd),
|
||||||
buf, buflen);
|
buf, buflen);
|
||||||
|
34
mm/gup.c
34
mm/gup.c
@@ -2106,8 +2106,28 @@ static void __maybe_unused undo_dev_pagemap(int *nr, int nr_start,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_HAS_PTE_SPECIAL
|
#ifdef CONFIG_ARCH_HAS_PTE_SPECIAL
|
||||||
static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end,
|
/*
|
||||||
unsigned int flags, struct page **pages, int *nr)
|
* Fast-gup relies on pte change detection to avoid concurrent pgtable
|
||||||
|
* operations.
|
||||||
|
*
|
||||||
|
* To pin the page, fast-gup needs to do below in order:
|
||||||
|
* (1) pin the page (by prefetching pte), then (2) check pte not changed.
|
||||||
|
*
|
||||||
|
* For the rest of pgtable operations where pgtable updates can be racy
|
||||||
|
* with fast-gup, we need to do (1) clear pte, then (2) check whether page
|
||||||
|
* is pinned.
|
||||||
|
*
|
||||||
|
* Above will work for all pte-level operations, including THP split.
|
||||||
|
*
|
||||||
|
* For THP collapse, it's a bit more complicated because fast-gup may be
|
||||||
|
* walking a pgtable page that is being freed (pte is still valid but pmd
|
||||||
|
* can be cleared already). To avoid race in such condition, we need to
|
||||||
|
* also check pmd here to make sure pmd doesn't change (corresponds to
|
||||||
|
* pmdp_collapse_flush() in the THP collapse code path).
|
||||||
|
*/
|
||||||
|
static int gup_pte_range(pmd_t pmd, pmd_t *pmdp, unsigned long addr,
|
||||||
|
unsigned long end, unsigned int flags,
|
||||||
|
struct page **pages, int *nr)
|
||||||
{
|
{
|
||||||
struct dev_pagemap *pgmap = NULL;
|
struct dev_pagemap *pgmap = NULL;
|
||||||
int nr_start = *nr, ret = 0;
|
int nr_start = *nr, ret = 0;
|
||||||
@@ -2147,7 +2167,8 @@ static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end,
|
|||||||
if (!head)
|
if (!head)
|
||||||
goto pte_unmap;
|
goto pte_unmap;
|
||||||
|
|
||||||
if (unlikely(pte_val(pte) != pte_val(*ptep))) {
|
if (unlikely(pmd_val(pmd) != pmd_val(*pmdp)) ||
|
||||||
|
unlikely(pte_val(pte) != pte_val(*ptep))) {
|
||||||
put_compound_head(head, 1, flags);
|
put_compound_head(head, 1, flags);
|
||||||
goto pte_unmap;
|
goto pte_unmap;
|
||||||
}
|
}
|
||||||
@@ -2192,8 +2213,9 @@ pte_unmap:
|
|||||||
* get_user_pages_fast_only implementation that can pin pages. Thus it's still
|
* get_user_pages_fast_only implementation that can pin pages. Thus it's still
|
||||||
* useful to have gup_huge_pmd even if we can't operate on ptes.
|
* useful to have gup_huge_pmd even if we can't operate on ptes.
|
||||||
*/
|
*/
|
||||||
static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end,
|
static int gup_pte_range(pmd_t pmd, pmd_t *pmdp, unsigned long addr,
|
||||||
unsigned int flags, struct page **pages, int *nr)
|
unsigned long end, unsigned int flags,
|
||||||
|
struct page **pages, int *nr)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -2500,7 +2522,7 @@ static int gup_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr, unsigned lo
|
|||||||
if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr,
|
if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr,
|
||||||
PMD_SHIFT, next, flags, pages, nr))
|
PMD_SHIFT, next, flags, pages, nr))
|
||||||
return 0;
|
return 0;
|
||||||
} else if (!gup_pte_range(pmd, addr, next, flags, pages, nr))
|
} else if (!gup_pte_range(pmd, pmdp, addr, next, flags, pages, nr))
|
||||||
return 0;
|
return 0;
|
||||||
} while (pmdp++, addr = next, addr != end);
|
} while (pmdp++, addr = next, addr != end);
|
||||||
|
|
||||||
|
@@ -1147,10 +1147,12 @@ static void collapse_huge_page(struct mm_struct *mm,
|
|||||||
|
|
||||||
pmd_ptl = pmd_lock(mm, pmd); /* probably unnecessary */
|
pmd_ptl = pmd_lock(mm, pmd); /* probably unnecessary */
|
||||||
/*
|
/*
|
||||||
* After this gup_fast can't run anymore. This also removes
|
* This removes any huge TLB entry from the CPU so we won't allow
|
||||||
* any huge TLB entry from the CPU so we won't allow
|
* huge and small TLB entries for the same virtual address to
|
||||||
* huge and small TLB entries for the same virtual address
|
* avoid the risk of CPU bugs in that area.
|
||||||
* to avoid the risk of CPU bugs in that area.
|
*
|
||||||
|
* Parallel fast GUP is fine since fast GUP will back off when
|
||||||
|
* it detects PMD is changed.
|
||||||
*/
|
*/
|
||||||
_pmd = pmdp_collapse_flush(vma, address, pmd);
|
_pmd = pmdp_collapse_flush(vma, address, pmd);
|
||||||
spin_unlock(pmd_ptl);
|
spin_unlock(pmd_ptl);
|
||||||
|
@@ -201,8 +201,9 @@ static int raw_bind(struct sock *sk, struct sockaddr *_uaddr, int len)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
struct net_device *dev = NULL;
|
struct net_device *dev = NULL;
|
||||||
|
|
||||||
if (len < sizeof(*uaddr))
|
err = ieee802154_sockaddr_check_size(uaddr, len);
|
||||||
return -EINVAL;
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
uaddr = (struct sockaddr_ieee802154 *)_uaddr;
|
uaddr = (struct sockaddr_ieee802154 *)_uaddr;
|
||||||
if (uaddr->family != AF_IEEE802154)
|
if (uaddr->family != AF_IEEE802154)
|
||||||
@@ -494,7 +495,8 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len)
|
|||||||
|
|
||||||
ro->bound = 0;
|
ro->bound = 0;
|
||||||
|
|
||||||
if (len < sizeof(*addr))
|
err = ieee802154_sockaddr_check_size(addr, len);
|
||||||
|
if (err < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (addr->family != AF_IEEE802154)
|
if (addr->family != AF_IEEE802154)
|
||||||
@@ -565,8 +567,9 @@ static int dgram_connect(struct sock *sk, struct sockaddr *uaddr,
|
|||||||
struct dgram_sock *ro = dgram_sk(sk);
|
struct dgram_sock *ro = dgram_sk(sk);
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
if (len < sizeof(*addr))
|
err = ieee802154_sockaddr_check_size(addr, len);
|
||||||
return -EINVAL;
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (addr->family != AF_IEEE802154)
|
if (addr->family != AF_IEEE802154)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -605,6 +608,7 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
|
|||||||
struct ieee802154_mac_cb *cb;
|
struct ieee802154_mac_cb *cb;
|
||||||
struct dgram_sock *ro = dgram_sk(sk);
|
struct dgram_sock *ro = dgram_sk(sk);
|
||||||
struct ieee802154_addr dst_addr;
|
struct ieee802154_addr dst_addr;
|
||||||
|
DECLARE_SOCKADDR(struct sockaddr_ieee802154*, daddr, msg->msg_name);
|
||||||
int hlen, tlen;
|
int hlen, tlen;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -613,10 +617,20 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ro->connected && !msg->msg_name)
|
if (msg->msg_name) {
|
||||||
return -EDESTADDRREQ;
|
if (ro->connected)
|
||||||
else if (ro->connected && msg->msg_name)
|
return -EISCONN;
|
||||||
return -EISCONN;
|
if (msg->msg_namelen < IEEE802154_MIN_NAMELEN)
|
||||||
|
return -EINVAL;
|
||||||
|
err = ieee802154_sockaddr_check_size(daddr, msg->msg_namelen);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
ieee802154_addr_from_sa(&dst_addr, &daddr->addr);
|
||||||
|
} else {
|
||||||
|
if (!ro->connected)
|
||||||
|
return -EDESTADDRREQ;
|
||||||
|
dst_addr = ro->dst_addr;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ro->bound)
|
if (!ro->bound)
|
||||||
dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154);
|
dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154);
|
||||||
@@ -652,16 +666,6 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
|
|||||||
cb = mac_cb_init(skb);
|
cb = mac_cb_init(skb);
|
||||||
cb->type = IEEE802154_FC_TYPE_DATA;
|
cb->type = IEEE802154_FC_TYPE_DATA;
|
||||||
cb->ackreq = ro->want_ack;
|
cb->ackreq = ro->want_ack;
|
||||||
|
|
||||||
if (msg->msg_name) {
|
|
||||||
DECLARE_SOCKADDR(struct sockaddr_ieee802154*,
|
|
||||||
daddr, msg->msg_name);
|
|
||||||
|
|
||||||
ieee802154_addr_from_sa(&dst_addr, &daddr->addr);
|
|
||||||
} else {
|
|
||||||
dst_addr = ro->dst_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
cb->secen = ro->secen;
|
cb->secen = ro->secen;
|
||||||
cb->secen_override = ro->secen_override;
|
cb->secen_override = ro->secen_override;
|
||||||
cb->seclevel = ro->seclevel;
|
cb->seclevel = ro->seclevel;
|
||||||
|
@@ -1975,10 +1975,11 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
|
|
||||||
if (mmie_keyidx < NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS ||
|
if (mmie_keyidx < NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS ||
|
||||||
mmie_keyidx >= NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS +
|
mmie_keyidx >= NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS +
|
||||||
NUM_DEFAULT_BEACON_KEYS) {
|
NUM_DEFAULT_BEACON_KEYS) {
|
||||||
cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
|
if (rx->sdata->dev)
|
||||||
skb->data,
|
cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
|
||||||
skb->len);
|
skb->data,
|
||||||
|
skb->len);
|
||||||
return RX_DROP_MONITOR; /* unexpected BIP keyidx */
|
return RX_DROP_MONITOR; /* unexpected BIP keyidx */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2126,7 +2127,8 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
/* either the frame has been decrypted or will be dropped */
|
/* either the frame has been decrypted or will be dropped */
|
||||||
status->flag |= RX_FLAG_DECRYPTED;
|
status->flag |= RX_FLAG_DECRYPTED;
|
||||||
|
|
||||||
if (unlikely(ieee80211_is_beacon(fc) && result == RX_DROP_UNUSABLE))
|
if (unlikely(ieee80211_is_beacon(fc) && result == RX_DROP_UNUSABLE &&
|
||||||
|
rx->sdata->dev))
|
||||||
cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
|
cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
|
||||||
skb->data, skb->len);
|
skb->data, skb->len);
|
||||||
|
|
||||||
|
@@ -1409,6 +1409,8 @@ static size_t ieee802_11_find_bssid_profile(const u8 *start, size_t len,
|
|||||||
for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, start, len) {
|
for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, start, len) {
|
||||||
if (elem->datalen < 2)
|
if (elem->datalen < 2)
|
||||||
continue;
|
continue;
|
||||||
|
if (elem->data[0] < 1 || elem->data[0] > 8)
|
||||||
|
continue;
|
||||||
|
|
||||||
for_each_element(sub, elem->data + 1, elem->datalen - 1) {
|
for_each_element(sub, elem->data + 1, elem->datalen - 1) {
|
||||||
u8 new_bssid[ETH_ALEN];
|
u8 new_bssid[ETH_ALEN];
|
||||||
|
@@ -143,18 +143,12 @@ static inline void bss_ref_get(struct cfg80211_registered_device *rdev,
|
|||||||
lockdep_assert_held(&rdev->bss_lock);
|
lockdep_assert_held(&rdev->bss_lock);
|
||||||
|
|
||||||
bss->refcount++;
|
bss->refcount++;
|
||||||
if (bss->pub.hidden_beacon_bss) {
|
|
||||||
bss = container_of(bss->pub.hidden_beacon_bss,
|
if (bss->pub.hidden_beacon_bss)
|
||||||
struct cfg80211_internal_bss,
|
bss_from_pub(bss->pub.hidden_beacon_bss)->refcount++;
|
||||||
pub);
|
|
||||||
bss->refcount++;
|
if (bss->pub.transmitted_bss)
|
||||||
}
|
bss_from_pub(bss->pub.transmitted_bss)->refcount++;
|
||||||
if (bss->pub.transmitted_bss) {
|
|
||||||
bss = container_of(bss->pub.transmitted_bss,
|
|
||||||
struct cfg80211_internal_bss,
|
|
||||||
pub);
|
|
||||||
bss->refcount++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void bss_ref_put(struct cfg80211_registered_device *rdev,
|
static inline void bss_ref_put(struct cfg80211_registered_device *rdev,
|
||||||
@@ -304,7 +298,8 @@ static size_t cfg80211_gen_new_ie(const u8 *ie, size_t ielen,
|
|||||||
tmp_old = cfg80211_find_ie(WLAN_EID_SSID, ie, ielen);
|
tmp_old = cfg80211_find_ie(WLAN_EID_SSID, ie, ielen);
|
||||||
tmp_old = (tmp_old) ? tmp_old + tmp_old[1] + 2 : ie;
|
tmp_old = (tmp_old) ? tmp_old + tmp_old[1] + 2 : ie;
|
||||||
|
|
||||||
while (tmp_old + tmp_old[1] + 2 - ie <= ielen) {
|
while (tmp_old + 2 - ie <= ielen &&
|
||||||
|
tmp_old + tmp_old[1] + 2 - ie <= ielen) {
|
||||||
if (tmp_old[0] == 0) {
|
if (tmp_old[0] == 0) {
|
||||||
tmp_old++;
|
tmp_old++;
|
||||||
continue;
|
continue;
|
||||||
@@ -364,7 +359,8 @@ static size_t cfg80211_gen_new_ie(const u8 *ie, size_t ielen,
|
|||||||
* copied to new ie, skip ssid, capability, bssid-index ie
|
* copied to new ie, skip ssid, capability, bssid-index ie
|
||||||
*/
|
*/
|
||||||
tmp_new = sub_copy;
|
tmp_new = sub_copy;
|
||||||
while (tmp_new + tmp_new[1] + 2 - sub_copy <= subie_len) {
|
while (tmp_new + 2 - sub_copy <= subie_len &&
|
||||||
|
tmp_new + tmp_new[1] + 2 - sub_copy <= subie_len) {
|
||||||
if (!(tmp_new[0] == WLAN_EID_NON_TX_BSSID_CAP ||
|
if (!(tmp_new[0] == WLAN_EID_NON_TX_BSSID_CAP ||
|
||||||
tmp_new[0] == WLAN_EID_SSID)) {
|
tmp_new[0] == WLAN_EID_SSID)) {
|
||||||
memcpy(pos, tmp_new, tmp_new[1] + 2);
|
memcpy(pos, tmp_new, tmp_new[1] + 2);
|
||||||
@@ -429,6 +425,15 @@ cfg80211_add_nontrans_list(struct cfg80211_bss *trans_bss,
|
|||||||
|
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a bit weird - it's not on the list, but already on another
|
||||||
|
* one! The only way that could happen is if there's some BSSID/SSID
|
||||||
|
* shared by multiple APs in their multi-BSSID profiles, potentially
|
||||||
|
* with hidden SSID mixed in ... ignore it.
|
||||||
|
*/
|
||||||
|
if (!list_empty(&nontrans_bss->nontrans_list))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
/* add to the list */
|
/* add to the list */
|
||||||
list_add_tail(&nontrans_bss->nontrans_list, &trans_bss->nontrans_list);
|
list_add_tail(&nontrans_bss->nontrans_list, &trans_bss->nontrans_list);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1597,6 +1602,23 @@ struct cfg80211_non_tx_bss {
|
|||||||
u8 bssid_index;
|
u8 bssid_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void cfg80211_update_hidden_bsses(struct cfg80211_internal_bss *known,
|
||||||
|
const struct cfg80211_bss_ies *new_ies,
|
||||||
|
const struct cfg80211_bss_ies *old_ies)
|
||||||
|
{
|
||||||
|
struct cfg80211_internal_bss *bss;
|
||||||
|
|
||||||
|
/* Assign beacon IEs to all sub entries */
|
||||||
|
list_for_each_entry(bss, &known->hidden_list, hidden_list) {
|
||||||
|
const struct cfg80211_bss_ies *ies;
|
||||||
|
|
||||||
|
ies = rcu_access_pointer(bss->pub.beacon_ies);
|
||||||
|
WARN_ON(ies != old_ies);
|
||||||
|
|
||||||
|
rcu_assign_pointer(bss->pub.beacon_ies, new_ies);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
|
cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
|
||||||
struct cfg80211_internal_bss *known,
|
struct cfg80211_internal_bss *known,
|
||||||
@@ -1620,7 +1642,6 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
|
|||||||
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
||||||
} else if (rcu_access_pointer(new->pub.beacon_ies)) {
|
} else if (rcu_access_pointer(new->pub.beacon_ies)) {
|
||||||
const struct cfg80211_bss_ies *old;
|
const struct cfg80211_bss_ies *old;
|
||||||
struct cfg80211_internal_bss *bss;
|
|
||||||
|
|
||||||
if (known->pub.hidden_beacon_bss &&
|
if (known->pub.hidden_beacon_bss &&
|
||||||
!list_empty(&known->hidden_list)) {
|
!list_empty(&known->hidden_list)) {
|
||||||
@@ -1648,16 +1669,7 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
|
|||||||
if (old == rcu_access_pointer(known->pub.ies))
|
if (old == rcu_access_pointer(known->pub.ies))
|
||||||
rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies);
|
rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies);
|
||||||
|
|
||||||
/* Assign beacon IEs to all sub entries */
|
cfg80211_update_hidden_bsses(known, new->pub.beacon_ies, old);
|
||||||
list_for_each_entry(bss, &known->hidden_list, hidden_list) {
|
|
||||||
const struct cfg80211_bss_ies *ies;
|
|
||||||
|
|
||||||
ies = rcu_access_pointer(bss->pub.beacon_ies);
|
|
||||||
WARN_ON(ies != old);
|
|
||||||
|
|
||||||
rcu_assign_pointer(bss->pub.beacon_ies,
|
|
||||||
new->pub.beacon_ies);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (old)
|
if (old)
|
||||||
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
||||||
@@ -1734,6 +1746,8 @@ cfg80211_bss_update(struct cfg80211_registered_device *rdev,
|
|||||||
new->refcount = 1;
|
new->refcount = 1;
|
||||||
INIT_LIST_HEAD(&new->hidden_list);
|
INIT_LIST_HEAD(&new->hidden_list);
|
||||||
INIT_LIST_HEAD(&new->pub.nontrans_list);
|
INIT_LIST_HEAD(&new->pub.nontrans_list);
|
||||||
|
/* we'll set this later if it was non-NULL */
|
||||||
|
new->pub.transmitted_bss = NULL;
|
||||||
|
|
||||||
if (rcu_access_pointer(tmp->pub.proberesp_ies)) {
|
if (rcu_access_pointer(tmp->pub.proberesp_ies)) {
|
||||||
hidden = rb_find_bss(rdev, tmp, BSS_CMP_HIDE_ZLEN);
|
hidden = rb_find_bss(rdev, tmp, BSS_CMP_HIDE_ZLEN);
|
||||||
@@ -1971,10 +1985,15 @@ cfg80211_inform_single_bss_data(struct wiphy *wiphy,
|
|||||||
spin_lock_bh(&rdev->bss_lock);
|
spin_lock_bh(&rdev->bss_lock);
|
||||||
if (cfg80211_add_nontrans_list(non_tx_data->tx_bss,
|
if (cfg80211_add_nontrans_list(non_tx_data->tx_bss,
|
||||||
&res->pub)) {
|
&res->pub)) {
|
||||||
if (__cfg80211_unlink_bss(rdev, res))
|
if (__cfg80211_unlink_bss(rdev, res)) {
|
||||||
rdev->bss_generation++;
|
rdev->bss_generation++;
|
||||||
|
res = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_bh(&rdev->bss_lock);
|
spin_unlock_bh(&rdev->bss_lock);
|
||||||
|
|
||||||
|
if (!res)
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
trace_cfg80211_return_bss(&res->pub);
|
trace_cfg80211_return_bss(&res->pub);
|
||||||
@@ -2093,6 +2112,8 @@ static void cfg80211_parse_mbssid_data(struct wiphy *wiphy,
|
|||||||
for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, ie, ielen) {
|
for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, ie, ielen) {
|
||||||
if (elem->datalen < 4)
|
if (elem->datalen < 4)
|
||||||
continue;
|
continue;
|
||||||
|
if (elem->data[0] < 1 || (int)elem->data[0] > 8)
|
||||||
|
continue;
|
||||||
for_each_element(sub, elem->data + 1, elem->datalen - 1) {
|
for_each_element(sub, elem->data + 1, elem->datalen - 1) {
|
||||||
u8 profile_len;
|
u8 profile_len;
|
||||||
|
|
||||||
@@ -2228,7 +2249,7 @@ cfg80211_update_notlisted_nontrans(struct wiphy *wiphy,
|
|||||||
size_t new_ie_len;
|
size_t new_ie_len;
|
||||||
struct cfg80211_bss_ies *new_ies;
|
struct cfg80211_bss_ies *new_ies;
|
||||||
const struct cfg80211_bss_ies *old;
|
const struct cfg80211_bss_ies *old;
|
||||||
u8 cpy_len;
|
size_t cpy_len;
|
||||||
|
|
||||||
lockdep_assert_held(&wiphy_to_rdev(wiphy)->bss_lock);
|
lockdep_assert_held(&wiphy_to_rdev(wiphy)->bss_lock);
|
||||||
|
|
||||||
@@ -2295,6 +2316,8 @@ cfg80211_update_notlisted_nontrans(struct wiphy *wiphy,
|
|||||||
} else {
|
} else {
|
||||||
old = rcu_access_pointer(nontrans_bss->beacon_ies);
|
old = rcu_access_pointer(nontrans_bss->beacon_ies);
|
||||||
rcu_assign_pointer(nontrans_bss->beacon_ies, new_ies);
|
rcu_assign_pointer(nontrans_bss->beacon_ies, new_ies);
|
||||||
|
cfg80211_update_hidden_bsses(bss_from_pub(nontrans_bss),
|
||||||
|
new_ies, old);
|
||||||
rcu_assign_pointer(nontrans_bss->ies, new_ies);
|
rcu_assign_pointer(nontrans_bss->ies, new_ies);
|
||||||
if (old)
|
if (old)
|
||||||
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
|
||||||
|
@@ -742,8 +742,8 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
|
|||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = xp_assign_dev_shared(xs->pool, umem_xs->umem,
|
err = xp_assign_dev_shared(xs->pool, umem_xs, dev,
|
||||||
dev, qid);
|
qid);
|
||||||
if (err) {
|
if (err) {
|
||||||
xp_destroy(xs->pool);
|
xp_destroy(xs->pool);
|
||||||
xs->pool = NULL;
|
xs->pool = NULL;
|
||||||
|
@@ -198,17 +198,18 @@ int xp_assign_dev(struct xsk_buff_pool *pool, struct net_device *dev,
|
|||||||
return __xp_assign_dev(pool, dev, queue_id, flags);
|
return __xp_assign_dev(pool, dev, queue_id, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_umem *umem,
|
int xp_assign_dev_shared(struct xsk_buff_pool *pool, struct xdp_sock *umem_xs,
|
||||||
struct net_device *dev, u16 queue_id)
|
struct net_device *dev, u16 queue_id)
|
||||||
{
|
{
|
||||||
u16 flags;
|
u16 flags;
|
||||||
|
struct xdp_umem *umem = umem_xs->umem;
|
||||||
|
|
||||||
/* One fill and completion ring required for each queue id. */
|
/* One fill and completion ring required for each queue id. */
|
||||||
if (!pool->fq || !pool->cq)
|
if (!pool->fq || !pool->cq)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
flags = umem->zc ? XDP_ZEROCOPY : XDP_COPY;
|
flags = umem->zc ? XDP_ZEROCOPY : XDP_COPY;
|
||||||
if (pool->uses_need_wakeup)
|
if (umem_xs->pool->uses_need_wakeup)
|
||||||
flags |= XDP_USE_NEED_WAKEUP;
|
flags |= XDP_USE_NEED_WAKEUP;
|
||||||
|
|
||||||
return __xp_assign_dev(pool, dev, queue_id, flags);
|
return __xp_assign_dev(pool, dev, queue_id, flags);
|
||||||
|
@@ -52,6 +52,7 @@ KBUILD_CFLAGS += -Wno-format-zero-length
|
|||||||
KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
|
KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
|
||||||
KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare
|
KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access)
|
KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, cast-function-type-strict)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -30,7 +30,7 @@ static const struct dmi_system_id uefi_skip_cert[] = {
|
|||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,1") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,1") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,2") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,2") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir9,1") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir9,1") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacMini8,1") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "Macmini8,1") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacPro7,1") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacPro7,1") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,1") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,1") },
|
||||||
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,2") },
|
{ UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,2") },
|
||||||
|
@@ -1662,13 +1662,14 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file)
|
|||||||
runtime = substream->runtime;
|
runtime = substream->runtime;
|
||||||
if (atomic_read(&substream->mmap_count))
|
if (atomic_read(&substream->mmap_count))
|
||||||
goto __direct;
|
goto __direct;
|
||||||
if ((err = snd_pcm_oss_make_ready(substream)) < 0)
|
|
||||||
return err;
|
|
||||||
atomic_inc(&runtime->oss.rw_ref);
|
atomic_inc(&runtime->oss.rw_ref);
|
||||||
if (mutex_lock_interruptible(&runtime->oss.params_lock)) {
|
if (mutex_lock_interruptible(&runtime->oss.params_lock)) {
|
||||||
atomic_dec(&runtime->oss.rw_ref);
|
atomic_dec(&runtime->oss.rw_ref);
|
||||||
return -ERESTARTSYS;
|
return -ERESTARTSYS;
|
||||||
}
|
}
|
||||||
|
err = snd_pcm_oss_make_ready_locked(substream);
|
||||||
|
if (err < 0)
|
||||||
|
goto unlock;
|
||||||
format = snd_pcm_oss_format_from(runtime->oss.format);
|
format = snd_pcm_oss_format_from(runtime->oss.format);
|
||||||
width = snd_pcm_format_physical_width(format);
|
width = snd_pcm_format_physical_width(format);
|
||||||
if (runtime->oss.buffer_used > 0) {
|
if (runtime->oss.buffer_used > 0) {
|
||||||
|
@@ -2588,7 +2588,8 @@ static const struct pci_device_id azx_ids[] = {
|
|||||||
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
|
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
|
||||||
/* Poulsbo */
|
/* Poulsbo */
|
||||||
{ PCI_DEVICE(0x8086, 0x811b),
|
{ PCI_DEVICE(0x8086, 0x811b),
|
||||||
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },
|
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE |
|
||||||
|
AZX_DCAPS_POSFIX_LPIB },
|
||||||
/* Oaktrail */
|
/* Oaktrail */
|
||||||
{ PCI_DEVICE(0x8086, 0x080a),
|
{ PCI_DEVICE(0x8086, 0x080a),
|
||||||
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },
|
.driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },
|
||||||
|
@@ -1269,6 +1269,7 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo,
|
|||||||
set_bit(pcm_idx, &spec->pcm_in_use);
|
set_bit(pcm_idx, &spec->pcm_in_use);
|
||||||
per_pin = get_pin(spec, pin_idx);
|
per_pin = get_pin(spec, pin_idx);
|
||||||
per_pin->cvt_nid = per_cvt->cvt_nid;
|
per_pin->cvt_nid = per_cvt->cvt_nid;
|
||||||
|
per_pin->silent_stream = false;
|
||||||
hinfo->nid = per_cvt->cvt_nid;
|
hinfo->nid = per_cvt->cvt_nid;
|
||||||
|
|
||||||
/* flip stripe flag for the assigned stream if supported */
|
/* flip stripe flag for the assigned stream if supported */
|
||||||
|
@@ -3,8 +3,9 @@
|
|||||||
//
|
//
|
||||||
#ifndef HAVE_GET_CURRENT_DIR_NAME
|
#ifndef HAVE_GET_CURRENT_DIR_NAME
|
||||||
#include "get_current_dir_name.h"
|
#include "get_current_dir_name.h"
|
||||||
|
#include <limits.h>
|
||||||
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* Android's 'bionic' library, for one, doesn't have this */
|
/* Android's 'bionic' library, for one, doesn't have this */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user