mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-07 01:53:34 +08:00
kernel: bump to 5.4.236
Manually rebased: - layerscape/patches-5.4/801-audio-0037-MLK-16224-4-ASoC-fsl_sai-support-multi-fifo-and-DSD.patch - ramips/patches-5.4/0031-uvc-add-iPassion-iP2970-support.patch Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
parent
cd7ba71c76
commit
8e7c12b684
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.4 = .231
|
||||
LINUX_KERNEL_HASH-5.4.231 = 8dd0ea7f1db4c1e89d485255798e3c3dfb9be63c0f2af369912a1a37b75f36a8
|
||||
LINUX_VERSION-5.4 = .236
|
||||
LINUX_KERNEL_HASH-5.4.236 = ccc892faa96f2580bde683f1063c271dc196b5a462e9980912e4c188b7154951
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
for (i = 0; i < PPC4XX_NUM_SD; i++) {
|
||||
dev->sdr[i].ptr = dev->scatter_buffer_pa +
|
||||
PPC4XX_SD_BUFFER_SIZE * i;
|
||||
@@ -1439,16 +1440,15 @@ static int crypto4xx_probe(struct platfo
|
||||
@@ -1437,16 +1438,15 @@ static int crypto4xx_probe(struct platfo
|
||||
spin_lock_init(&core_dev->lock);
|
||||
INIT_LIST_HEAD(&core_dev->dev->alg_list);
|
||||
ratelimit_default_init(&core_dev->dev->aead_ratelimit);
|
||||
@ -89,7 +89,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
goto err_build_sdr;
|
||||
|
||||
/* Init tasklet for bottom half processing */
|
||||
@@ -1493,7 +1493,6 @@ err_iomap:
|
||||
@@ -1491,7 +1491,6 @@ err_iomap:
|
||||
err_build_sdr:
|
||||
crypto4xx_destroy_sdr(core_dev->dev);
|
||||
crypto4xx_destroy_gdr(core_dev->dev);
|
||||
|
@ -214,7 +214,7 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/icmpv6.h>
|
||||
@@ -866,10 +867,10 @@ static void tcp_v6_send_response(const s
|
||||
@@ -867,10 +868,10 @@ static void tcp_v6_send_response(const s
|
||||
topt = (__be32 *)(t1 + 1);
|
||||
|
||||
if (tsecr) {
|
||||
|
@ -1040,7 +1040,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5385,7 +5385,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5384,7 +5384,7 @@ static void port_event(struct usb_hub *h
|
||||
port_dev->over_current_count++;
|
||||
port_over_current_notify(port_dev);
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -2157,7 +2157,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
@@ -2165,7 +2165,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Disable rate control for now */
|
||||
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
|
||||
TDMA_FLOW_PERIOD);
|
||||
@@ -3583,9 +3583,12 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -3591,9 +3591,12 @@ static int bcmgenet_probe(struct platfor
|
||||
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
|
||||
|
||||
/* Set default coalescing parameters */
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
#define USB_VENDOR_ID_BELKIN 0x050d
|
||||
#define USB_DEVICE_ID_FLIP_KVM 0x3201
|
||||
|
||||
@@ -1270,6 +1273,9 @@
|
||||
@@ -1271,6 +1274,9 @@
|
||||
#define USB_VENDOR_ID_XAT 0x2505
|
||||
#define USB_DEVICE_ID_XAT_CSR 0x0220
|
||||
|
||||
|
@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
|
||||
{
|
||||
/* MIPS chips strapped for BE will automagically configure the
|
||||
@@ -2003,6 +2007,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
@@ -2011,6 +2015,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
bcmgenet_rbuf_ctrl_set(priv, 0);
|
||||
udelay(10);
|
||||
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1274,6 +1274,9 @@ ifneq ($(dtstree),)
|
||||
@@ -1281,6 +1281,9 @@ ifneq ($(dtstree),)
|
||||
%.dtb: include/config/kernel.release scripts_dtc
|
||||
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -3482,7 +3482,7 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -3490,7 +3490,7 @@ static int bcmgenet_probe(struct platfor
|
||||
priv = netdev_priv(dev);
|
||||
priv->irq0 = platform_get_irq(pdev, 0);
|
||||
priv->irq1 = platform_get_irq(pdev, 1);
|
||||
|
@ -382,7 +382,7 @@ Cc: linux-rockchip@lists.infradead.org
|
||||
|
||||
--- a/drivers/pci/pci.h
|
||||
+++ b/drivers/pci/pci.h
|
||||
@@ -643,11 +643,15 @@ static inline void pci_release_bus_of_no
|
||||
@@ -626,11 +626,15 @@ static inline void pci_release_bus_of_no
|
||||
#if defined(CONFIG_OF_ADDRESS)
|
||||
int devm_of_pci_get_host_bridge_resources(struct device *dev,
|
||||
unsigned char busno, unsigned char bus_max,
|
||||
|
@ -271,7 +271,7 @@ Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||||
u64 dma_direct_get_required_mask(struct device *dev);
|
||||
--- a/include/linux/dma-mapping.h
|
||||
+++ b/include/linux/dma-mapping.h
|
||||
@@ -697,7 +697,7 @@ static inline int dma_coerce_mask_and_co
|
||||
@@ -777,7 +777,7 @@ static inline int dma_coerce_mask_and_co
|
||||
*/
|
||||
static inline bool dma_addressing_limited(struct device *dev)
|
||||
{
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Nataliya Korovkina <malus.brandywine@gmail.com>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1274,7 +1274,7 @@ ifneq ($(dtstree),)
|
||||
@@ -1281,7 +1281,7 @@ ifneq ($(dtstree),)
|
||||
%.dtb: include/config/kernel.release scripts_dtc
|
||||
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/drm_fourcc.c
|
||||
+++ b/drivers/gpu/drm/drm_fourcc.c
|
||||
@@ -274,6 +274,9 @@ const struct drm_format_info *__drm_form
|
||||
@@ -278,6 +278,9 @@ const struct drm_format_info *__drm_form
|
||||
{ .format = DRM_FORMAT_YUV420_10BIT, .depth = 0,
|
||||
.num_planes = 1, .cpp = { 0, 0, 0 }, .hsub = 2, .vsub = 2,
|
||||
.is_yuv = true },
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -2798,7 +2798,7 @@ static void bcmgenet_set_hw_addr(struct
|
||||
@@ -2806,7 +2806,7 @@ static void bcmgenet_set_hw_addr(struct
|
||||
}
|
||||
|
||||
/* Returns a reusable dma control register value */
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
{
|
||||
unsigned int i;
|
||||
u32 reg;
|
||||
@@ -2823,6 +2823,14 @@ static u32 bcmgenet_dma_disable(struct b
|
||||
@@ -2831,6 +2831,14 @@ static u32 bcmgenet_dma_disable(struct b
|
||||
udelay(10);
|
||||
bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
|
||||
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
return dma_ctrl;
|
||||
}
|
||||
|
||||
@@ -2918,8 +2926,8 @@ static int bcmgenet_open(struct net_devi
|
||||
@@ -2926,8 +2934,8 @@ static int bcmgenet_open(struct net_devi
|
||||
|
||||
bcmgenet_set_hw_addr(priv, dev->dev_addr);
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
/* Reinitialize TDMA and RDMA and SW housekeeping */
|
||||
ret = bcmgenet_init_dma(priv);
|
||||
@@ -3674,7 +3682,7 @@ static int bcmgenet_resume(struct device
|
||||
@@ -3682,7 +3690,7 @@ static int bcmgenet_resume(struct device
|
||||
bcmgenet_power_up(priv, GENET_POWER_WOL_MAGIC);
|
||||
|
||||
/* Disable RX/TX DMA and flush TX queues */
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -493,7 +493,7 @@ KBUILD_LDFLAGS :=
|
||||
@@ -500,7 +500,7 @@ KBUILD_LDFLAGS :=
|
||||
GCC_PLUGINS_CFLAGS :=
|
||||
CLANG_FLAGS :=
|
||||
|
||||
|
@ -71,7 +71,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
#endif
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -3980,8 +3980,8 @@ static int memcg_stat_show(struct seq_fi
|
||||
@@ -3984,8 +3984,8 @@ static int memcg_stat_show(struct seq_fi
|
||||
pg_data_t *pgdat;
|
||||
struct mem_cgroup_per_node *mz;
|
||||
struct zone_reclaim_stat *rstat;
|
||||
|
@ -570,7 +570,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
#if defined(CONFIG_NUMA_BALANCING) && !defined(LAST_CPUPID_NOT_IN_PAGE_FLAGS)
|
||||
--- a/mm/swapfile.c
|
||||
+++ b/mm/swapfile.c
|
||||
@@ -2697,6 +2697,8 @@ SYSCALL_DEFINE1(swapoff, const char __us
|
||||
@@ -2702,6 +2702,8 @@ SYSCALL_DEFINE1(swapoff, const char __us
|
||||
err = 0;
|
||||
atomic_inc(&proc_poll_event);
|
||||
wake_up_interruptible(&proc_poll_wait);
|
||||
@ -579,7 +579,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
|
||||
out_dput:
|
||||
filp_close(victim, NULL);
|
||||
@@ -3323,6 +3325,8 @@ SYSCALL_DEFINE2(swapon, const char __use
|
||||
@@ -3328,6 +3330,8 @@ SYSCALL_DEFINE2(swapon, const char __use
|
||||
mutex_unlock(&swapon_mutex);
|
||||
atomic_inc(&proc_poll_event);
|
||||
wake_up_interruptible(&proc_poll_wait);
|
||||
|
@ -210,7 +210,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
unsigned long start, unsigned long end);
|
||||
--- a/kernel/exit.c
|
||||
+++ b/kernel/exit.c
|
||||
@@ -423,6 +423,7 @@ assign_new_owner:
|
||||
@@ -470,6 +470,7 @@ assign_new_owner:
|
||||
goto retry;
|
||||
}
|
||||
WRITE_ONCE(mm->owner, c);
|
||||
@ -268,7 +268,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
|
||||
if (!prev->mm) { // from kernel
|
||||
/* will mmdrop() in finish_task_switch(). */
|
||||
@@ -6284,6 +6285,7 @@ void idle_task_exit(void)
|
||||
@@ -6283,6 +6284,7 @@ void idle_task_exit(void)
|
||||
|
||||
if (mm != &init_mm) {
|
||||
switch_mm(mm, &init_mm, current);
|
||||
@ -278,7 +278,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -5098,6 +5098,7 @@ static void __mem_cgroup_free(struct mem
|
||||
@@ -5102,6 +5102,7 @@ static void __mem_cgroup_free(struct mem
|
||||
free_mem_cgroup_per_node_info(memcg, node);
|
||||
free_percpu(memcg->vmstats_percpu);
|
||||
free_percpu(memcg->vmstats_local);
|
||||
@ -286,7 +286,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
kfree(memcg);
|
||||
}
|
||||
|
||||
@@ -5148,6 +5149,9 @@ static struct mem_cgroup *mem_cgroup_all
|
||||
@@ -5152,6 +5153,9 @@ static struct mem_cgroup *mem_cgroup_all
|
||||
if (alloc_mem_cgroup_per_node_info(memcg, node))
|
||||
goto fail;
|
||||
|
||||
@ -296,7 +296,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
if (memcg_wb_domain_init(memcg, GFP_KERNEL))
|
||||
goto fail;
|
||||
|
||||
@@ -6066,6 +6070,29 @@ static void mem_cgroup_move_task(void)
|
||||
@@ -6070,6 +6074,29 @@ static void mem_cgroup_move_task(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -326,7 +326,7 @@ Commit-Queue: Yu Zhao <yuzhao@chromium.org>
|
||||
/*
|
||||
* Cgroup retains root cgroups across [un]mount cycles making it necessary
|
||||
* to verify whether we're attached to the default hierarchy on each mount
|
||||
@@ -6366,6 +6393,7 @@ struct cgroup_subsys memory_cgrp_subsys
|
||||
@@ -6370,6 +6397,7 @@ struct cgroup_subsys memory_cgrp_subsys
|
||||
.css_free = mem_cgroup_css_free,
|
||||
.css_reset = mem_cgroup_css_reset,
|
||||
.can_attach = mem_cgroup_can_attach,
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6326,15 +6326,10 @@ void netif_napi_del(struct napi_struct *
|
||||
@@ -6328,15 +6328,10 @@ void netif_napi_del(struct napi_struct *
|
||||
}
|
||||
EXPORT_SYMBOL(netif_napi_del);
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
weight = n->weight;
|
||||
|
||||
/* This NAPI_STATE_SCHED test is for avoiding a race
|
||||
@@ -6352,7 +6347,7 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6354,7 +6349,7 @@ static int napi_poll(struct napi_struct
|
||||
WARN_ON_ONCE(work > weight);
|
||||
|
||||
if (likely(work < weight))
|
||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Drivers must not modify the NAPI state if they
|
||||
* consume the entire weight. In such cases this code
|
||||
@@ -6361,7 +6356,7 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6363,7 +6358,7 @@ static int napi_poll(struct napi_struct
|
||||
*/
|
||||
if (unlikely(napi_disable_pending(n))) {
|
||||
napi_complete(n);
|
||||
@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
if (n->gro_bitmask) {
|
||||
@@ -6379,12 +6374,29 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6381,12 +6376,29 @@ static int napi_poll(struct napi_struct
|
||||
if (unlikely(!list_empty(&n->poll_list))) {
|
||||
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
|
||||
n->dev ? n->dev->name : "backlog");
|
||||
|
@ -131,7 +131,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
|
||||
{
|
||||
const struct net_device_ops *ops = dev->netdev_ops;
|
||||
@@ -3889,6 +3911,21 @@ int gro_normal_batch __read_mostly = 8;
|
||||
@@ -3891,6 +3913,21 @@ int gro_normal_batch __read_mostly = 8;
|
||||
static inline void ____napi_schedule(struct softnet_data *sd,
|
||||
struct napi_struct *napi)
|
||||
{
|
||||
@ -153,7 +153,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
list_add_tail(&napi->poll_list, &sd->poll_list);
|
||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||
}
|
||||
@@ -6280,6 +6317,12 @@ void netif_napi_add(struct net_device *d
|
||||
@@ -6282,6 +6319,12 @@ void netif_napi_add(struct net_device *d
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
napi_hash_add(napi);
|
||||
@ -166,7 +166,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
EXPORT_SYMBOL(netif_napi_add);
|
||||
|
||||
@@ -6296,9 +6339,28 @@ void napi_disable(struct napi_struct *n)
|
||||
@@ -6298,9 +6341,28 @@ void napi_disable(struct napi_struct *n)
|
||||
hrtimer_cancel(&n->timer);
|
||||
|
||||
clear_bit(NAPI_STATE_DISABLE, &n->state);
|
||||
@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void flush_gro_hash(struct napi_struct *napi)
|
||||
{
|
||||
int i;
|
||||
@@ -6323,6 +6385,11 @@ void netif_napi_del(struct napi_struct *
|
||||
@@ -6325,6 +6387,11 @@ void netif_napi_del(struct napi_struct *
|
||||
|
||||
flush_gro_hash(napi);
|
||||
napi->gro_bitmask = 0;
|
||||
@ -207,7 +207,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
EXPORT_SYMBOL(netif_napi_del);
|
||||
|
||||
@@ -6402,6 +6469,51 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6404,6 +6471,51 @@ static int napi_poll(struct napi_struct
|
||||
return work;
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
* @n: NAPI context
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3915,8 +3915,9 @@ static inline void ____napi_schedule(str
|
||||
@@ -3917,8 +3917,9 @@ static inline void ____napi_schedule(str
|
||||
|
||||
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
|
||||
/* Paired with smp_mb__before_atomic() in
|
||||
@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
* wake_up_process() when it's not NULL.
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
@@ -6294,6 +6295,49 @@ static void init_gro_hash(struct napi_st
|
||||
@@ -6296,6 +6297,49 @@ static void init_gro_hash(struct napi_st
|
||||
napi->gro_bitmask = 0;
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
enum gro_result {
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3922,6 +3922,8 @@ static inline void ____napi_schedule(str
|
||||
@@ -3924,6 +3924,8 @@ static inline void ____napi_schedule(str
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
if (thread) {
|
||||
@ -54,7 +54,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
wake_up_process(thread);
|
||||
return;
|
||||
}
|
||||
@@ -6082,7 +6084,8 @@ bool napi_complete_done(struct napi_stru
|
||||
@@ -6084,7 +6086,8 @@ bool napi_complete_done(struct napi_stru
|
||||
|
||||
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
|
||||
|
||||
@ -64,7 +64,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
|
||||
|
||||
/* If STATE_MISSED was set, leave STATE_SCHED set,
|
||||
* because we will call napi->poll() one more time.
|
||||
@@ -6515,16 +6518,25 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6517,16 +6520,25 @@ static int napi_poll(struct napi_struct
|
||||
|
||||
static int napi_thread_wait(struct napi_struct *napi)
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6522,7 +6522,7 @@ static int napi_thread_wait(struct napi_
|
||||
@@ -6524,7 +6524,7 @@ static int napi_thread_wait(struct napi_
|
||||
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
/* Testing SCHED_THREADED bit here to make sure the current
|
||||
* kthread owns this napi and could poll on this napi.
|
||||
* Testing SCHED bit is not enough because SCHED bit might be
|
||||
@@ -6540,6 +6540,7 @@ static int napi_thread_wait(struct napi_
|
||||
@@ -6542,6 +6542,7 @@ static int napi_thread_wait(struct napi_
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5476,8 +5476,7 @@ static inline void skb_gro_reset_offset(
|
||||
@@ -5478,8 +5478,7 @@ static inline void skb_gro_reset_offset(
|
||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||
NAPI_GRO_CB(skb)->frag0_len = 0;
|
||||
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3221,10 +3221,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3223,10 +3223,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -3641,6 +3641,8 @@ static __net_initdata struct pernet_oper
|
||||
@@ -3657,6 +3657,8 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
static int __init proto_init(void)
|
||||
{
|
||||
|
@ -295,7 +295,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
|
||||
struct nf_conn *ct = item->ct;
|
||||
struct sk_buff *skb;
|
||||
unsigned int type;
|
||||
@@ -3508,9 +3515,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||
@@ -3511,9 +3518,15 @@ static int ctnetlink_stat_exp_cpu(struct
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NF_CONNTRACK_EVENTS
|
||||
|
@ -80,7 +80,7 @@
|
||||
struct net_bridge_port *p;
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3218,9 +3218,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3220,9 +3220,17 @@ static int xmit_one(struct sk_buff *skb,
|
||||
unsigned int len;
|
||||
int rc;
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
#ifdef CONFIG_ETHERNET_PACKET_MANGLE
|
||||
if (!dev->eth_mangle_tx ||
|
||||
(skb = dev->eth_mangle_tx(dev, skb)) != NULL)
|
||||
@@ -4754,6 +4762,11 @@ void netdev_rx_handler_unregister(struct
|
||||
@@ -4756,6 +4764,11 @@ void netdev_rx_handler_unregister(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
|
||||
|
||||
@ -111,7 +111,7 @@
|
||||
/*
|
||||
* Limit the use of PFMEMALLOC reserves to those protocols that implement
|
||||
* the special handling of PFMEMALLOC skbs.
|
||||
@@ -4804,6 +4817,10 @@ static int __netif_receive_skb_core(stru
|
||||
@@ -4806,6 +4819,10 @@ static int __netif_receive_skb_core(stru
|
||||
int ret = NET_RX_DROP;
|
||||
__be16 type;
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
|
||||
|
||||
trace_netif_receive_skb(skb);
|
||||
@@ -4843,6 +4860,16 @@ another_round:
|
||||
@@ -4845,6 +4862,16 @@ another_round:
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,8 @@
|
||||
+#define LONGSUNG_U9300_PRODUCT_ID 0x9b3c
|
||||
|
||||
/* 4G Systems products */
|
||||
/* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick *
|
||||
@@ -610,6 +611,16 @@ static void option_instat_callback(struc
|
||||
/* This one was sold as the VW and Skoda "Carstick LTE" */
|
||||
@@ -612,6 +613,16 @@ static void option_instat_callback(struc
|
||||
/* Device needs ZLP */
|
||||
#define ZLP BIT(17)
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
|
||||
@@ -644,6 +655,8 @@ static const struct usb_device_id option
|
||||
@@ -646,6 +657,8 @@ static const struct usb_device_id option
|
||||
{ USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLE) },
|
||||
{ USB_DEVICE(QUANTA_VENDOR_ID, 0xea42),
|
||||
.driver_info = RSVD(4) },
|
||||
|
@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
--- a/drivers/mtd/ubi/build.c
|
||||
+++ b/drivers/mtd/ubi/build.c
|
||||
@@ -1161,6 +1161,73 @@ static struct mtd_info * __init open_mtd
|
||||
@@ -1168,6 +1168,73 @@ static struct mtd_info * __init open_mtd
|
||||
return mtd;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
static int __init ubi_init(void)
|
||||
{
|
||||
int err, i, k;
|
||||
@@ -1244,6 +1311,12 @@ static int __init ubi_init(void)
|
||||
@@ -1251,6 +1318,12 @@ static int __init ubi_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6091,6 +6122,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6092,6 +6123,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6102,6 +6135,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6103,6 +6136,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6294,6 +6328,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6295,6 +6329,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6304,11 +6340,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6305,11 +6341,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6332,6 +6378,8 @@ out:
|
||||
@@ -6333,6 +6379,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6351,6 +6399,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6352,6 +6400,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6434,6 +6483,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6435,6 +6484,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__u16 tc_index; /* traffic control index */
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -5542,6 +5542,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -5544,6 +5544,9 @@ static enum gro_result dev_gro_receive(s
|
||||
int same_flow;
|
||||
int grow;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (netif_elide_gro(skb->dev))
|
||||
goto normal;
|
||||
|
||||
@@ -7485,6 +7488,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -7487,6 +7490,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *upper_priv, void *upper_info,
|
||||
@@ -7535,6 +7580,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -7537,6 +7582,7 @@ static int __netdev_upper_dev_link(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
ret = notifier_to_errno(ret);
|
||||
@@ -7628,6 +7674,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -7630,6 +7676,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
|
||||
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
|
||||
|
||||
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
|
||||
&changeupper_info.info);
|
||||
|
||||
@@ -8358,6 +8405,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -8360,6 +8407,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
|
@ -15,7 +15,7 @@
|
||||
default "y"
|
||||
--- a/arch/mips/include/asm/vpe.h
|
||||
+++ b/arch/mips/include/asm/vpe.h
|
||||
@@ -127,4 +127,13 @@ void cleanup_tc(struct tc *tc);
|
||||
@@ -126,4 +126,13 @@ void cleanup_tc(struct tc *tc);
|
||||
|
||||
int __init vpe_module_init(void);
|
||||
void __exit vpe_module_exit(void);
|
||||
@ -39,7 +39,7 @@
|
||||
|
||||
/* check we are the Master VPE */
|
||||
local_irq_save(flags);
|
||||
@@ -416,6 +417,8 @@ int __init vpe_module_init(void)
|
||||
@@ -415,6 +416,8 @@ int __init vpe_module_init(void)
|
||||
}
|
||||
|
||||
v->ntcs = hw_tcs - aprp_cpu_index();
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
/* add the tc to the list of this vpe's tc's. */
|
||||
list_add(&t->tc, &v->tc);
|
||||
@@ -519,3 +522,47 @@ void __exit vpe_module_exit(void)
|
||||
@@ -518,3 +521,47 @@ void __exit vpe_module_exit(void)
|
||||
release_vpe(v);
|
||||
}
|
||||
}
|
||||
@ -142,7 +142,7 @@
|
||||
{
|
||||
--- a/arch/mips/lantiq/prom.c
|
||||
+++ b/arch/mips/lantiq/prom.c
|
||||
@@ -34,10 +34,14 @@ unsigned long physical_memsize = 0L;
|
||||
@@ -28,10 +28,14 @@ EXPORT_SYMBOL_GPL(ebu_lock);
|
||||
*/
|
||||
static struct ltq_soc_info soc_info;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/kernel/vpe-mt.c
|
||||
+++ b/arch/mips/kernel/vpe-mt.c
|
||||
@@ -132,7 +132,10 @@ int vpe_run(struct vpe *v)
|
||||
@@ -131,7 +131,10 @@ int vpe_run(struct vpe *v)
|
||||
* kernels need to turn it on, even if that wasn't the pre-dvpe() state.
|
||||
*/
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -39,7 +39,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
|
||||
--- a/arch/mips/lantiq/prom.c
|
||||
+++ b/arch/mips/lantiq/prom.c
|
||||
@@ -37,6 +37,14 @@ static struct ltq_soc_info soc_info;
|
||||
@@ -31,6 +31,14 @@ static struct ltq_soc_info soc_info;
|
||||
/* for Multithreading (APRP), vpe.c will use it */
|
||||
unsigned long cp0_memsize;
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
const char *get_system_type(void)
|
||||
{
|
||||
return soc_info.sys_type;
|
||||
@@ -100,6 +108,17 @@ void __init device_tree_init(void)
|
||||
@@ -94,6 +102,17 @@ void __init device_tree_init(void)
|
||||
unflatten_and_copy_device_tree();
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
void __init prom_init(void)
|
||||
{
|
||||
/* call the soc specific detetcion code and get it to fill soc_info */
|
||||
@@ -111,7 +130,10 @@ void __init prom_init(void)
|
||||
@@ -105,7 +124,10 @@ void __init prom_init(void)
|
||||
prom_init_cmdline();
|
||||
|
||||
#if defined(CONFIG_MIPS_MT_SMP)
|
||||
|
@ -35,7 +35,7 @@ Signed-off-by: Han Xu <han.xu@nxp.com>
|
||||
|
||||
--- a/drivers/mtd/ubi/build.c
|
||||
+++ b/drivers/mtd/ubi/build.c
|
||||
@@ -572,7 +572,7 @@ static int io_init(struct ubi_device *ub
|
||||
@@ -573,7 +573,7 @@ static int io_init(struct ubi_device *ub
|
||||
dbg_gen("sizeof(struct ubi_ainf_peb) %zu", sizeof(struct ubi_ainf_peb));
|
||||
dbg_gen("sizeof(struct ubi_wl_entry) %zu", sizeof(struct ubi_wl_entry));
|
||||
|
||||
|
@ -11,7 +11,7 @@ This reverts commit e75f4940e8ad0dd76527302a10c06b58bf7eb590.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -628,16 +628,6 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -629,16 +629,6 @@ static int fsl_sai_startup(struct snd_pc
|
||||
FSL_SAI_CR3_TRCE_MASK,
|
||||
FSL_SAI_CR3_TRCE);
|
||||
|
||||
@ -28,7 +28,7 @@ This reverts commit e75f4940e8ad0dd76527302a10c06b58bf7eb590.
|
||||
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints);
|
||||
|
||||
@@ -1052,35 +1042,30 @@ static int fsl_sai_remove(struct platfor
|
||||
@@ -1053,35 +1043,30 @@ static int fsl_sai_remove(struct platfor
|
||||
|
||||
static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
|
||||
.use_imx_pcm = false,
|
||||
|
@ -28,7 +28,7 @@ This reverts commit 63d1a3488ff58e094a7f517cf93c0250f0a3f6be.
|
||||
static int fsl_sai_set_dai_sysclk_tr(struct snd_soc_dai *cpu_dai,
|
||||
int clk_id, unsigned int freq, int fsl_dir)
|
||||
{
|
||||
@@ -433,14 +423,8 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -434,14 +424,8 @@ static int fsl_sai_hw_params(struct snd_
|
||||
slot_width = sai->slot_width;
|
||||
|
||||
if (!sai->is_slave_mode) {
|
||||
@ -45,7 +45,7 @@ This reverts commit 63d1a3488ff58e094a7f517cf93c0250f0a3f6be.
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -646,7 +630,6 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -647,7 +631,6 @@ static void fsl_sai_shutdown(struct snd_
|
||||
}
|
||||
|
||||
static const struct snd_soc_dai_ops fsl_sai_pcm_dai_ops = {
|
||||
|
@ -10,7 +10,7 @@ This reverts commit 6eeb60be5ebb73b2e5911e26fb1aed02940b7d09.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -1047,19 +1047,12 @@ static const struct fsl_sai_soc_data fsl
|
||||
@@ -1048,19 +1048,12 @@ static const struct fsl_sai_soc_data fsl
|
||||
.reg_offset = 8,
|
||||
};
|
||||
|
||||
|
@ -10,7 +10,7 @@ This reverts commit a860fac420971c5a90d4f78959b44ead793aee4f.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -1035,24 +1035,10 @@ static const struct fsl_sai_soc_data fsl
|
||||
@@ -1036,24 +1036,10 @@ static const struct fsl_sai_soc_data fsl
|
||||
.reg_offset = 0,
|
||||
};
|
||||
|
||||
|
@ -76,7 +76,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
bool tx = fsl_dir == FSL_FMT_TRANSMITTER;
|
||||
u32 val_cr2 = 0, val_cr4 = 0;
|
||||
|
||||
@@ -290,9 +287,9 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -291,9 +288,9 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -88,7 +88,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR4_MF | FSL_SAI_CR4_FSE |
|
||||
FSL_SAI_CR4_FSP | FSL_SAI_CR4_FSD_MSTR, val_cr4);
|
||||
|
||||
@@ -319,7 +316,6 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
@@ -320,7 +317,6 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
static int fsl_sai_set_bclk(struct snd_soc_dai *dai, bool tx, u32 freq)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(dai);
|
||||
@ -96,7 +96,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
unsigned long clk_rate;
|
||||
u32 savediv = 0, ratio, savesub = freq;
|
||||
u32 id;
|
||||
@@ -382,17 +378,17 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
@@ -383,17 +379,17 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
*/
|
||||
if ((sai->synchronous[TX] && !sai->synchronous[RX]) ||
|
||||
(!tx && !sai->synchronous[RX])) {
|
||||
@ -118,7 +118,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR2_DIV_MASK, savediv - 1);
|
||||
}
|
||||
|
||||
@@ -407,7 +403,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -408,7 +404,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -126,7 +126,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
unsigned int channels = params_channels(params);
|
||||
u32 word_width = params_width(params);
|
||||
@@ -460,19 +455,19 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -461,19 +456,19 @@ static int fsl_sai_hw_params(struct snd_
|
||||
|
||||
if (!sai->is_slave_mode) {
|
||||
if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) {
|
||||
@ -150,7 +150,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
regmap_write(sai->regmap, FSL_SAI_RMR,
|
||||
@@ -480,10 +475,10 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -481,10 +476,10 @@ static int fsl_sai_hw_params(struct snd_
|
||||
}
|
||||
}
|
||||
|
||||
@ -163,7 +163,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
regmap_write(sai->regmap, FSL_SAI_xMR(tx), ~0UL - ((1 << channels) - 1));
|
||||
@@ -511,8 +506,6 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -512,8 +507,6 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -172,7 +172,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
u32 xcsr, count = 100;
|
||||
|
||||
@@ -521,9 +514,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -522,9 +515,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
* Rx sync with Tx clocks: Clear SYNC for Tx, set it for Rx.
|
||||
* Tx sync with Rx clocks: Clear SYNC for Rx, set it for Tx.
|
||||
*/
|
||||
@ -185,7 +185,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
sai->synchronous[RX] ? FSL_SAI_CR2_SYNC : 0);
|
||||
|
||||
/*
|
||||
@@ -534,44 +527,43 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -535,44 +528,43 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
@ -242,7 +242,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CSR_FR, FSL_SAI_CSR_FR);
|
||||
|
||||
/*
|
||||
@@ -583,13 +575,13 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -584,13 +576,13 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
*/
|
||||
if (!sai->is_slave_mode) {
|
||||
/* Software Reset for both Tx and Rx */
|
||||
@ -262,7 +262,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -604,11 +596,10 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -605,11 +597,10 @@ static int fsl_sai_startup(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -275,7 +275,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR3_TRCE_MASK,
|
||||
FSL_SAI_CR3_TRCE);
|
||||
|
||||
@@ -622,10 +613,9 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -623,10 +614,9 @@ static void fsl_sai_shutdown(struct snd_
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -287,7 +287,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_CR3_TRCE_MASK, 0);
|
||||
}
|
||||
|
||||
@@ -643,20 +633,17 @@ static const struct snd_soc_dai_ops fsl_
|
||||
@@ -644,20 +634,17 @@ static const struct snd_soc_dai_ops fsl_
|
||||
static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
|
||||
@ -314,7 +314,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
FSL_SAI_MAXBURST_RX - 1);
|
||||
|
||||
snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx,
|
||||
@@ -694,12 +681,12 @@ static const struct snd_soc_component_dr
|
||||
@@ -695,12 +682,12 @@ static const struct snd_soc_component_dr
|
||||
.name = "fsl-sai",
|
||||
};
|
||||
|
||||
@ -333,7 +333,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
{FSL_SAI_TDR0, 0},
|
||||
{FSL_SAI_TDR1, 0},
|
||||
{FSL_SAI_TDR2, 0},
|
||||
@@ -708,50 +695,24 @@ static struct reg_default fsl_sai_reg_de
|
||||
@@ -709,50 +696,24 @@ static struct reg_default fsl_sai_reg_de
|
||||
{FSL_SAI_TDR5, 0},
|
||||
{FSL_SAI_TDR6, 0},
|
||||
{FSL_SAI_TDR7, 0},
|
||||
@ -397,7 +397,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
case FSL_SAI_TFR0:
|
||||
case FSL_SAI_TFR1:
|
||||
case FSL_SAI_TFR2:
|
||||
@@ -761,6 +722,12 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -762,6 +723,12 @@ static bool fsl_sai_readable_reg(struct
|
||||
case FSL_SAI_TFR6:
|
||||
case FSL_SAI_TFR7:
|
||||
case FSL_SAI_TMR:
|
||||
@ -410,7 +410,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
case FSL_SAI_RDR0:
|
||||
case FSL_SAI_RDR1:
|
||||
case FSL_SAI_RDR2:
|
||||
@@ -786,13 +753,9 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -787,13 +754,9 @@ static bool fsl_sai_readable_reg(struct
|
||||
|
||||
static bool fsl_sai_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
@ -426,7 +426,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
case FSL_SAI_TFR0:
|
||||
case FSL_SAI_TFR1:
|
||||
case FSL_SAI_TFR2:
|
||||
@@ -825,16 +788,13 @@ static bool fsl_sai_volatile_reg(struct
|
||||
@@ -826,16 +789,13 @@ static bool fsl_sai_volatile_reg(struct
|
||||
|
||||
static bool fsl_sai_writeable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
@ -449,7 +449,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
case FSL_SAI_TDR0:
|
||||
case FSL_SAI_TDR1:
|
||||
case FSL_SAI_TDR2:
|
||||
@@ -844,6 +804,12 @@ static bool fsl_sai_writeable_reg(struct
|
||||
@@ -845,6 +805,12 @@ static bool fsl_sai_writeable_reg(struct
|
||||
case FSL_SAI_TDR6:
|
||||
case FSL_SAI_TDR7:
|
||||
case FSL_SAI_TMR:
|
||||
@ -462,7 +462,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
case FSL_SAI_RMR:
|
||||
return true;
|
||||
default:
|
||||
@@ -851,15 +817,15 @@ static bool fsl_sai_writeable_reg(struct
|
||||
@@ -852,15 +818,15 @@ static bool fsl_sai_writeable_reg(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -481,7 +481,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
.readable_reg = fsl_sai_readable_reg,
|
||||
.volatile_reg = fsl_sai_volatile_reg,
|
||||
.writeable_reg = fsl_sai_writeable_reg,
|
||||
@@ -891,12 +857,6 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -892,12 +858,6 @@ static int fsl_sai_probe(struct platform
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
@ -494,7 +494,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev,
|
||||
"bus", base, &fsl_sai_regmap_config);
|
||||
|
||||
@@ -1026,13 +986,11 @@ static int fsl_sai_remove(struct platfor
|
||||
@@ -1027,13 +987,11 @@ static int fsl_sai_remove(struct platfor
|
||||
static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
|
||||
.use_imx_pcm = false,
|
||||
.fifo_depth = 32,
|
||||
@ -508,7 +508,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
};
|
||||
|
||||
static const struct of_device_id fsl_sai_ids[] = {
|
||||
@@ -1065,7 +1023,6 @@ static int fsl_sai_runtime_suspend(struc
|
||||
@@ -1066,7 +1024,6 @@ static int fsl_sai_runtime_suspend(struc
|
||||
static int fsl_sai_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct fsl_sai *sai = dev_get_drvdata(dev);
|
||||
@ -516,7 +516,7 @@ This reverts commit 4f7a0728b5305e2d865f543fbcffd617e03c7674.
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(sai->bus_clk);
|
||||
@@ -1087,11 +1044,11 @@ static int fsl_sai_runtime_resume(struct
|
||||
@@ -1088,11 +1045,11 @@ static int fsl_sai_runtime_resume(struct
|
||||
}
|
||||
|
||||
regcache_cache_only(sai->regmap, false);
|
||||
|
@ -11,7 +11,7 @@ This reverts commit b84f50b0fcb497a62068926fca793d2d213c7dbd.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -599,8 +599,7 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -600,8 +600,7 @@ static int fsl_sai_startup(struct snd_pc
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
int ret;
|
||||
|
||||
@ -21,7 +21,7 @@ This reverts commit b84f50b0fcb497a62068926fca793d2d213c7dbd.
|
||||
FSL_SAI_CR3_TRCE);
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
@@ -615,8 +614,7 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -616,8 +615,7 @@ static void fsl_sai_shutdown(struct snd_
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
|
||||
|
@ -12,7 +12,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -685,14 +685,7 @@ static struct reg_default fsl_sai_reg_de
|
||||
@@ -686,14 +686,7 @@ static struct reg_default fsl_sai_reg_de
|
||||
{FSL_SAI_TCR3, 0},
|
||||
{FSL_SAI_TCR4, 0},
|
||||
{FSL_SAI_TCR5, 0},
|
||||
@ -28,7 +28,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
{FSL_SAI_TMR, 0},
|
||||
{FSL_SAI_RCR1, 0},
|
||||
{FSL_SAI_RCR2, 0},
|
||||
@@ -711,14 +704,7 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -712,14 +705,7 @@ static bool fsl_sai_readable_reg(struct
|
||||
case FSL_SAI_TCR3:
|
||||
case FSL_SAI_TCR4:
|
||||
case FSL_SAI_TCR5:
|
||||
@ -44,7 +44,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
case FSL_SAI_TMR:
|
||||
case FSL_SAI_RCSR:
|
||||
case FSL_SAI_RCR1:
|
||||
@@ -726,22 +712,8 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -727,22 +713,8 @@ static bool fsl_sai_readable_reg(struct
|
||||
case FSL_SAI_RCR3:
|
||||
case FSL_SAI_RCR4:
|
||||
case FSL_SAI_RCR5:
|
||||
@ -69,7 +69,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
case FSL_SAI_RMR:
|
||||
return true;
|
||||
default:
|
||||
@@ -754,30 +726,9 @@ static bool fsl_sai_volatile_reg(struct
|
||||
@@ -755,30 +727,9 @@ static bool fsl_sai_volatile_reg(struct
|
||||
switch (reg) {
|
||||
case FSL_SAI_TCSR:
|
||||
case FSL_SAI_RCSR:
|
||||
@ -103,7 +103,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -793,14 +744,7 @@ static bool fsl_sai_writeable_reg(struct
|
||||
@@ -794,14 +745,7 @@ static bool fsl_sai_writeable_reg(struct
|
||||
case FSL_SAI_TCR3:
|
||||
case FSL_SAI_TCR4:
|
||||
case FSL_SAI_TCR5:
|
||||
@ -119,7 +119,7 @@ This reverts commit 5f0ac20ed6db1d6da2eea8b862cf3d54fdfb5830.
|
||||
case FSL_SAI_TMR:
|
||||
case FSL_SAI_RCSR:
|
||||
case FSL_SAI_RCR1:
|
||||
@@ -942,8 +886,8 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -943,8 +887,8 @@ static int fsl_sai_probe(struct platform
|
||||
MCLK_DIR(index));
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ This reverts commit cf9441adb1a35506d7606866c382b9d8614169b5.
|
||||
esai_priv->name, esai_priv);
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -831,8 +831,10 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -832,8 +832,10 @@ static int fsl_sai_probe(struct platform
|
||||
}
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
|
@ -10,7 +10,7 @@ This reverts commit 6d19d8a3cec74a9680947ecb6abdeda38583110e.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -763,7 +763,6 @@ static const struct regmap_config fsl_sa
|
||||
@@ -764,7 +764,6 @@ static const struct regmap_config fsl_sa
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
|
@ -12,7 +12,7 @@ This reverts commit bd517707d85f19a7339ea8b882fcbf0fd9976bd6.
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -640,7 +640,7 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
@@ -641,7 +641,7 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR, 0);
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK,
|
||||
@ -21,7 +21,7 @@ This reverts commit bd517707d85f19a7339ea8b882fcbf0fd9976bd6.
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK,
|
||||
FSL_SAI_MAXBURST_RX - 1);
|
||||
|
||||
@@ -928,12 +928,10 @@ static int fsl_sai_remove(struct platfor
|
||||
@@ -929,12 +929,10 @@ static int fsl_sai_remove(struct platfor
|
||||
|
||||
static const struct fsl_sai_soc_data fsl_sai_vf610_data = {
|
||||
.use_imx_pcm = false,
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/slab.h>
|
||||
@@ -789,7 +788,10 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -790,7 +789,10 @@ static int fsl_sai_probe(struct platform
|
||||
return -ENOMEM;
|
||||
|
||||
sai->pdev = pdev;
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
sai->is_lsb_first = of_property_read_bool(np, "lsb-first");
|
||||
|
||||
@@ -901,7 +903,7 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -902,7 +904,7 @@ static int fsl_sai_probe(struct platform
|
||||
if (ret)
|
||||
goto err_pm_disable;
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
ret = imx_pcm_dma_init(pdev, IMX_SAI_DMABUF_SIZE);
|
||||
if (ret)
|
||||
goto err_pm_disable;
|
||||
@@ -926,18 +928,10 @@ static int fsl_sai_remove(struct platfor
|
||||
@@ -927,18 +929,10 @@ static int fsl_sai_remove(struct platfor
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -506,7 +506,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -507,7 +507,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
/*
|
||||
* Asynchronous mode: Clear SYNC for both Tx and Rx.
|
||||
@@ -529,6 +531,11 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -530,6 +532,11 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
|
||||
FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE);
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -605,6 +605,11 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -606,6 +606,11 @@ static int fsl_sai_startup(struct snd_pc
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
int ret;
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE,
|
||||
FSL_SAI_CR3_TRCE);
|
||||
|
||||
@@ -621,6 +626,11 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -622,6 +627,11 @@ static void fsl_sai_shutdown(struct snd_
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE, 0);
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -264,6 +264,8 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -265,6 +265,8 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -476,6 +476,35 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -477,6 +477,35 @@ static int fsl_sai_hw_params(struct snd_
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -868,8 +868,7 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -869,8 +869,7 @@ static int fsl_sai_probe(struct platform
|
||||
sai->bus_clk = NULL;
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
static const unsigned int fsl_sai_rates[] = {
|
||||
8000, 11025, 12000, 16000, 22050,
|
||||
24000, 32000, 44100, 48000, 64000,
|
||||
@@ -505,6 +541,29 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -506,6 +542,29 @@ static int fsl_sai_hw_params(struct snd_
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx),
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
val_cr4);
|
||||
@@ -563,14 +622,16 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -564,14 +623,16 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE);
|
||||
|
||||
for (i = 0; tx && i < channels; i++)
|
||||
@ -126,7 +126,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
|
||||
FSL_SAI_CSR_xIE_MASK, FSL_SAI_FLAGS);
|
||||
@@ -641,8 +702,8 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -642,8 +703,8 @@ static int fsl_sai_startup(struct snd_pc
|
||||
else
|
||||
sai->is_stream_opened[tx] = true;
|
||||
|
||||
@ -137,7 +137,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints);
|
||||
@@ -659,7 +720,7 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -660,7 +721,7 @@ static void fsl_sai_shutdown(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE, 0);
|
||||
|
||||
if (sai->is_stream_opened[tx]) {
|
||||
@ -146,7 +146,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
sai->is_stream_opened[tx] = false;
|
||||
}
|
||||
}
|
||||
@@ -687,7 +748,7 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
@@ -688,7 +749,7 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR, 0);
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK,
|
||||
@ -155,7 +155,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK,
|
||||
FSL_SAI_MAXBURST_RX - 1);
|
||||
|
||||
@@ -732,7 +793,8 @@ static struct reg_default fsl_sai_reg_de
|
||||
@@ -733,7 +794,8 @@ static struct reg_default fsl_sai_reg_de
|
||||
{FSL_SAI_TCR3, 0},
|
||||
{FSL_SAI_TCR4, 0},
|
||||
{FSL_SAI_TCR5, 0},
|
||||
@ -165,7 +165,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
{FSL_SAI_TMR, 0},
|
||||
{FSL_SAI_RCR1, 0},
|
||||
{FSL_SAI_RCR2, 0},
|
||||
@@ -751,7 +813,8 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -752,7 +814,8 @@ static bool fsl_sai_readable_reg(struct
|
||||
case FSL_SAI_TCR3:
|
||||
case FSL_SAI_TCR4:
|
||||
case FSL_SAI_TCR5:
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
case FSL_SAI_TMR:
|
||||
case FSL_SAI_RCSR:
|
||||
case FSL_SAI_RCR1:
|
||||
@@ -759,8 +822,10 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -760,8 +823,10 @@ static bool fsl_sai_readable_reg(struct
|
||||
case FSL_SAI_RCR3:
|
||||
case FSL_SAI_RCR4:
|
||||
case FSL_SAI_RCR5:
|
||||
@ -188,7 +188,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
case FSL_SAI_RMR:
|
||||
return true;
|
||||
default:
|
||||
@@ -773,9 +838,12 @@ static bool fsl_sai_volatile_reg(struct
|
||||
@@ -774,9 +839,12 @@ static bool fsl_sai_volatile_reg(struct
|
||||
switch (reg) {
|
||||
case FSL_SAI_TCSR:
|
||||
case FSL_SAI_RCSR:
|
||||
@ -204,7 +204,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -791,7 +859,8 @@ static bool fsl_sai_writeable_reg(struct
|
||||
@@ -792,7 +860,8 @@ static bool fsl_sai_writeable_reg(struct
|
||||
case FSL_SAI_TCR3:
|
||||
case FSL_SAI_TCR4:
|
||||
case FSL_SAI_TCR5:
|
||||
@ -214,7 +214,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
case FSL_SAI_TMR:
|
||||
case FSL_SAI_RCSR:
|
||||
case FSL_SAI_RCR1:
|
||||
@@ -820,9 +889,19 @@ static const struct regmap_config fsl_sa
|
||||
@@ -821,9 +890,19 @@ static const struct regmap_config fsl_sa
|
||||
.cache_type = REGCACHE_FLAT,
|
||||
};
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
struct fsl_sai *sai;
|
||||
struct regmap *gpr;
|
||||
struct resource *res;
|
||||
@@ -837,11 +916,12 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -838,11 +917,12 @@ static int fsl_sai_probe(struct platform
|
||||
|
||||
sai->pdev = pdev;
|
||||
|
||||
@ -250,7 +250,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
base = devm_ioremap_resource(&pdev->dev, res);
|
||||
@@ -873,11 +953,25 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -874,11 +954,25 @@ static int fsl_sai_probe(struct platform
|
||||
sai->mclk_clk[i] = devm_clk_get(&pdev->dev, tmp);
|
||||
if (IS_ERR(sai->mclk_clk[i])) {
|
||||
dev_err(&pdev->dev, "failed to get mclk%d clock: %ld\n",
|
||||
@ -277,7 +277,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0) {
|
||||
dev_err(&pdev->dev, "no irq for node %s\n", pdev->name);
|
||||
@@ -936,8 +1030,8 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -937,8 +1031,8 @@ static int fsl_sai_probe(struct platform
|
||||
MCLK_DIR(index));
|
||||
}
|
||||
|
||||
@ -288,7 +288,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
sai->dma_params_rx.maxburst = FSL_SAI_MAXBURST_RX;
|
||||
sai->dma_params_tx.maxburst = FSL_SAI_MAXBURST_TX;
|
||||
|
||||
@@ -950,7 +1044,7 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -951,7 +1045,7 @@ static int fsl_sai_probe(struct platform
|
||||
if (ret)
|
||||
goto err_pm_disable;
|
||||
|
||||
@ -297,7 +297,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
ret = imx_pcm_dma_init(pdev, IMX_SAI_DMABUF_SIZE);
|
||||
if (ret)
|
||||
goto err_pm_disable;
|
||||
@@ -996,6 +1090,9 @@ static int fsl_sai_runtime_suspend(struc
|
||||
@@ -997,6 +1091,9 @@ static int fsl_sai_runtime_suspend(struc
|
||||
|
||||
clk_disable_unprepare(sai->bus_clk);
|
||||
|
||||
@ -307,7 +307,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
|
||||
regcache_cache_only(sai->regmap, true);
|
||||
regcache_mark_dirty(sai->regmap);
|
||||
|
||||
@@ -1025,6 +1122,10 @@ static int fsl_sai_runtime_resume(struct
|
||||
@@ -1026,6 +1123,10 @@ static int fsl_sai_runtime_resume(struct
|
||||
goto disable_tx_clk;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -527,8 +527,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -528,8 +528,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR5,
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
} else if (!sai->synchronous[RX] && sai->synchronous[TX] && tx) {
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCR4,
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
@@ -536,8 +534,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -537,8 +535,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCR5,
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,12 +622,17 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -627,12 +623,17 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
if (tx)
|
||||
udelay(10);
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -910,6 +910,7 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -911,6 +911,7 @@ static int fsl_sai_probe(struct platform
|
||||
char tmp[8];
|
||||
int irq, ret, i;
|
||||
int index;
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
|
||||
|
||||
sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL);
|
||||
if (!sai)
|
||||
@@ -979,7 +980,12 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -980,7 +981,12 @@ static int fsl_sai_probe(struct platform
|
||||
return irq;
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -300,7 +300,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -301,7 +301,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
/* DAI clock master masks */
|
||||
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||
@@ -310,7 +310,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -311,7 +311,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
sai->is_slave_mode = false;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBM_CFM:
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBS_CFM:
|
||||
val_cr2 |= FSL_SAI_CR2_BCD_MSTR;
|
||||
@@ -318,7 +318,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -319,7 +319,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBM_CFS:
|
||||
val_cr4 |= FSL_SAI_CR4_FSD_MSTR;
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -359,7 +359,7 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
@@ -360,7 +360,7 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
int ret = 0;
|
||||
|
||||
/* Don't apply to slave mode */
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
return 0;
|
||||
|
||||
for (id = 0; id < FSL_SAI_MCLK_MAX; id++) {
|
||||
@@ -454,7 +454,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -455,7 +455,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
if (sai->slot_width)
|
||||
slot_width = sai->slot_width;
|
||||
|
||||
@ -61,7 +61,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
ret = fsl_sai_set_bclk(cpu_dai, tx,
|
||||
slots * slot_width * params_rate(params));
|
||||
if (ret)
|
||||
@@ -490,7 +490,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -491,7 +491,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
* error.
|
||||
*/
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) {
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR4,
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
@@ -519,7 +519,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -520,7 +520,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
* error.
|
||||
*/
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) {
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR4,
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
@@ -577,7 +577,7 @@ static int fsl_sai_hw_free(struct snd_pc
|
||||
@@ -578,7 +578,7 @@ static int fsl_sai_hw_free(struct snd_pc
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
sai->mclk_streams & BIT(substream->stream)) {
|
||||
clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[tx]]);
|
||||
sai->mclk_streams &= ~BIT(substream->stream);
|
||||
@@ -672,7 +672,7 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -673,7 +673,7 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
* This is a hardware bug, and will be fix in the
|
||||
* next sai version.
|
||||
*/
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -335,14 +335,23 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -336,14 +336,23 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
|
||||
static int fsl_sai_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
|
||||
{
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
ret = fsl_sai_set_dai_fmt_tr(cpu_dai, fmt, FSL_FMT_RECEIVER);
|
||||
if (ret)
|
||||
dev_err(cpu_dai->dev, "Cannot set rx format: %d\n", ret);
|
||||
@@ -974,6 +983,9 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -975,6 +984,9 @@ static int fsl_sai_probe(struct platform
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Mihai Serban <mihai.serban@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -507,35 +507,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -508,35 +508,6 @@ static int fsl_sai_hw_params(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR5,
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Mihai Serban <mihai.serban@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -594,15 +594,14 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -595,15 +595,14 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
|
@ -114,7 +114,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
bool tx = fsl_dir == FSL_FMT_TRANSMITTER;
|
||||
u32 val_cr2 = 0, val_cr4 = 0;
|
||||
|
||||
@@ -324,9 +339,9 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -325,9 +340,9 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_CR4_MF | FSL_SAI_CR4_FSE |
|
||||
FSL_SAI_CR4_FSP | FSL_SAI_CR4_FSD_MSTR, val_cr4);
|
||||
|
||||
@@ -362,6 +377,7 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
@@ -363,6 +378,7 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
static int fsl_sai_set_bclk(struct snd_soc_dai *dai, bool tx, u32 freq)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(dai);
|
||||
@ -134,7 +134,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
unsigned long clk_rate;
|
||||
u32 savediv = 0, ratio, savesub = freq;
|
||||
u32 id;
|
||||
@@ -424,17 +440,17 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
@@ -425,17 +441,17 @@ static int fsl_sai_set_bclk(struct snd_s
|
||||
*/
|
||||
if ((sai->synchronous[TX] && !sai->synchronous[RX]) ||
|
||||
(!tx && !sai->synchronous[RX])) {
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_CR2_DIV_MASK, savediv - 1);
|
||||
}
|
||||
|
||||
@@ -449,6 +465,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -450,6 +466,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -164,7 +164,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
unsigned int channels = params_channels(params);
|
||||
u32 word_width = params_width(params);
|
||||
@@ -501,49 +518,35 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -502,49 +519,35 @@ static int fsl_sai_hw_params(struct snd_
|
||||
|
||||
if (!sai->slave_mode[tx]) {
|
||||
if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) {
|
||||
@ -226,7 +226,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
regmap_write(sai->regmap, FSL_SAI_xMR(tx), ~0UL - ((1 << channels) - 1));
|
||||
@@ -571,6 +574,7 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -572,6 +575,7 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
u8 channels = substream->runtime->channels;
|
||||
u32 xcsr, count = 100;
|
||||
@@ -581,9 +585,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -582,9 +586,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
* Rx sync with Tx clocks: Clear SYNC for Tx, set it for Rx.
|
||||
* Tx sync with Rx clocks: Clear SYNC for Rx, set it for Tx.
|
||||
*/
|
||||
@ -246,7 +246,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
sai->synchronous[RX] ? FSL_SAI_CR2_SYNC : 0);
|
||||
|
||||
/*
|
||||
@@ -599,49 +603,50 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -600,49 +604,50 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
if (tx)
|
||||
udelay(10);
|
||||
|
||||
@ -311,7 +311,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_CSR_FR, FSL_SAI_CSR_FR);
|
||||
|
||||
/*
|
||||
@@ -654,12 +659,12 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -655,12 +660,12 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
if (!sai->slave_mode[tx]) {
|
||||
/* Software Reset for both Tx and Rx */
|
||||
regmap_write(sai->regmap,
|
||||
@ -328,7 +328,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -674,6 +679,7 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -675,6 +680,7 @@ static int fsl_sai_startup(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -336,7 +336,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
int ret;
|
||||
|
||||
@@ -682,7 +688,8 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -683,7 +689,8 @@ static int fsl_sai_startup(struct snd_pc
|
||||
else
|
||||
sai->is_stream_opened[tx] = true;
|
||||
|
||||
@ -346,7 +346,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_CR3_TRCE(sai->dataline[tx]));
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
@@ -695,12 +702,14 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -696,12 +703,14 @@ static void fsl_sai_shutdown(struct snd_
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -362,7 +362,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
sai->is_stream_opened[tx] = false;
|
||||
}
|
||||
}
|
||||
@@ -719,17 +728,18 @@ static const struct snd_soc_dai_ops fsl_
|
||||
@@ -720,17 +729,18 @@ static const struct snd_soc_dai_ops fsl_
|
||||
static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
|
||||
@ -387,7 +387,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
FSL_SAI_MAXBURST_RX - 1);
|
||||
|
||||
snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx,
|
||||
@@ -767,41 +777,55 @@ static const struct snd_soc_component_dr
|
||||
@@ -768,41 +778,55 @@ static const struct snd_soc_component_dr
|
||||
.name = "fsl-sai",
|
||||
};
|
||||
|
||||
@ -466,7 +466,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
case FSL_SAI_RDR0:
|
||||
case FSL_SAI_RDR1:
|
||||
case FSL_SAI_RFR0:
|
||||
@@ -815,9 +839,13 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -816,9 +840,13 @@ static bool fsl_sai_readable_reg(struct
|
||||
|
||||
static bool fsl_sai_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
@ -482,7 +482,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
case FSL_SAI_TFR0:
|
||||
case FSL_SAI_TFR1:
|
||||
case FSL_SAI_RFR0:
|
||||
@@ -832,22 +860,19 @@ static bool fsl_sai_volatile_reg(struct
|
||||
@@ -833,22 +861,19 @@ static bool fsl_sai_volatile_reg(struct
|
||||
|
||||
static bool fsl_sai_writeable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
@ -514,7 +514,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
case FSL_SAI_RMR:
|
||||
return true;
|
||||
default:
|
||||
@@ -855,14 +880,28 @@ static bool fsl_sai_writeable_reg(struct
|
||||
@@ -856,14 +881,28 @@ static bool fsl_sai_writeable_reg(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -546,7 +546,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
.readable_reg = fsl_sai_readable_reg,
|
||||
.volatile_reg = fsl_sai_volatile_reg,
|
||||
.writeable_reg = fsl_sai_writeable_reg,
|
||||
@@ -874,6 +913,7 @@ static const struct of_device_id fsl_sai
|
||||
@@ -875,6 +914,7 @@ static const struct of_device_id fsl_sai
|
||||
{ .compatible = "fsl,imx6sx-sai", .data = &fsl_sai_imx6sx },
|
||||
{ .compatible = "fsl,imx6ul-sai", .data = &fsl_sai_imx6ul },
|
||||
{ .compatible = "fsl,imx7ulp-sai", .data = &fsl_sai_imx7ulp },
|
||||
@ -554,7 +554,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, fsl_sai_ids);
|
||||
@@ -889,7 +929,8 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -890,7 +930,8 @@ static int fsl_sai_probe(struct platform
|
||||
char tmp[8];
|
||||
int irq, ret, i;
|
||||
int index;
|
||||
@ -564,7 +564,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
sai = devm_kzalloc(&pdev->dev, sizeof(*sai), GFP_KERNEL);
|
||||
if (!sai)
|
||||
@@ -909,6 +950,9 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -910,6 +951,9 @@ static int fsl_sai_probe(struct platform
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
@ -574,7 +574,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev,
|
||||
"bus", base, &fsl_sai_regmap_config);
|
||||
|
||||
@@ -963,11 +1007,11 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -964,11 +1008,11 @@ static int fsl_sai_probe(struct platform
|
||||
}
|
||||
|
||||
/* SAI shared interrupt */
|
||||
@ -590,7 +590,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to claim irq %u\n", irq);
|
||||
return ret;
|
||||
@@ -1091,6 +1135,7 @@ static int fsl_sai_runtime_suspend(struc
|
||||
@@ -1092,6 +1136,7 @@ static int fsl_sai_runtime_suspend(struc
|
||||
static int fsl_sai_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct fsl_sai *sai = dev_get_drvdata(dev);
|
||||
@ -598,7 +598,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(sai->bus_clk);
|
||||
@@ -1116,11 +1161,11 @@ static int fsl_sai_runtime_resume(struct
|
||||
@@ -1117,11 +1162,11 @@ static int fsl_sai_runtime_resume(struct
|
||||
PM_QOS_CPU_DMA_LATENCY, 0);
|
||||
|
||||
regcache_cache_only(sai->regmap, false);
|
||||
|
@ -72,7 +72,7 @@ Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com>
|
||||
};
|
||||
|
||||
static const unsigned int fsl_sai_rates[] = {
|
||||
@@ -692,6 +707,13 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -693,6 +708,13 @@ static int fsl_sai_startup(struct snd_pc
|
||||
FSL_SAI_CR3_TRCE_MASK,
|
||||
FSL_SAI_CR3_TRCE(sai->dataline[tx]));
|
||||
|
||||
@ -86,7 +86,7 @@ Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com>
|
||||
ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints);
|
||||
|
||||
@@ -914,6 +936,7 @@ static const struct of_device_id fsl_sai
|
||||
@@ -915,6 +937,7 @@ static const struct of_device_id fsl_sai
|
||||
{ .compatible = "fsl,imx6ul-sai", .data = &fsl_sai_imx6ul },
|
||||
{ .compatible = "fsl,imx7ulp-sai", .data = &fsl_sai_imx7ulp },
|
||||
{ .compatible = "fsl,imx8mq-sai", .data = &fsl_sai_imx8mq },
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
.flags = 0,
|
||||
.reg_offset = 0,
|
||||
.constrain_period_size = true,
|
||||
@@ -759,10 +759,12 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
@@ -760,10 +760,12 @@ static int fsl_sai_dai_probe(struct snd_
|
||||
regmap_write(sai->regmap, FSL_SAI_TCSR(offset), 0);
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR(offset), 0);
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -1097,6 +1097,8 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -1098,6 +1098,8 @@ static int fsl_sai_probe(struct platform
|
||||
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component,
|
||||
&sai->cpu_dai_drv, 1);
|
||||
if (ret)
|
||||
@@ -1140,6 +1142,8 @@ static int fsl_sai_runtime_suspend(struc
|
||||
@@ -1141,6 +1143,8 @@ static int fsl_sai_runtime_suspend(struc
|
||||
{
|
||||
struct fsl_sai *sai = dev_get_drvdata(dev);
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -368,9 +368,9 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
@@ -369,9 +369,9 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
int ret;
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
ret = fsl_sai_set_dai_fmt_tr(cpu_dai, fmt, FSL_FMT_TRANSMITTER);
|
||||
if (ret) {
|
||||
@@ -378,9 +378,9 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
@@ -379,9 +379,9 @@ static int fsl_sai_set_dai_fmt(struct sn
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
ret = fsl_sai_set_dai_fmt_tr(cpu_dai, fmt, FSL_FMT_RECEIVER);
|
||||
if (ret)
|
||||
@@ -1022,8 +1022,19 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -1023,8 +1023,19 @@ static int fsl_sai_probe(struct platform
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -487,11 +487,14 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -488,11 +488,14 @@ static int fsl_sai_hw_params(struct snd_
|
||||
u32 val_cr4 = 0, val_cr5 = 0;
|
||||
u32 slots = (channels == 1) ? 2 : channels;
|
||||
u32 slot_width = word_width;
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
if (sai->slot_width)
|
||||
slot_width = sai->slot_width;
|
||||
|
||||
@@ -558,6 +561,10 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -559,6 +562,10 @@ static int fsl_sai_hw_params(struct snd_
|
||||
FSL_SAI_CR4_FCOMB_MASK, FSL_SAI_CR4_FCOMB_SOFT);
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx, offset),
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
val_cr4);
|
||||
@@ -573,8 +580,12 @@ static int fsl_sai_hw_free(struct snd_pc
|
||||
@@ -574,8 +581,12 @@ static int fsl_sai_hw_free(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
if (!sai->slave_mode[tx] &&
|
||||
sai->mclk_streams & BIT(substream->stream)) {
|
||||
clk_disable_unprepare(sai->mclk_clk[sai->mclk_id[tx]]);
|
||||
@@ -694,7 +705,6 @@ static int fsl_sai_startup(struct snd_pc
|
||||
@@ -695,7 +706,6 @@ static int fsl_sai_startup(struct snd_pc
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
int ret;
|
||||
|
||||
@@ -724,7 +734,6 @@ static void fsl_sai_shutdown(struct snd_
|
||||
@@ -725,7 +735,6 @@ static void fsl_sai_shutdown(struct snd_
|
||||
struct snd_soc_dai *cpu_dai)
|
||||
{
|
||||
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
|
||||
.fifos = 1,
|
||||
.fifo_depth = 64,
|
||||
.flags = 0,
|
||||
@@ -571,7 +571,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -572,7 +572,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR5(tx, offset),
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -858,11 +858,23 @@ static bool fsl_sai_readable_reg(struct
|
||||
@@ -859,11 +859,23 @@ static bool fsl_sai_readable_reg(struct
|
||||
switch (reg) {
|
||||
case FSL_SAI_TFR0:
|
||||
case FSL_SAI_TFR1:
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
|
||||
case FSL_SAI_RMR:
|
||||
return true;
|
||||
default:
|
||||
@@ -881,8 +893,20 @@ static bool fsl_sai_volatile_reg(struct
|
||||
@@ -882,8 +894,20 @@ static bool fsl_sai_volatile_reg(struct
|
||||
switch (reg) {
|
||||
case FSL_SAI_TFR0:
|
||||
case FSL_SAI_TFR1:
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -571,8 +571,8 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -572,8 +572,8 @@ static int fsl_sai_hw_params(struct snd_
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR5(tx, offset),
|
||||
FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK |
|
||||
FSL_SAI_CR5_FBT_MASK, val_cr5);
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
|
||||
ret = fsl_sai_set_dai_sysclk_tr(cpu_dai, clk_id, freq,
|
||||
FSL_FMT_TRANSMITTER);
|
||||
if (ret) {
|
||||
@@ -499,7 +502,11 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -500,7 +503,11 @@ static int fsl_sai_hw_params(struct snd_
|
||||
slot_width = sai->slot_width;
|
||||
|
||||
if (!sai->slave_mode[tx]) {
|
||||
|
@ -31,15 +31,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
--- a/sound/soc/fsl/fsl_sai.c
|
||||
+++ b/sound/soc/fsl/fsl_sai.c
|
||||
@@ -267,6 +267,7 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
if (!sai->is_lsb_first)
|
||||
val_cr4 |= FSL_SAI_CR4_MF;
|
||||
|
||||
+ sai->is_dsp_mode = false;
|
||||
/* DAI mode */
|
||||
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||
case SND_SOC_DAIFMT_I2S:
|
||||
@@ -305,6 +306,11 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
@@ -306,6 +306,11 @@ static int fsl_sai_set_dai_fmt_tr(struct
|
||||
val_cr2 |= FSL_SAI_CR2_BCP;
|
||||
sai->is_dsp_mode = true;
|
||||
break;
|
||||
@ -51,7 +43,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
case SND_SOC_DAIFMT_RIGHT_J:
|
||||
/* To be done */
|
||||
default:
|
||||
@@ -492,12 +498,38 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -493,12 +498,38 @@ static int fsl_sai_hw_params(struct snd_
|
||||
u32 slot_width = word_width;
|
||||
u32 pins;
|
||||
int ret;
|
||||
@ -90,7 +82,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
if (sai->slot_width)
|
||||
slot_width = sai->slot_width;
|
||||
|
||||
@@ -527,7 +559,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -528,7 +559,7 @@ static int fsl_sai_hw_params(struct snd_
|
||||
val_cr5 |= FSL_SAI_CR5_WNW(slot_width);
|
||||
val_cr5 |= FSL_SAI_CR5_W0W(slot_width);
|
||||
|
||||
@ -99,7 +91,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
val_cr5 |= FSL_SAI_CR5_FBT(0);
|
||||
else
|
||||
val_cr5 |= FSL_SAI_CR5_FBT(word_width - 1);
|
||||
@@ -560,17 +592,71 @@ static int fsl_sai_hw_params(struct snd_
|
||||
@@ -561,17 +592,71 @@ static int fsl_sai_hw_params(struct snd_
|
||||
}
|
||||
|
||||
if (sai->soc->dataline != 0x1) {
|
||||
@ -174,7 +166,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx, offset),
|
||||
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK,
|
||||
@@ -610,9 +696,18 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -611,9 +696,18 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
unsigned char offset = sai->soc->reg_offset;
|
||||
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||||
u8 channels = substream->runtime->channels;
|
||||
@ -194,7 +186,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
/*
|
||||
* Asynchronous mode: Clear SYNC for both Tx and Rx.
|
||||
* Rx sync with Tx clocks: Clear SYNC for Tx, set it for Rx.
|
||||
@@ -631,10 +726,19 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
@@ -632,10 +726,19 @@ static int fsl_sai_trigger(struct snd_pc
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
@ -218,7 +210,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, offset),
|
||||
FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE);
|
||||
@@ -994,6 +1098,7 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -995,6 +1098,7 @@ static int fsl_sai_probe(struct platform
|
||||
char tmp[8];
|
||||
int irq, ret, i;
|
||||
int index;
|
||||
@ -226,7 +218,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
struct regmap_config fsl_sai_regmap_config = fsl_sai_v2_regmap_config;
|
||||
unsigned long irqflags = 0;
|
||||
|
||||
@@ -1048,6 +1153,9 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -1049,6 +1153,9 @@ static int fsl_sai_probe(struct platform
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,7 +228,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
/*dataline mask for rx and tx*/
|
||||
ret = of_property_read_u32_index(np, "fsl,dataline", 0, &sai->dataline[0]);
|
||||
if (ret)
|
||||
@@ -1062,6 +1170,37 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -1063,6 +1170,37 @@ static int fsl_sai_probe(struct platform
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -274,7 +266,7 @@ Reviewed-by: Viorel Suman <viorel.suman@nxp.com>
|
||||
if ((of_find_property(np, "fsl,i2s-xtor", NULL) != NULL) ||
|
||||
(of_find_property(np, "fsl,txm-rxs", NULL) != NULL))
|
||||
{
|
||||
@@ -1144,6 +1283,11 @@ static int fsl_sai_probe(struct platform
|
||||
@@ -1145,6 +1283,11 @@ static int fsl_sai_probe(struct platform
|
||||
sai->dma_params_rx.maxburst = FSL_SAI_MAXBURST_RX;
|
||||
sai->dma_params_tx.maxburst = FSL_SAI_MAXBURST_TX;
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
|
||||
|
||||
--- a/drivers/gpu/drm/drm_fourcc.c
|
||||
+++ b/drivers/gpu/drm/drm_fourcc.c
|
||||
@@ -261,6 +261,9 @@ const struct drm_format_info *__drm_form
|
||||
@@ -265,6 +265,9 @@ const struct drm_format_info *__drm_form
|
||||
{ .format = DRM_FORMAT_P016, .depth = 0, .num_planes = 2,
|
||||
.char_per_block = { 2, 4, 0 }, .block_w = { 1, 0, 0 }, .block_h = { 1, 0, 0 },
|
||||
.hsub = 2, .vsub = 2, .is_yuv = true},
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/tty_flip.h>
|
||||
@@ -2394,6 +2396,54 @@ static struct uart_driver lpuart_reg = {
|
||||
@@ -2414,6 +2416,54 @@ static struct uart_driver lpuart_reg = {
|
||||
.cons = LPUART_CONSOLE,
|
||||
};
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
static int lpuart_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct of_device_id *of_id = of_match_device(lpuart_dt_ids,
|
||||
@@ -2431,6 +2481,10 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2451,6 +2501,10 @@ static int lpuart_probe(struct platform_
|
||||
|
||||
sport->port.rs485_config = lpuart_config_rs485;
|
||||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/tty_flip.h>
|
||||
@@ -1552,8 +1553,17 @@ static void lpuart32_configure(struct lp
|
||||
@@ -1572,8 +1573,17 @@ static void lpuart32_configure(struct lp
|
||||
static int lpuart32_startup(struct uart_port *port)
|
||||
{
|
||||
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
||||
|
@ -351,7 +351,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
}
|
||||
|
||||
static void lpuart_dma_rx_free(struct uart_port *port)
|
||||
@@ -1413,8 +1525,10 @@ static void lpuart_setup_watermark(struc
|
||||
@@ -1433,8 +1545,10 @@ static void lpuart_setup_watermark(struc
|
||||
writeb(UARTSFIFO_RXUF, sport->port.membase + UARTSFIFO);
|
||||
}
|
||||
|
||||
@ -363,7 +363,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
/* Restore cr2 */
|
||||
writeb(cr2_saved, sport->port.membase + UARTCR2);
|
||||
@@ -1435,6 +1549,7 @@ static void lpuart32_setup_watermark(str
|
||||
@@ -1455,6 +1569,7 @@ static void lpuart32_setup_watermark(str
|
||||
{
|
||||
unsigned long val, ctrl;
|
||||
unsigned long ctrl_saved;
|
||||
@ -371,7 +371,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
ctrl = lpuart32_read(&sport->port, UARTCTRL);
|
||||
ctrl_saved = ctrl;
|
||||
@@ -1446,12 +1561,26 @@ static void lpuart32_setup_watermark(str
|
||||
@@ -1466,12 +1581,26 @@ static void lpuart32_setup_watermark(str
|
||||
val = lpuart32_read(&sport->port, UARTFIFO);
|
||||
val |= UARTFIFO_TXFE | UARTFIFO_RXFE;
|
||||
val |= UARTFIFO_TXFLUSH | UARTFIFO_RXFLUSH;
|
||||
@ -399,7 +399,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
/* Restore cr2 */
|
||||
lpuart32_write(&sport->port, ctrl_saved, UARTCTRL);
|
||||
}
|
||||
@@ -1463,17 +1592,29 @@ static void lpuart32_setup_watermark_ena
|
||||
@@ -1483,17 +1612,29 @@ static void lpuart32_setup_watermark_ena
|
||||
lpuart32_setup_watermark(sport);
|
||||
|
||||
temp = lpuart32_read(&sport->port, UARTCTRL);
|
||||
@ -430,7 +430,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
static void lpuart_tx_dma_startup(struct lpuart_port *sport)
|
||||
{
|
||||
u32 uartbaud;
|
||||
@@ -1537,19 +1678,23 @@ static int lpuart_startup(struct uart_po
|
||||
@@ -1557,19 +1698,23 @@ static int lpuart_startup(struct uart_po
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
if (!sport->lpuart_dma_tx_use)
|
||||
temp |= UARTCTRL_TIE;
|
||||
lpuart32_write(&sport->port, temp, UARTCTRL);
|
||||
@@ -1593,12 +1738,12 @@ static int lpuart32_startup(struct uart_
|
||||
@@ -1613,12 +1758,12 @@ static int lpuart32_startup(struct uart_
|
||||
|
||||
spin_lock_irqsave(&sport->port.lock, flags);
|
||||
|
||||
@ -476,7 +476,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
lpuart32_configure(sport);
|
||||
|
||||
spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||
@@ -1608,7 +1753,7 @@ static int lpuart32_startup(struct uart_
|
||||
@@ -1628,7 +1773,7 @@ static int lpuart32_startup(struct uart_
|
||||
static void lpuart_dma_shutdown(struct lpuart_port *sport)
|
||||
{
|
||||
if (sport->lpuart_dma_rx_use) {
|
||||
@ -485,7 +485,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
lpuart_dma_rx_free(&sport->port);
|
||||
sport->lpuart_dma_rx_use = false;
|
||||
}
|
||||
@@ -1651,11 +1796,22 @@ static void lpuart32_shutdown(struct uar
|
||||
@@ -1671,11 +1816,22 @@ static void lpuart32_shutdown(struct uar
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
|
||||
@ -510,7 +510,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
|
||||
@@ -1752,10 +1908,10 @@ lpuart_set_termios(struct uart_port *por
|
||||
@@ -1772,10 +1928,10 @@ lpuart_set_termios(struct uart_port *por
|
||||
* baud rate and restart Rx DMA path.
|
||||
*
|
||||
* Since timer function acqures sport->port.lock, need to stop before
|
||||
@ -523,7 +523,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
lpuart_dma_rx_free(&sport->port);
|
||||
}
|
||||
|
||||
@@ -1967,10 +2123,10 @@ lpuart32_set_termios(struct uart_port *p
|
||||
@@ -1987,10 +2143,10 @@ lpuart32_set_termios(struct uart_port *p
|
||||
* baud rate and restart Rx DMA path.
|
||||
*
|
||||
* Since timer function acqures sport->port.lock, need to stop before
|
||||
@ -536,7 +536,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
lpuart_dma_rx_free(&sport->port);
|
||||
}
|
||||
|
||||
@@ -2483,6 +2639,10 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2503,6 +2659,10 @@ static int lpuart_probe(struct platform_
|
||||
sport->port.dev = &pdev->dev;
|
||||
sport->port.type = PORT_LPUART;
|
||||
sport->devtype = sdata->devtype;
|
||||
@ -547,7 +547,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
ret = platform_get_irq(pdev, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -2633,7 +2793,7 @@ static int lpuart_suspend(struct device
|
||||
@@ -2653,7 +2813,7 @@ static int lpuart_suspend(struct device
|
||||
* Rx DMA path before suspend and start Rx DMA path on resume.
|
||||
*/
|
||||
if (irq_wake) {
|
||||
|
@ -105,7 +105,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
||||
static void lpuart_stop_tx(struct uart_port *port)
|
||||
{
|
||||
unsigned char temp;
|
||||
@@ -2726,6 +2768,10 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2746,6 +2788,10 @@ static int lpuart_probe(struct platform_
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
||||
uart_get_rs485_mode(&pdev->dev, &sport->port.rs485);
|
||||
|
||||
if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX)
|
||||
@@ -2749,6 +2795,8 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2769,6 +2815,8 @@ static int lpuart_probe(struct platform_
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -43,7 +43,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
/* return TIOCSER_TEMT when transmitter is not busy */
|
||||
static unsigned int lpuart_tx_empty(struct uart_port *port)
|
||||
{
|
||||
@@ -2283,6 +2298,7 @@ static const struct uart_ops lpuart_pops
|
||||
@@ -2303,6 +2318,7 @@ static const struct uart_ops lpuart_pops
|
||||
.break_ctl = lpuart_break_ctl,
|
||||
.startup = lpuart_startup,
|
||||
.shutdown = lpuart_shutdown,
|
||||
@ -51,7 +51,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
.set_termios = lpuart_set_termios,
|
||||
.type = lpuart_type,
|
||||
.request_port = lpuart_request_port,
|
||||
@@ -2307,6 +2323,7 @@ static const struct uart_ops lpuart32_po
|
||||
@@ -2327,6 +2343,7 @@ static const struct uart_ops lpuart32_po
|
||||
.break_ctl = lpuart32_break_ctl,
|
||||
.startup = lpuart32_startup,
|
||||
.shutdown = lpuart32_shutdown,
|
||||
@ -59,7 +59,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
.set_termios = lpuart32_set_termios,
|
||||
.type = lpuart_type,
|
||||
.request_port = lpuart_request_port,
|
||||
@@ -2764,6 +2781,11 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2784,6 +2801,11 @@ static int lpuart_probe(struct platform_
|
||||
if (ret)
|
||||
goto failed_irq_request;
|
||||
|
||||
@ -71,7 +71,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
@@ -2798,6 +2820,9 @@ static int lpuart_probe(struct platform_
|
||||
@@ -2818,6 +2840,9 @@ static int lpuart_probe(struct platform_
|
||||
failed_reset:
|
||||
uart_remove_one_port(&lpuart_reg, &sport->port);
|
||||
failed_attach_port:
|
||||
@ -81,7 +81,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
failed_irq_request:
|
||||
lpuart_disable_clks(sport);
|
||||
return ret;
|
||||
@@ -2817,15 +2842,41 @@ static int lpuart_remove(struct platform
|
||||
@@ -2837,15 +2862,41 @@ static int lpuart_remove(struct platform
|
||||
if (sport->dma_rx_chan)
|
||||
dma_release_channel(sport->dma_rx_chan);
|
||||
|
||||
@ -123,7 +123,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
|
||||
if (lpuart_is_32(sport)) {
|
||||
/* disable Rx/Tx and interrupts */
|
||||
@@ -2839,10 +2890,14 @@ static int lpuart_suspend(struct device
|
||||
@@ -2859,10 +2910,14 @@ static int lpuart_suspend(struct device
|
||||
writeb(temp, sport->port.membase + UARTCR2);
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
|
||||
if (sport->lpuart_dma_rx_use) {
|
||||
/*
|
||||
@@ -2873,9 +2928,6 @@ static int lpuart_suspend(struct device
|
||||
@@ -2893,9 +2948,6 @@ static int lpuart_suspend(struct device
|
||||
dmaengine_terminate_all(sport->dma_tx_chan);
|
||||
}
|
||||
|
||||
@ -148,7 +148,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2883,9 +2935,11 @@ static int lpuart_resume(struct device *
|
||||
@@ -2903,9 +2955,11 @@ static int lpuart_resume(struct device *
|
||||
{
|
||||
struct lpuart_port *sport = dev_get_drvdata(dev);
|
||||
bool irq_wake = irqd_is_wakeup_set(irq_get_irq_data(sport->port.irq));
|
||||
@ -162,7 +162,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
|
||||
if (lpuart_is_32(sport))
|
||||
lpuart32_setup_watermark_enable(sport);
|
||||
@@ -2906,13 +2960,23 @@ static int lpuart_resume(struct device *
|
||||
@@ -2926,13 +2980,23 @@ static int lpuart_resume(struct device *
|
||||
if (lpuart_is_32(sport))
|
||||
lpuart32_configure(sport);
|
||||
|
||||
@ -188,7 +188,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
||||
|
||||
static struct platform_driver lpuart_driver = {
|
||||
.probe = lpuart_probe,
|
||||
@@ -2920,7 +2984,7 @@ static struct platform_driver lpuart_dri
|
||||
@@ -2940,7 +3004,7 @@ static struct platform_driver lpuart_dri
|
||||
.driver = {
|
||||
.name = "fsl-lpuart",
|
||||
.of_match_table = lpuart_dt_ids,
|
||||
|
@ -28,7 +28,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
#include <linux/pm_domain.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/reset.h>
|
||||
@@ -1719,10 +1720,23 @@ static void lpuart_rx_dma_startup(struct
|
||||
@@ -1739,10 +1740,23 @@ static void lpuart_rx_dma_startup(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
unsigned char temp;
|
||||
|
||||
/* determine FIFO size and enable FIFO mode */
|
||||
@@ -1735,14 +1749,7 @@ static int lpuart_startup(struct uart_po
|
||||
@@ -1755,14 +1769,7 @@ static int lpuart_startup(struct uart_po
|
||||
sport->rxfifo_size = UARTFIFO_DEPTH((temp >> UARTPFIFO_RXSIZE_OFF) &
|
||||
UARTPFIFO_FIFOSIZE_MASK);
|
||||
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1769,11 +1776,27 @@ static void lpuart32_configure(struct lp
|
||||
@@ -1789,11 +1796,27 @@ static void lpuart32_configure(struct lp
|
||||
lpuart32_write(&sport->port, temp, UARTCTRL);
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
unsigned long temp;
|
||||
int ret;
|
||||
|
||||
@@ -1805,17 +1828,8 @@ static int lpuart32_startup(struct uart_
|
||||
@@ -1825,17 +1848,8 @@ static int lpuart32_startup(struct uart_
|
||||
sport->port.fifosize = sport->txfifo_size;
|
||||
}
|
||||
|
||||
@ -108,16 +108,16 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
-
|
||||
- lpuart_rx_dma_startup(sport);
|
||||
- lpuart_tx_dma_startup(sport);
|
||||
-
|
||||
- lpuart32_setup_watermark_enable(sport);
|
||||
- lpuart32_configure(sport);
|
||||
+ lpuart32_hw_setup(sport);
|
||||
|
||||
- lpuart32_setup_watermark_enable(sport);
|
||||
- lpuart32_configure(sport);
|
||||
-
|
||||
- spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2867,108 +2881,205 @@ static int lpuart_runtime_resume(struct
|
||||
@@ -2887,108 +2901,205 @@ static int lpuart_runtime_resume(struct
|
||||
return lpuart_enable_clks(sport);
|
||||
};
|
||||
|
||||
@ -197,8 +197,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
- }
|
||||
+ return false;
|
||||
+}
|
||||
|
||||
- /* Disable Rx DMA to use UART port as wakeup source */
|
||||
+
|
||||
+static int lpuart_suspend_noirq(struct device *dev)
|
||||
+{
|
||||
+ struct lpuart_port *sport = dev_get_drvdata(dev);
|
||||
@ -208,7 +207,8 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
+ serial_lpuart_enable_wakeup(sport, !!irq_wake);
|
||||
+
|
||||
+ pinctrl_pm_select_sleep_state(dev);
|
||||
+
|
||||
|
||||
- /* Disable Rx DMA to use UART port as wakeup source */
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@ -302,7 +302,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
+ ~UARTCR5_RDMAS, sport->port.membase + UARTCR5);
|
||||
+ }
|
||||
+ spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||
+ }
|
||||
}
|
||||
+
|
||||
+ if (sport->lpuart_dma_tx_use) {
|
||||
+ spin_lock_irqsave(&sport->port.lock, flags);
|
||||
@ -318,7 +318,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
+ spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||
+ sport->dma_tx_in_progress = false;
|
||||
+ dmaengine_terminate_all(sport->dma_tx_chan);
|
||||
}
|
||||
+ }
|
||||
+ } else if (pm_runtime_active(sport->port.dev)) {
|
||||
+ lpuart_disable_clks(sport);
|
||||
+ pm_runtime_disable(sport->port.dev);
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||
@@ -2134,11 +2134,12 @@ lpuart32_set_termios(struct uart_port *p
|
||||
@@ -2154,11 +2154,12 @@ lpuart32_set_termios(struct uart_port *p
|
||||
{
|
||||
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
||||
unsigned long flags;
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
modem = lpuart32_read(&sport->port, UARTMODIR);
|
||||
/*
|
||||
* only support CS8 and CS7, and for CS7 must enable PE.
|
||||
@@ -2175,7 +2176,9 @@ lpuart32_set_termios(struct uart_port *p
|
||||
@@ -2195,7 +2196,9 @@ lpuart32_set_termios(struct uart_port *p
|
||||
}
|
||||
|
||||
if (termios->c_cflag & CSTOPB)
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
||||
|
||||
/* parity must be enabled when CS7 to match 8-bits format */
|
||||
if ((termios->c_cflag & CSIZE) == CS7)
|
||||
@@ -2246,6 +2249,7 @@ lpuart32_set_termios(struct uart_port *p
|
||||
@@ -2266,6 +2269,7 @@ lpuart32_set_termios(struct uart_port *p
|
||||
lpuart32_write(&sport->port, old_ctrl & ~(UARTCTRL_TE | UARTCTRL_RE),
|
||||
UARTCTRL);
|
||||
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Peng Fan <peng.fan@nxp.com>
|
||||
|
||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||
@@ -2617,7 +2617,9 @@ static int __init lpuart32_early_console
|
||||
@@ -2637,7 +2637,9 @@ static int __init lpuart32_early_console
|
||||
if (!device->port.membase)
|
||||
return -ENODEV;
|
||||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Li Jun <jun.li@freescale.com>
|
||||
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -4783,7 +4783,8 @@ hub_port_init(struct usb_hub *hub, struc
|
||||
@@ -4782,7 +4782,8 @@ hub_port_init(struct usb_hub *hub, struc
|
||||
}
|
||||
if (r) {
|
||||
if (r != -ENODEV)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
@@ -554,6 +554,19 @@
|
||||
@@ -555,6 +555,19 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
@@ -716,6 +716,17 @@
|
||||
@@ -717,6 +717,17 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -281,7 +281,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
||||
&pio {
|
||||
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
@@ -794,45 +794,41 @@
|
||||
@@ -795,45 +795,41 @@
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
@ -344,7 +344,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pcie_intc0 0>,
|
||||
<0 0 0 2 &pcie_intc0 1>,
|
||||
@@ -844,15 +840,39 @@
|
||||
@@ -845,15 +841,39 @@
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
interface-type = "ace";
|
||||
reg = <0x5000 0x1000>;
|
||||
};
|
||||
@@ -969,6 +969,8 @@
|
||||
@@ -970,6 +970,8 @@
|
||||
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
||||
mediatek,ethsys = <ðsys>;
|
||||
mediatek,sgmiisys = <&sgmiisys>;
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
|
||||
@@ -805,6 +805,8 @@
|
||||
@@ -806,6 +806,8 @@
|
||||
reg = <0 0x1a143000 0 0x1000>;
|
||||
reg-names = "port0";
|
||||
mediatek,pcie-cfg = <&pciecfg>;
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_LOW>;
|
||||
@@ -822,6 +824,7 @@
|
||||
@@ -823,6 +825,7 @@
|
||||
bus-range = <0x00 0xff>;
|
||||
ranges = <0x82000000 0 0x20000000 0x0 0x20000000 0 0x8000000>;
|
||||
status = "disabled";
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
slot0: pcie@0,0 {
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
@@ -848,6 +851,8 @@
|
||||
@@ -849,6 +852,8 @@
|
||||
reg = <0 0x1a145000 0 0x1000>;
|
||||
reg-names = "port1";
|
||||
mediatek,pcie-cfg = <&pciecfg>;
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
|
||||
@@ -866,6 +871,7 @@
|
||||
@@ -867,6 +872,7 @@
|
||||
bus-range = <0x00 0xff>;
|
||||
ranges = <0x82000000 0 0x28000000 0x0 0x28000000 0 0x8000000>;
|
||||
status = "disabled";
|
||||
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
slot1: pcie@1,0 {
|
||||
reg = <0x0800 0 0 0 0>;
|
||||
@@ -925,6 +931,11 @@
|
||||
@@ -926,6 +932,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
#include <linux/platform_data/x86/apple.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/suspend.h>
|
||||
@@ -5796,3 +5797,34 @@ static void nvidia_ion_ahci_fixup(struct
|
||||
@@ -5819,3 +5820,34 @@ static void nvidia_ion_ahci_fixup(struct
|
||||
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||
@@ -2911,6 +2911,18 @@ static const struct usb_device_id uvc_id
|
||||
@@ -2919,6 +2919,18 @@ static const struct usb_device_id uvc_id
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||
@ -34,7 +34,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
||||
--- a/drivers/media/usb/uvc/uvc_status.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_status.c
|
||||
@@ -223,6 +223,7 @@ static void uvc_status_complete(struct u
|
||||
@@ -225,6 +225,7 @@ static void uvc_status_complete(struct u
|
||||
if (uvc_event_control(urb, status, len))
|
||||
/* The URB will be resubmitted in work context. */
|
||||
return;
|
||||
@ -42,7 +42,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -271,6 +272,7 @@ int uvc_status_init(struct uvc_device *d
|
||||
@@ -273,6 +274,7 @@ int uvc_status_init(struct uvc_device *d
|
||||
}
|
||||
|
||||
pipe = usb_rcvintpipe(dev->udev, ep->desc.bEndpointAddress);
|
||||
@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
/* Mark the buffer as done if the EOF marker is set. */
|
||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||
uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n");
|
||||
@@ -1747,6 +1892,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
@@ -1749,6 +1894,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
if (npackets == 0)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -225,10 +225,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
for_each_uvc_urb(uvc_urb, stream) {
|
||||
--- a/drivers/media/usb/uvc/uvcvideo.h
|
||||
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
||||
@@ -199,7 +199,9 @@
|
||||
#define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400
|
||||
@@ -200,7 +200,9 @@
|
||||
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
||||
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
||||
#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000
|
||||
-
|
||||
+#define UVC_QUIRK_MOTION 0x00001000
|
||||
+#define UVC_QUIRK_SINGLE_ISO 0x00002000
|
||||
@ -236,7 +236,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
/* Format flags */
|
||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
||||
#define UVC_FMT_FLAG_STREAM 0x00000002
|
||||
@@ -666,6 +668,7 @@ struct uvc_device {
|
||||
@@ -668,6 +670,7 @@ struct uvc_device {
|
||||
u8 *status;
|
||||
struct input_dev *input;
|
||||
char input_phys[64];
|
||||
|
Loading…
x
Reference in New Issue
Block a user