kernel: bump 5.15 to 5.15.152
Removed because it is upstream:
generic/backport-5.15/081-v5.17-regmap-allow-to-define-reg_update_bits-for-no-bus.patch
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=fbddd48f1456db32b675fad95a902de38345902a
Manual changes needed:
bcm27xx/patches-5.15/950-0470-sound-usb-add-device-quirks-for-A4Tech-FHD-1080p-web.patch
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 2ec025d554)
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.15 = .151
|
LINUX_VERSION-5.15 = .152
|
||||||
LINUX_KERNEL_HASH-5.15.151 = 8a1e760bf2660947234109aa4fdbbe3686238b4e852157b96c59356689107e49
|
LINUX_KERNEL_HASH-5.15.152 = f0805225f4a5b24d0bba9302c2c2f261c04f737ac5dd931da9b112e9f3e4a47e
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
|||||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||||
{
|
{
|
||||||
u32 *buf;
|
u32 *buf;
|
||||||
@@ -3264,8 +3273,14 @@ static int lan78xx_bind(struct lan78xx_n
|
@@ -3265,8 +3274,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||||
if (DEFAULT_RX_CSUM_ENABLE)
|
if (DEFAULT_RX_CSUM_ENABLE)
|
||||||
dev->net->features |= NETIF_F_RXCSUM;
|
dev->net->features |= NETIF_F_RXCSUM;
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
|||||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||||
{
|
{
|
||||||
u32 *buf;
|
u32 *buf;
|
||||||
@@ -4124,7 +4129,13 @@ static int lan78xx_probe(struct usb_inte
|
@@ -4125,7 +4130,13 @@ static int lan78xx_probe(struct usb_inte
|
||||||
netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
|
netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
|
||||||
netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
|
netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing.
|
|||||||
|
|
||||||
--- a/drivers/net/usb/lan78xx.c
|
--- a/drivers/net/usb/lan78xx.c
|
||||||
+++ b/drivers/net/usb/lan78xx.c
|
+++ b/drivers/net/usb/lan78xx.c
|
||||||
@@ -3503,7 +3503,7 @@ static int rx_submit(struct lan78xx_net
|
@@ -3504,7 +3504,7 @@ static int rx_submit(struct lan78xx_net
|
||||||
size_t size = dev->rx_urb_size;
|
size_t size = dev->rx_urb_size;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
|||||||
val);
|
val);
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1673,8 +1673,8 @@ struct urb_priv {
|
@@ -1674,8 +1674,8 @@ struct urb_priv {
|
||||||
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
|
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
|
||||||
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
|
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
|
||||||
* meaning 64 ring segments.
|
* meaning 64 ring segments.
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- a/sound/usb/quirks.c
|
--- a/sound/usb/quirks.c
|
||||||
+++ b/sound/usb/quirks.c
|
+++ b/sound/usb/quirks.c
|
||||||
@@ -1892,6 +1892,8 @@ static const struct usb_audio_quirk_flag
|
@@ -1808,6 +1808,8 @@ static const struct usb_audio_quirk_flag
|
||||||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
QUIRK_FLAG_IGNORE_CTL_ERROR),
|
||||||
DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
|
DEVICE_FLG(0x0951, 0x16ad, /* Kingston HyperX */
|
||||||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
QUIRK_FLAG_CTL_MSG_DELAY_1M),
|
||||||
+ DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */
|
+ DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */
|
||||||
+ QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE),
|
+ QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE),
|
||||||
DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */
|
DEVICE_FLG(0x0b0e, 0x0349, /* Jabra 550a */
|
||||||
QUIRK_FLAG_IFACE_SKIP_CLOSE),
|
QUIRK_FLAG_CTL_MSG_DELAY_1M),
|
||||||
|
DEVICE_FLG(0x0ecb, 0x205c, /* JBL Quantum610 Wireless */
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- a/sound/usb/card.c
|
--- a/sound/usb/card.c
|
||||||
+++ b/sound/usb/card.c
|
+++ b/sound/usb/card.c
|
||||||
@@ -855,8 +855,14 @@ static int usb_audio_probe(struct usb_in
|
@@ -856,8 +856,14 @@ static int usb_audio_probe(struct usb_in
|
||||||
if (ignore_ctl_error)
|
if (ignore_ctl_error)
|
||||||
chip->quirk_flags |= QUIRK_FLAG_IGNORE_CTL_ERROR;
|
chip->quirk_flags |= QUIRK_FLAG_IGNORE_CTL_ERROR;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
|
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1907,6 +1907,7 @@ struct xhci_hcd {
|
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
xhci_err(xhci, "Tried to move enqueue past ring segment\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3165,7 +3168,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
@@ -3215,7 +3218,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd
|
||||||
* that clears the EHB.
|
* that clears the EHB.
|
||||||
*/
|
*/
|
||||||
while (xhci_handle_event(xhci) > 0) {
|
while (xhci_handle_event(xhci) > 0) {
|
||||||
@@ -214,7 +214,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
continue;
|
continue;
|
||||||
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
xhci_update_erst_dequeue(xhci, event_ring_deq);
|
||||||
event_ring_deq = xhci->event_ring->dequeue;
|
event_ring_deq = xhci->event_ring->dequeue;
|
||||||
@@ -3307,7 +3310,8 @@ static int prepare_ring(struct xhci_hcd
|
@@ -3357,7 +3360,8 @@ static int prepare_ring(struct xhci_hcd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
* when the cycle bit is set to 1.
|
* when the cycle bit is set to 1.
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1635,6 +1635,7 @@ struct xhci_ring {
|
@@ -1636,6 +1636,7 @@ struct xhci_ring {
|
||||||
unsigned int num_trbs_free;
|
unsigned int num_trbs_free;
|
||||||
unsigned int num_trbs_free_temp;
|
unsigned int num_trbs_free_temp;
|
||||||
unsigned int bounce_buf_len;
|
unsigned int bounce_buf_len;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1909,6 +1909,7 @@ struct xhci_hcd {
|
@@ -1910,6 +1910,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -3620,14 +3620,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3670,14 +3670,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
@@ -54,7 +54,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
full_len = urb->transfer_buffer_length;
|
full_len = urb->transfer_buffer_length;
|
||||||
/* If we have scatter/gather list, we use it. */
|
/* If we have scatter/gather list, we use it. */
|
||||||
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
if (urb->num_sgs && !(urb->transfer_flags & URB_DMA_MAP_SINGLE)) {
|
||||||
@@ -3664,6 +3665,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3714,6 +3715,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
start_cycle = ring->cycle_state;
|
start_cycle = ring->cycle_state;
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
for (enqd_len = 0; first_trb || enqd_len < full_len;
|
||||||
enqd_len += trb_buff_len) {
|
enqd_len += trb_buff_len) {
|
||||||
@@ -3676,6 +3688,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3726,6 +3738,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
first_trb = false;
|
first_trb = false;
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1910,6 +1910,7 @@ struct xhci_hcd {
|
@@ -1911,6 +1911,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
|
||||||
#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
|
#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -3620,7 +3620,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3670,7 +3670,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
u32 field, length_field, remainder, maxpacket;
|
u32 field, length_field, remainder, maxpacket;
|
||||||
u64 addr, send_addr;
|
u64 addr, send_addr;
|
||||||
|
|
||||||
@@ -3666,14 +3666,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3716,14 +3716,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
send_addr = addr;
|
send_addr = addr;
|
||||||
|
|
||||||
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
if (xhci->quirks & XHCI_VLI_SS_BULK_OUT_BUG &&
|
||||||
@@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Queue the TRBs, even if they are zero-length */
|
/* Queue the TRBs, even if they are zero-length */
|
||||||
@@ -3688,7 +3683,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3738,7 +3733,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (enqd_len + trb_buff_len > full_len)
|
if (enqd_len + trb_buff_len > full_len)
|
||||||
trb_buff_len = full_len - enqd_len;
|
trb_buff_len = full_len - enqd_len;
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ it on BCM4708 family.
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1907,6 +1907,7 @@ struct xhci_hcd {
|
@@ -1908,6 +1908,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
|
||||||
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
#define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
|
||||||
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
From 02d6fdecb9c38de19065f6bed8d5214556fd061d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ansuel Smith <ansuelsmth@gmail.com>
|
|
||||||
Date: Thu, 4 Nov 2021 16:00:40 +0100
|
|
||||||
Subject: regmap: allow to define reg_update_bits for no bus configuration
|
|
||||||
|
|
||||||
Some device requires a special handling for reg_update_bits and can't use
|
|
||||||
the normal regmap read write logic. An example is when locking is
|
|
||||||
handled by the device and rmw operations requires to do atomic operations.
|
|
||||||
Allow to declare a dedicated function in regmap_config for
|
|
||||||
reg_update_bits in no bus configuration.
|
|
||||||
|
|
||||||
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
|
||||||
Link: https://lore.kernel.org/r/20211104150040.1260-1-ansuelsmth@gmail.com
|
|
||||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
||||||
---
|
|
||||||
drivers/base/regmap/regmap.c | 1 +
|
|
||||||
include/linux/regmap.h | 7 +++++++
|
|
||||||
2 files changed, 8 insertions(+)
|
|
||||||
|
|
||||||
--- a/drivers/base/regmap/regmap.c
|
|
||||||
+++ b/drivers/base/regmap/regmap.c
|
|
||||||
@@ -877,6 +877,7 @@ struct regmap *__regmap_init(struct devi
|
|
||||||
if (!bus) {
|
|
||||||
map->reg_read = config->reg_read;
|
|
||||||
map->reg_write = config->reg_write;
|
|
||||||
+ map->reg_update_bits = config->reg_update_bits;
|
|
||||||
|
|
||||||
map->defer_caching = false;
|
|
||||||
goto skip_format_initialization;
|
|
||||||
--- a/include/linux/regmap.h
|
|
||||||
+++ b/include/linux/regmap.h
|
|
||||||
@@ -290,6 +290,11 @@ typedef void (*regmap_unlock)(void *);
|
|
||||||
* read operation on a bus such as SPI, I2C, etc. Most of the
|
|
||||||
* devices do not need this.
|
|
||||||
* @reg_write: Same as above for writing.
|
|
||||||
+ * @reg_update_bits: Optional callback that if filled will be used to perform
|
|
||||||
+ * all the update_bits(rmw) operation. Should only be provided
|
|
||||||
+ * if the function require special handling with lock and reg
|
|
||||||
+ * handling and the operation cannot be represented as a simple
|
|
||||||
+ * update_bits operation on a bus such as SPI, I2C, etc.
|
|
||||||
* @fast_io: Register IO is fast. Use a spinlock instead of a mutex
|
|
||||||
* to perform locking. This field is ignored if custom lock/unlock
|
|
||||||
* functions are used (see fields lock/unlock of struct regmap_config).
|
|
||||||
@@ -372,6 +377,8 @@ struct regmap_config {
|
|
||||||
|
|
||||||
int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
|
|
||||||
int (*reg_write)(void *context, unsigned int reg, unsigned int val);
|
|
||||||
+ int (*reg_update_bits)(void *context, unsigned int reg,
|
|
||||||
+ unsigned int mask, unsigned int val);
|
|
||||||
|
|
||||||
bool fast_io;
|
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8);
|
map->format.val_bytes = DIV_ROUND_UP(config->val_bits, 8);
|
||||||
map->format.buf_size = DIV_ROUND_UP(config->reg_bits +
|
map->format.buf_size = DIV_ROUND_UP(config->reg_bits +
|
||||||
config->val_bits + config->pad_bits, 8);
|
config->val_bits + config->pad_bits, 8);
|
||||||
@@ -1737,6 +1738,7 @@ static int _regmap_raw_write_impl(struct
|
@@ -1750,6 +1751,7 @@ static int _regmap_raw_write_impl(struct
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
map->format.format_reg(map->work_buf, reg, map->reg_shift);
|
map->format.format_reg(map->work_buf, reg, map->reg_shift);
|
||||||
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
|
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
|
||||||
map->write_flag_mask);
|
map->write_flag_mask);
|
||||||
@@ -1907,6 +1909,7 @@ static int _regmap_bus_formatted_write(v
|
@@ -1920,6 +1922,7 @@ static int _regmap_bus_formatted_write(v
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
map->format.format_write(map, reg, val);
|
map->format.format_write(map, reg, val);
|
||||||
|
|
||||||
trace_regmap_hw_write_start(map, reg, 1);
|
trace_regmap_hw_write_start(map, reg, 1);
|
||||||
@@ -2348,6 +2351,7 @@ static int _regmap_raw_multi_reg_write(s
|
@@ -2360,6 +2363,7 @@ static int _regmap_raw_multi_reg_write(s
|
||||||
unsigned int reg = regs[i].reg;
|
unsigned int reg = regs[i].reg;
|
||||||
unsigned int val = regs[i].def;
|
unsigned int val = regs[i].def;
|
||||||
trace_regmap_hw_write_start(map, reg, 1);
|
trace_regmap_hw_write_start(map, reg, 1);
|
||||||
@@ -61,7 +61,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
map->format.format_reg(u8, reg, map->reg_shift);
|
map->format.format_reg(u8, reg, map->reg_shift);
|
||||||
u8 += reg_bytes + pad_bytes;
|
u8 += reg_bytes + pad_bytes;
|
||||||
map->format.format_val(u8, val, 0);
|
map->format.format_val(u8, val, 0);
|
||||||
@@ -2675,6 +2679,7 @@ static int _regmap_raw_read(struct regma
|
@@ -2685,6 +2689,7 @@ static int _regmap_raw_read(struct regma
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
* @pad_bits: Number of bits of padding between register and value.
|
* @pad_bits: Number of bits of padding between register and value.
|
||||||
* @val_bits: Number of bits in a register value, mandatory.
|
* @val_bits: Number of bits in a register value, mandatory.
|
||||||
*
|
*
|
||||||
@@ -360,6 +362,7 @@ struct regmap_config {
|
@@ -366,6 +368,7 @@ struct regmap_config {
|
||||||
|
|
||||||
int reg_bits;
|
int reg_bits;
|
||||||
int reg_stride;
|
int reg_stride;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8);
|
map->format.reg_bytes = DIV_ROUND_UP(config->reg_bits, 8);
|
||||||
map->format.pad_bytes = config->pad_bits / 8;
|
map->format.pad_bytes = config->pad_bits / 8;
|
||||||
map->format.reg_downshift = config->reg_downshift;
|
map->format.reg_downshift = config->reg_downshift;
|
||||||
@@ -1738,6 +1740,7 @@ static int _regmap_raw_write_impl(struct
|
@@ -1751,6 +1753,7 @@ static int _regmap_raw_write_impl(struct
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
reg >>= map->format.reg_downshift;
|
reg >>= map->format.reg_downshift;
|
||||||
map->format.format_reg(map->work_buf, reg, map->reg_shift);
|
map->format.format_reg(map->work_buf, reg, map->reg_shift);
|
||||||
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
|
regmap_set_work_buf_flag_mask(map, map->format.reg_bytes,
|
||||||
@@ -1909,6 +1912,7 @@ static int _regmap_bus_formatted_write(v
|
@@ -1922,6 +1925,7 @@ static int _regmap_bus_formatted_write(v
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
reg >>= map->format.reg_downshift;
|
reg >>= map->format.reg_downshift;
|
||||||
map->format.format_write(map, reg, val);
|
map->format.format_write(map, reg, val);
|
||||||
|
|
||||||
@@ -2351,6 +2355,7 @@ static int _regmap_raw_multi_reg_write(s
|
@@ -2363,6 +2367,7 @@ static int _regmap_raw_multi_reg_write(s
|
||||||
unsigned int reg = regs[i].reg;
|
unsigned int reg = regs[i].reg;
|
||||||
unsigned int val = regs[i].def;
|
unsigned int val = regs[i].def;
|
||||||
trace_regmap_hw_write_start(map, reg, 1);
|
trace_regmap_hw_write_start(map, reg, 1);
|
||||||
@@ -66,7 +66,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
reg >>= map->format.reg_downshift;
|
reg >>= map->format.reg_downshift;
|
||||||
map->format.format_reg(u8, reg, map->reg_shift);
|
map->format.format_reg(u8, reg, map->reg_shift);
|
||||||
u8 += reg_bytes + pad_bytes;
|
u8 += reg_bytes + pad_bytes;
|
||||||
@@ -2679,6 +2684,7 @@ static int _regmap_raw_read(struct regma
|
@@ -2689,6 +2694,7 @@ static int _regmap_raw_read(struct regma
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
* @pad_bits: Number of bits of padding between register and value.
|
* @pad_bits: Number of bits of padding between register and value.
|
||||||
* @val_bits: Number of bits in a register value, mandatory.
|
* @val_bits: Number of bits in a register value, mandatory.
|
||||||
*
|
*
|
||||||
@@ -363,6 +365,7 @@ struct regmap_config {
|
@@ -369,6 +371,7 @@ struct regmap_config {
|
||||||
int reg_bits;
|
int reg_bits;
|
||||||
int reg_stride;
|
int reg_stride;
|
||||||
int reg_downshift;
|
int reg_downshift;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/base/regmap/regmap.c
|
--- a/drivers/base/regmap/regmap.c
|
||||||
+++ b/drivers/base/regmap/regmap.c
|
+++ b/drivers/base/regmap/regmap.c
|
||||||
@@ -1931,6 +1931,8 @@ static int _regmap_bus_reg_write(void *c
|
@@ -1943,6 +1943,8 @@ static int _regmap_bus_reg_write(void *c
|
||||||
{
|
{
|
||||||
struct regmap *map = context;
|
struct regmap *map = context;
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
return map->bus->reg_write(map->bus_context, reg, val);
|
return map->bus->reg_write(map->bus_context, reg, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2705,6 +2707,8 @@ static int _regmap_bus_reg_read(void *co
|
@@ -2715,6 +2717,8 @@ static int _regmap_bus_reg_read(void *co
|
||||||
{
|
{
|
||||||
struct regmap *map = context;
|
struct regmap *map = context;
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
|||||||
return map->bus->reg_read(map->bus_context, reg, val);
|
return map->bus->reg_read(map->bus_context, reg, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3080,6 +3084,8 @@ static int _regmap_update_bits(struct re
|
@@ -3084,6 +3088,8 @@ static int _regmap_update_bits(struct re
|
||||||
*change = false;
|
*change = false;
|
||||||
|
|
||||||
if (regmap_volatile(map, reg) && map->reg_update_bits) {
|
if (regmap_volatile(map, reg) && map->reg_update_bits) {
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/property.h>
|
#include <linux/property.h>
|
||||||
@@ -3360,3 +3361,5 @@ static int __init regmap_initcall(void)
|
@@ -3364,3 +3365,5 @@ static int __init regmap_initcall(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
postcore_initcall(regmap_initcall);
|
postcore_initcall(regmap_initcall);
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
cfg->fc_flags |= RTF_REJECT;
|
cfg->fc_flags |= RTF_REJECT;
|
||||||
|
|
||||||
if (rtm->rtm_type == RTN_LOCAL)
|
if (rtm->rtm_type == RTN_LOCAL)
|
||||||
@@ -6298,6 +6329,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -6291,6 +6322,8 @@ static int ip6_route_dev_notify(struct n
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(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->dst.dev = dev;
|
||||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||||
#endif
|
#endif
|
||||||
@@ -6309,6 +6342,7 @@ static int ip6_route_dev_notify(struct n
|
@@ -6302,6 +6335,7 @@ static int ip6_route_dev_notify(struct n
|
||||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
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);
|
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -6500,6 +6534,8 @@ static int __net_init ip6_route_net_init
|
@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
net->ipv6.fib6_has_custom_rules = false;
|
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,
|
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
@@ -6510,11 +6546,21 @@ static int __net_init ip6_route_net_init
|
@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
|
||||||
ip6_template_metrics, true);
|
ip6_template_metrics, true);
|
||||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
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;
|
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||||
ip6_template_metrics, true);
|
ip6_template_metrics, true);
|
||||||
@@ -6541,6 +6587,8 @@ out:
|
@@ -6534,6 +6580,8 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||||||
out_ip6_prohibit_entry:
|
out_ip6_prohibit_entry:
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
kfree(net->ipv6.ip6_prohibit_entry);
|
||||||
out_ip6_null_entry:
|
out_ip6_null_entry:
|
||||||
@@ -6560,6 +6608,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
|
||||||
kfree(net->ipv6.ip6_null_entry);
|
kfree(net->ipv6.ip6_null_entry);
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
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);
|
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||||
#endif
|
#endif
|
||||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||||
@@ -6643,6 +6692,9 @@ void __init ip6_route_init_special_entri
|
@@ -6636,6 +6685,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_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->dst.dev = init_net.loopback_dev;
|
||||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
|||||||
|
|
||||||
stmmac_hw_teardown(dev);
|
stmmac_hw_teardown(dev);
|
||||||
init_error:
|
init_error:
|
||||||
@@ -3960,7 +3953,7 @@ static int stmmac_release(struct net_dev
|
@@ -3962,7 +3955,7 @@ static int stmmac_release(struct net_dev
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@@ -116,7 +116,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
|||||||
|
|
||||||
netif_tx_disable(dev);
|
netif_tx_disable(dev);
|
||||||
|
|
||||||
@@ -6635,7 +6628,7 @@ void stmmac_xdp_release(struct net_devic
|
@@ -6637,7 +6630,7 @@ void stmmac_xdp_release(struct net_devic
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@@ -125,7 +125,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
|||||||
|
|
||||||
/* Free the IRQ lines */
|
/* Free the IRQ lines */
|
||||||
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
||||||
@@ -6730,8 +6723,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6732,8 +6725,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
stmmac_set_tx_tail_ptr(priv, priv->ioaddr,
|
stmmac_set_tx_tail_ptr(priv, priv->ioaddr,
|
||||||
tx_q->tx_tail_addr, chan);
|
tx_q->tx_tail_addr, chan);
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Enable the MAC Rx/Tx */
|
/* Enable the MAC Rx/Tx */
|
||||||
@@ -6754,7 +6746,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6756,7 +6748,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
|
|
||||||
irq_error:
|
irq_error:
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@@ -144,7 +144,7 @@ Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
|
|||||||
|
|
||||||
stmmac_hw_teardown(dev);
|
stmmac_hw_teardown(dev);
|
||||||
init_error:
|
init_error:
|
||||||
@@ -7481,7 +7473,7 @@ int stmmac_suspend(struct device *dev)
|
@@ -7483,7 +7475,7 @@ int stmmac_suspend(struct device *dev)
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
|
|||||||
Reference in New Issue
Block a user