Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2021-12-14 01:10:37 +08:00
commit b38ee6f170
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
150 changed files with 1611 additions and 1658 deletions

View File

@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
LINUX_VERSION-5.4 = .158
LINUX_VERSION-5.4 = .163
LINUX_KERNEL_HASH-5.4.158 = 6e018fecdc8fc24553756e582d83b82d65b10a6b03ef36262a24911f839b8d59
LINUX_KERNEL_HASH-5.4.163 = 6246fe1776d83039d71f74eb839f38ebdec23e1b37a7bf76f3bce13cbf0290be
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))

View File

@ -2,13 +2,13 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=bcm63xx-cfe
PKG_RELEASE:=2
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://github.com/openwrt/bcm63xx-cfe.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2021-03-05
PKG_SOURCE_VERSION:=d03501629fc8b1ba8f9b0961d543c256a3d0098f
PKG_MIRROR_HASH:=b32a6f68d59c8f4534def7ec2568ad7da7a612a605b9406328309c78115ee88d
PKG_SOURCE_DATE:=2021-06-22
PKG_SOURCE_VERSION:=e5050f37150b34deb547b50feccd0e7439cb5bd7
PKG_MIRROR_HASH:=85fed9f4bdf23cf7d33a02f549ffe9073666890f786d5ffa484c0368552b75ae
PKG_FLAGS:=nonshared

View File

@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
PKG_VERSION:=5.10.68-1
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.10.68/
PKG_HASH:=bba161b0084590c677a84b80993709e388a3c478f29ed0c475d4fce1b9162968

View File

@ -0,0 +1,28 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Thu, 2 Dec 2021 13:30:05 +0100
Subject: [PATCH] mac80211: send ADDBA requests using the tid/queue of the
aggregation session
Sending them out on a different queue can cause a race condition where a
number of packets in the queue may be discarded by the receiver, because
the ADDBA request is sent too early.
This affects any driver with software A-MPDU setup which does not allocate
packet seqno in hardware on tx, regardless of whether iTXQ is used or not.
The only driver I've seen that explicitly deals with this issue internally
is mwl8k.
Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -106,7 +106,7 @@ static void ieee80211_send_addba_request
mgmt->u.action.u.addba_req.start_seq_num =
cpu_to_le16(start_seq_num << 4);
- ieee80211_tx_skb(sdata, skb);
+ ieee80211_tx_skb_tid(sdata, skb, tid);
}
void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn)

View File

@ -0,0 +1,79 @@
From: Johannes Berg <johannes.berg@intel.com>
Date: Mon, 29 Nov 2021 15:32:47 +0200
Subject: [PATCH] mac80211: agg-tx: don't schedule_and_wake_txq() under
sta->lock
When we call ieee80211_agg_start_txq(), that will in turn call
schedule_and_wake_txq(). Called from ieee80211_stop_tx_ba_cb()
this is done under sta->lock, which leads to certain circular
lock dependencies, as reported by Chris Murphy:
https://lore.kernel.org/r/CAJCQCtSXJ5qA4bqSPY=oLRMbv-irihVvP7A2uGutEbXQVkoNaw@mail.gmail.com
In general, ieee80211_agg_start_txq() is usually not called
with sta->lock held, only in this one place. But it's always
called with sta->ampdu_mlme.mtx held, and that's therefore
clearly sufficient.
Change ieee80211_stop_tx_ba_cb() to also call it without the
sta->lock held, by factoring it out of ieee80211_remove_tid_tx()
(which is only called in this one place).
This breaks the locking chain and makes it less likely that
we'll have similar locking chain problems in the future.
Reported-by: Chris Murphy <lists@colorremedies.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
---
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -9,7 +9,7 @@
* Copyright 2007, Michael Wu <flamingice@sourmilk.net>
* Copyright 2007-2010, Intel Corporation
* Copyright(c) 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018 - 2020 Intel Corporation
+ * Copyright (C) 2018 - 2021 Intel Corporation
*/
#include <linux/ieee80211.h>
@@ -213,6 +213,8 @@ ieee80211_agg_start_txq(struct sta_info
struct ieee80211_txq *txq = sta->sta.txq[tid];
struct txq_info *txqi;
+ lockdep_assert_held(&sta->ampdu_mlme.mtx);
+
if (!txq)
return;
@@ -290,7 +292,6 @@ static void ieee80211_remove_tid_tx(stru
ieee80211_assign_tid_tx(sta, tid, NULL);
ieee80211_agg_splice_finish(sta->sdata, tid);
- ieee80211_agg_start_txq(sta, tid, false);
kfree_rcu(tid_tx, rcu_head);
}
@@ -889,6 +890,7 @@ void ieee80211_stop_tx_ba_cb(struct sta_
{
struct ieee80211_sub_if_data *sdata = sta->sdata;
bool send_delba = false;
+ bool start_txq = false;
ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n",
sta->sta.addr, tid);
@@ -906,10 +908,14 @@ void ieee80211_stop_tx_ba_cb(struct sta_
send_delba = true;
ieee80211_remove_tid_tx(sta, tid);
+ start_txq = true;
unlock_sta:
spin_unlock_bh(&sta->lock);
+ if (start_txq)
+ ieee80211_agg_start_txq(sta, tid, false);
+
if (send_delba)
ieee80211_send_delba(sdata, sta->sta.addr, tid,
WLAN_BACK_INITIATOR, WLAN_REASON_QSTA_NOT_USE);

View File

@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2021-11-23
PKG_SOURCE_VERSION:=99225b985cbcab4707589f1fa313436f4bf1e368
PKG_MIRROR_HASH:=6444c7d49d778c7621b03f0f201ce41f6dc9ac00dedb29c66478360b4fd60492
PKG_SOURCE_DATE:=2021-12-03
PKG_SOURCE_VERSION:=678071ef70297b7264661c356ddb3c8cf7f3c87b
PKG_MIRROR_HASH:=b1f8613f7c65ca6a893f83ed9efc3f7ce72b9b4904fd11b89264f57f4f2a3b5e
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0

View File

@ -3,7 +3,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bcm4908img
PKG_RELEASE:=1
PKG_RELEASE:=3
PKG_FLAGS:=nonshared

View File

@ -77,13 +77,14 @@ struct bcm4908img_tail {
* 4. padding firmware
* 5. rootfs
* 6. BCM4908 tail
* 7. (Optional) vendor tail
*/
struct bcm4908img_info {
size_t file_size;
size_t cferom_offset;
size_t bootfs_offset;
size_t padding_offset;
size_t rootfs_offset;
size_t tail_offset;
uint32_t crc32; /* Calculated checksum */
struct bcm4908img_tail tail;
};
@ -219,7 +220,7 @@ static int bcm4908img_calc_crc32(FILE *fp, struct bcm4908img_info *info) {
fseek(fp, info->cferom_offset, SEEK_SET);
info->crc32 = 0xffffffff;
length = info->file_size - info->cferom_offset - sizeof(struct bcm4908img_tail);
length = info->tail_offset - info->cferom_offset;
while (length && (bytes = fread(buf, 1, bcm4908img_min(sizeof(buf), length), fp)) > 0) {
info->crc32 = bcm4908img_crc32(info->crc32, buf, bytes);
length -= bytes;
@ -249,6 +250,16 @@ struct chk_header {
char board_id[0];
};
struct linksys_tail {
char magic[9];
uint8_t version[8];
char model[15];
uint32_t crc32;
uint8_t padding[9];
uint8_t signature[16];
uint8_t reserved[192];
};
static bool bcm4908img_is_all_ff(const void *buf, size_t length)
{
const uint8_t *in = buf;
@ -264,9 +275,11 @@ static bool bcm4908img_is_all_ff(const void *buf, size_t length)
static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
struct bcm4908img_tail *tail = &info->tail;
struct linksys_tail *linksys;
struct chk_header *chk;
struct stat st;
uint8_t buf[1024];
size_t file_size;
uint16_t tmp16;
size_t length;
size_t bytes;
@ -281,7 +294,9 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
fprintf(stderr, "Failed to fstat: %d\n", err);
return err;
}
info->file_size = st.st_size;
file_size = st.st_size;
info->tail_offset = file_size - sizeof(*tail);
/* Vendor formats */
@ -294,10 +309,20 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
if (be32_to_cpu(chk->magic) == 0x2a23245e)
info->cferom_offset = be32_to_cpu(chk->header_len);
fseek(fp, -sizeof(buf), SEEK_END);
if (fread(buf, 1, sizeof(buf), fp) != sizeof(buf)) {
fprintf(stderr, "Failed to read file header\n");
return -EIO;
}
linksys = (void *)(buf + sizeof(buf) - sizeof(*linksys));
if (!memcmp(linksys->magic, ".LINKSYS.", sizeof(linksys->magic))) {
info->tail_offset -= sizeof(*linksys);
}
/* Offsets */
for (info->bootfs_offset = info->cferom_offset;
info->bootfs_offset < info->file_size;
info->bootfs_offset < info->tail_offset;
info->bootfs_offset += 0x20000) {
if (fseek(fp, info->bootfs_offset, SEEK_SET)) {
err = -errno;
@ -311,13 +336,13 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
if (be16_to_cpu(tmp16) == 0x8519)
break;
}
if (info->bootfs_offset >= info->file_size) {
if (info->bootfs_offset >= info->tail_offset) {
fprintf(stderr, "Failed to find bootfs offset\n");
return -EPROTO;
}
for (info->rootfs_offset = info->bootfs_offset;
info->rootfs_offset < info->file_size;
info->rootfs_offset < info->tail_offset;
info->rootfs_offset += 0x20000) {
uint32_t *magic = (uint32_t *)&buf[0];
@ -340,7 +365,7 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
if (be32_to_cpu(*magic) == UBI_EC_HDR_MAGIC)
break;
}
if (info->rootfs_offset >= info->file_size) {
if (info->rootfs_offset >= info->tail_offset) {
fprintf(stderr, "Failed to find rootfs offset\n");
return -EPROTO;
}
@ -351,7 +376,7 @@ static int bcm4908img_parse(FILE *fp, struct bcm4908img_info *info) {
fseek(fp, info->cferom_offset, SEEK_SET);
info->crc32 = 0xffffffff;
length = info->file_size - info->cferom_offset - sizeof(*tail);
length = info->tail_offset - info->cferom_offset;
while (length && (bytes = fread(buf, 1, bcm4908img_min(sizeof(buf), length), fp)) > 0) {
info->crc32 = bcm4908img_crc32(info->crc32, buf, bytes);
length -= bytes;
@ -617,10 +642,10 @@ static int bcm4908img_extract(int argc, char **argv) {
length = (info.padding_offset ? info.padding_offset : info.rootfs_offset) - offset;
} else if (!strcmp(type, "rootfs")) {
offset = info.rootfs_offset;
length = info.file_size - offset - sizeof(struct bcm4908img_tail);
length = info.tail_offset - offset;
} else if (!strcmp(type, "firmware")) {
offset = info.bootfs_offset;
length = info.file_size - offset - sizeof(struct bcm4908img_tail);
length = info.tail_offset - offset;
} else {
err = -EINVAL;
fprintf(stderr, "Unsupported extract type: %s\n", type);

View File

@ -5,14 +5,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
PKG_VERSION:=1.33.1
PKG_VERSION:=1.33.2
PKG_RELEASE:=$(AUTORELEASE)
PKG_FLAGS:=essential
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.busybox.net/downloads \
http://sources.buildroot.net
PKG_HASH:=12cec6bd2b16d8a9446dd16130f2b92982f1819f6e1c5f5887b6db03f5660d28
PKG_HASH:=6843ba7977081e735fa0fdb05893e3c002c8c5ad7c9c80da206e603cc0ac47e7
PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
PKG_BUILD_PARALLEL:=1

View File

@ -10,7 +10,11 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=otrx
PKG_RELEASE:=1
PKG_FLAGS:=nonshared
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
PKG_SOURCE_DATE:=2021-12-02
PKG_SOURCE_VERSION:=56e8e19151743c923f48604c457850cf8eb52076
PKG_MIRROR_HASH:=2a40ac73e8eab0a7a4474cb331b8e2fc972635314b0b5e02a9f2b9a32c5d5f3b
include $(INCLUDE_DIR)/package.mk
@ -26,10 +30,12 @@ define Package/otrx/description
This package contains an utility that allows validating TRX images.
endef
TARGET_CFLAGS += -Wall
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS) -Wall"
$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \
-o $(PKG_BUILD_DIR)/otrx \
$(PKG_BUILD_DIR)/src/otrx.c
endef
define Package/otrx/install

View File

@ -1,7 +0,0 @@
all: otrx
otrx:
$(CC) $(CFLAGS) -o $@ otrx.c -Wall
clean:
rm -f otrx

View File

@ -1,592 +0,0 @@
/*
* otrx
*
* Copyright (C) 2015-2017 Rafał Miłecki <zajec5@gmail.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*/
#include <byteswap.h>
#include <endian.h>
#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#if !defined(__BYTE_ORDER)
#error "Unknown byte order"
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
#define cpu_to_le32(x) bswap_32(x)
#define le32_to_cpu(x) bswap_32(x)
#elif __BYTE_ORDER == __LITTLE_ENDIAN
#define cpu_to_le32(x) (x)
#define le32_to_cpu(x) (x)
#else
#error "Unsupported endianness"
#endif
#define TRX_MAGIC 0x30524448
#define TRX_FLAGS_OFFSET 12
#define TRX_MAX_PARTS 3
struct trx_header {
uint32_t magic;
uint32_t length;
uint32_t crc32;
uint16_t flags;
uint16_t version;
uint32_t offset[3];
};
char *trx_path;
size_t trx_offset = 0;
char *partition[TRX_MAX_PARTS] = {};
static inline size_t otrx_min(size_t x, size_t y) {
return x < y ? x : y;
}
/**************************************************
* CRC32
**************************************************/
static const uint32_t crc32_tbl[] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
};
uint32_t otrx_crc32(uint32_t crc, uint8_t *buf, size_t len) {
while (len) {
crc = crc32_tbl[(crc ^ *buf) & 0xff] ^ (crc >> 8);
buf++;
len--;
}
return crc;
}
/**************************************************
* Check
**************************************************/
static void otrx_check_parse_options(int argc, char **argv) {
int c;
while ((c = getopt(argc, argv, "o:")) != -1) {
switch (c) {
case 'o':
trx_offset = atoi(optarg);
break;
}
}
}
static int otrx_check(int argc, char **argv) {
FILE *trx;
struct trx_header hdr;
size_t bytes, length;
uint8_t buf[1024];
uint32_t crc32;
int err = 0;
if (argc < 3) {
fprintf(stderr, "No TRX file passed\n");
err = -EINVAL;
goto out;
}
trx_path = argv[2];
optind = 3;
otrx_check_parse_options(argc, argv);
trx = fopen(trx_path, "r");
if (!trx) {
fprintf(stderr, "Couldn't open %s\n", trx_path);
err = -EACCES;
goto out;
}
fseek(trx, trx_offset, SEEK_SET);
bytes = fread(&hdr, 1, sizeof(hdr), trx);
if (bytes != sizeof(hdr)) {
fprintf(stderr, "Couldn't read %s header\n", trx_path);
err = -EIO;
goto err_close;
}
if (le32_to_cpu(hdr.magic) != TRX_MAGIC) {
fprintf(stderr, "Invalid TRX magic: 0x%08x\n", le32_to_cpu(hdr.magic));
err = -EINVAL;
goto err_close;
}
length = le32_to_cpu(hdr.length);
if (length < sizeof(hdr)) {
fprintf(stderr, "Length read from TRX too low (%zu B)\n", length);
err = -EINVAL;
goto err_close;
}
crc32 = 0xffffffff;
fseek(trx, trx_offset + TRX_FLAGS_OFFSET, SEEK_SET);
length -= TRX_FLAGS_OFFSET;
while ((bytes = fread(buf, 1, otrx_min(sizeof(buf), length), trx)) > 0) {
crc32 = otrx_crc32(crc32, buf, bytes);
length -= bytes;
}
if (length) {
fprintf(stderr, "Couldn't read last %zd B of data from %s\n", length, trx_path);
err = -EIO;
goto err_close;
}
if (crc32 != le32_to_cpu(hdr.crc32)) {
fprintf(stderr, "Invalid data crc32: 0x%08x instead of 0x%08x\n", crc32, le32_to_cpu(hdr.crc32));
err = -EINVAL;
goto err_close;
}
printf("Found a valid TRX version %d\n", le32_to_cpu(hdr.version));
err_close:
fclose(trx);
out:
return err;
}
/**************************************************
* Create
**************************************************/
static ssize_t otrx_create_append_file(FILE *trx, const char *in_path) {
FILE *in;
size_t bytes;
ssize_t length = 0;
uint8_t buf[1024];
in = fopen(in_path, "r");
if (!in) {
fprintf(stderr, "Couldn't open %s\n", in_path);
return -EACCES;
}
while ((bytes = fread(buf, 1, sizeof(buf), in)) > 0) {
if (fwrite(buf, 1, bytes, trx) != bytes) {
fprintf(stderr, "Couldn't write %zu B to %s\n", bytes, trx_path);
length = -EIO;
break;
}
length += bytes;
}
fclose(in);
return length;
}
static ssize_t otrx_create_append_zeros(FILE *trx, size_t length) {
uint8_t *buf;
buf = malloc(length);
if (!buf)
return -ENOMEM;
memset(buf, 0, length);
if (fwrite(buf, 1, length, trx) != length) {
fprintf(stderr, "Couldn't write %zu B to %s\n", length, trx_path);
free(buf);
return -EIO;
}
free(buf);
return length;
}
static ssize_t otrx_create_align(FILE *trx, size_t curr_offset, size_t alignment) {
if (curr_offset & (alignment - 1)) {
size_t length = alignment - (curr_offset % alignment);
return otrx_create_append_zeros(trx, length);
}
return 0;
}
static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) {
size_t bytes, length;
uint8_t buf[1024];
uint32_t crc32;
hdr->magic = cpu_to_le32(TRX_MAGIC);
hdr->version = 1;
fseek(trx, 0, SEEK_SET);
bytes = fwrite(hdr, 1, sizeof(struct trx_header), trx);
if (bytes != sizeof(struct trx_header)) {
fprintf(stderr, "Couldn't write TRX header to %s\n", trx_path);
return -EIO;
}
length = le32_to_cpu(hdr->length);
crc32 = 0xffffffff;
fseek(trx, TRX_FLAGS_OFFSET, SEEK_SET);
length -= TRX_FLAGS_OFFSET;
while ((bytes = fread(buf, 1, otrx_min(sizeof(buf), length), trx)) > 0) {
crc32 = otrx_crc32(crc32, buf, bytes);
length -= bytes;
}
hdr->crc32 = cpu_to_le32(crc32);
fseek(trx, 0, SEEK_SET);
bytes = fwrite(hdr, 1, sizeof(struct trx_header), trx);
if (bytes != sizeof(struct trx_header)) {
fprintf(stderr, "Couldn't write TRX header to %s\n", trx_path);
return -EIO;
}
return 0;
}
static int otrx_create(int argc, char **argv) {
FILE *trx;
struct trx_header hdr = {};
ssize_t sbytes;
size_t curr_idx = 0;
size_t curr_offset = sizeof(hdr);
int c;
int err = 0;
if (argc < 3) {
fprintf(stderr, "No TRX file passed\n");
err = -EINVAL;
goto out;
}
trx_path = argv[2];
trx = fopen(trx_path, "w+");
if (!trx) {
fprintf(stderr, "Couldn't open %s\n", trx_path);
err = -EACCES;
goto out;
}
fseek(trx, curr_offset, SEEK_SET);
optind = 3;
while ((c = getopt(argc, argv, "f:A:a:b:")) != -1) {
switch (c) {
case 'f':
if (curr_idx >= TRX_MAX_PARTS) {
err = -ENOSPC;
fprintf(stderr, "Reached TRX partitions limit, no place for %s\n", optarg);
goto err_close;
}
sbytes = otrx_create_append_file(trx, optarg);
if (sbytes < 0) {
fprintf(stderr, "Failed to append file %s\n", optarg);
} else {
hdr.offset[curr_idx++] = curr_offset;
curr_offset += sbytes;
}
sbytes = otrx_create_align(trx, curr_offset, 4);
if (sbytes < 0)
fprintf(stderr, "Failed to append zeros\n");
else
curr_offset += sbytes;
break;
case 'A':
sbytes = otrx_create_append_file(trx, optarg);
if (sbytes < 0) {
fprintf(stderr, "Failed to append file %s\n", optarg);
} else {
curr_offset += sbytes;
}
sbytes = otrx_create_align(trx, curr_offset, 4);
if (sbytes < 0)
fprintf(stderr, "Failed to append zeros\n");
else
curr_offset += sbytes;
break;
case 'a':
sbytes = otrx_create_align(trx, curr_offset, strtol(optarg, NULL, 0));
if (sbytes < 0)
fprintf(stderr, "Failed to append zeros\n");
else
curr_offset += sbytes;
break;
case 'b':
sbytes = strtol(optarg, NULL, 0) - curr_offset;
if (sbytes < 0) {
fprintf(stderr, "Current TRX length is 0x%zx, can't pad it with zeros to 0x%lx\n", curr_offset, strtol(optarg, NULL, 0));
} else {
sbytes = otrx_create_append_zeros(trx, sbytes);
if (sbytes < 0)
fprintf(stderr, "Failed to append zeros\n");
else
curr_offset += sbytes;
}
break;
}
if (err)
break;
}
sbytes = otrx_create_align(trx, curr_offset, 0x1000);
if (sbytes < 0)
fprintf(stderr, "Failed to append zeros\n");
else
curr_offset += sbytes;
hdr.length = curr_offset;
otrx_create_write_hdr(trx, &hdr);
err_close:
fclose(trx);
out:
return err;
}
/**************************************************
* Extract
**************************************************/
static void otrx_extract_parse_options(int argc, char **argv) {
int c;
while ((c = getopt(argc, argv, "c:e:o:1:2:3:")) != -1) {
switch (c) {
case 'o':
trx_offset = atoi(optarg);
break;
case '1':
partition[0] = optarg;
break;
case '2':
partition[1] = optarg;
break;
case '3':
partition[2] = optarg;
break;
}
}
}
static int otrx_extract_copy(FILE *trx, size_t offset, size_t length, char *out_path) {
FILE *out;
size_t bytes;
uint8_t *buf;
int err = 0;
out = fopen(out_path, "w");
if (!out) {
fprintf(stderr, "Couldn't open %s\n", out_path);
err = -EACCES;
goto out;
}
buf = malloc(length);
if (!buf) {
fprintf(stderr, "Couldn't alloc %zu B buffer\n", length);
err = -ENOMEM;
goto err_close;
}
fseek(trx, offset, SEEK_SET);
bytes = fread(buf, 1, length, trx);
if (bytes != length) {
fprintf(stderr, "Couldn't read %zu B of data from %s\n", length, trx_path);
err = -ENOMEM;
goto err_free_buf;
};
bytes = fwrite(buf, 1, length, out);
if (bytes != length) {
fprintf(stderr, "Couldn't write %zu B to %s\n", length, out_path);
err = -ENOMEM;
goto err_free_buf;
}
printf("Extracted 0x%zx bytes into %s\n", length, out_path);
err_free_buf:
free(buf);
err_close:
fclose(out);
out:
return err;
}
static int otrx_extract(int argc, char **argv) {
FILE *trx;
struct trx_header hdr;
size_t bytes;
int i;
int err = 0;
if (argc < 3) {
fprintf(stderr, "No TRX file passed\n");
err = -EINVAL;
goto out;
}
trx_path = argv[2];
optind = 3;
otrx_extract_parse_options(argc, argv);
trx = fopen(trx_path, "r");
if (!trx) {
fprintf(stderr, "Couldn't open %s\n", trx_path);
err = -EACCES;
goto out;
}
fseek(trx, trx_offset, SEEK_SET);
bytes = fread(&hdr, 1, sizeof(hdr), trx);
if (bytes != sizeof(hdr)) {
fprintf(stderr, "Couldn't read %s header\n", trx_path);
err = -EIO;
goto err_close;
}
if (le32_to_cpu(hdr.magic) != TRX_MAGIC) {
fprintf(stderr, "Invalid TRX magic: 0x%08x\n", le32_to_cpu(hdr.magic));
err = -EINVAL;
goto err_close;
}
for (i = 0; i < TRX_MAX_PARTS; i++) {
size_t length;
if (!partition[i])
continue;
if (!hdr.offset[i]) {
printf("TRX doesn't contain partition %d, can't extract %s\n", i + 1, partition[i]);
continue;
}
if (i + 1 >= TRX_MAX_PARTS || !hdr.offset[i + 1])
length = le32_to_cpu(hdr.length) - le32_to_cpu(hdr.offset[i]);
else
length = le32_to_cpu(hdr.offset[i + 1]) - le32_to_cpu(hdr.offset[i]);
otrx_extract_copy(trx, trx_offset + le32_to_cpu(hdr.offset[i]), length, partition[i]);
}
err_close:
fclose(trx);
out:
return err;
}
/**************************************************
* Start
**************************************************/
static void usage() {
printf("Usage:\n");
printf("\n");
printf("Checking TRX file:\n");
printf("\totrx check <file> [options]\tcheck if file is a valid TRX\n");
printf("\t-o offset\t\t\toffset of TRX data in file (default: 0)\n");
printf("\n");
printf("Creating new TRX file:\n");
printf("\totrx create <file> [options] [partitions]\n");
printf("\t-f file\t\t\t\t[partition] start new partition with content copied from file\n");
printf("\t-A file\t\t\t\t[partition] append current partition with content copied from file\n");
printf("\t-a alignment\t\t\t[partition] align current partition\n");
printf("\t-b offset\t\t\t[partition] append zeros to partition till reaching absolute offset\n");
printf("\n");
printf("Extracting from TRX file:\n");
printf("\totrx extract <file> [options]\textract partitions from TRX file\n");
printf("\t-o offset\t\t\toffset of TRX data in file (default: 0)\n");
printf("\t-1 file\t\t\t\tfile to extract 1st partition to (optional)\n");
printf("\t-2 file\t\t\t\tfile to extract 2nd partition to (optional)\n");
printf("\t-3 file\t\t\t\tfile to extract 3rd partition to (optional)\n");
}
int main(int argc, char **argv) {
if (argc > 1) {
if (!strcmp(argv[1], "check"))
return otrx_check(argc, argv);
else if (!strcmp(argv[1], "create"))
return otrx_create(argc, argv);
else if (!strcmp(argv[1], "extract"))
return otrx_extract(argc, argv);
}
usage();
return 0;
}

View File

@ -48,7 +48,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
#include "xhci.h"
#include "xhci-trace.h"
@@ -65,6 +67,44 @@
@@ -72,6 +74,44 @@
#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142
#define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242
@ -93,7 +93,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
static const char hcd_name[] = "xhci_hcd";
static struct hc_driver __read_mostly xhci_pci_hc_driver;
@@ -311,6 +351,873 @@ static void xhci_pme_acpi_rtd3_enable(st
@@ -327,6 +367,873 @@ static void xhci_pme_acpi_rtd3_enable(st
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
@ -967,7 +967,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
@@ -352,6 +1259,27 @@ static int xhci_pci_probe(struct pci_dev
@@ -368,6 +1275,27 @@ static int xhci_pci_probe(struct pci_dev
struct hc_driver *driver;
struct usb_hcd *hcd;
@ -995,7 +995,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
driver = (struct hc_driver *)id->driver_data;
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
@@ -413,6 +1341,16 @@ static void xhci_pci_remove(struct pci_d
@@ -429,6 +1357,16 @@ static void xhci_pci_remove(struct pci_d
{
struct xhci_hcd *xhci;
@ -1012,7 +1012,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
xhci = hcd_to_xhci(pci_get_drvdata(dev));
xhci->xhc_state |= XHCI_STATE_REMOVING;
@@ -552,6 +1490,11 @@ static int xhci_pci_resume(struct usb_hc
@@ -568,6 +1506,11 @@ static int xhci_pci_resume(struct usb_hc
if (pdev->vendor == PCI_VENDOR_ID_INTEL)
usb_enable_intel_xhci_ports(pdev);

View File

@ -13,7 +13,7 @@ produce a noisy warning.
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -290,6 +290,7 @@ static void xhci_pci_quirks(struct devic
@@ -297,6 +297,7 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x0015) {
xhci->quirks |= XHCI_RESET_ON_RESUME;
xhci->quirks |= XHCI_ZERO_64B_REGS;

View File

@ -0,0 +1,177 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca956x.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
model = "Xiaomi AIoT AC2350";
compatible = "xiaomi,aiot-ac2350", "qca,qca9563";
aliases {
label-mac-device = &eth0;
led-boot = &led_system_orange;
led-failsafe = &led_system_orange;
led-running = &led_system_blue;
led-upgrade = &led_system_orange;
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
};
};
leds {
compatible = "gpio-leds";
led_system_blue: system_blue {
label = "blue:system";
gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
};
led_system_orange: system_orange {
label = "orange:system";
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
};
wan_blue {
label = "blue:wan";
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
};
wan_orange {
label = "orange:wan";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
};
gpio-export {
compatible = "gpio-export";
wps {
gpio-export,name = "wps";
gpio-export,output = <0>;
gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
};
usb-reset {
gpio-export,name = "usb-reset";
gpio-export,output = <0>;
gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
};
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Bootloader";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "Nvram";
reg = <0x30000 0x10000>;
};
partition@40000 {
label = "Bdata";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
label = "crash";
reg = <0x50000 0x10000>;
read-only;
};
art: partition@60000 {
label = "art";
reg = <0x60000 0x10000>;
read-only;
};
partition@70000 {
label = "cfg_bak";
reg = <0x70000 0x20000>;
read-only;
};
partition@90000 {
label = "overlay";
reg = <0x90000 0x170000>;
read-only;
};
partition@200000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x200000 0xe00000>;
};
};
};
};
&mdio0 {
status = "okay";
phy-mask = <0x1>;
phy0: ethernet-phy@0 {
reg = <0>;
phy-mode = "sgmii";
qca,ar8327-initvals = <
0x04 0x00000080 /* PORT0 PAD MODE CTRL */
0x08 0x01000000 /* PORT5 PAD MODE CTRL */
0x0c 0x00000000 /* PORT6 PAD MODE CTRL */
0x10 0x602613a0 /* POWER_ON_STRAP */
0x50 0xcf35cf35 /* LED_CTRL0 */
0x54 0xca35ca35 /* LED_CTRL1 */
0x58 0xc935c935 /* LED_CTRL2 */
0x5c 0x03ffff00 /* LED_CTRL3 */
0x7c 0x000000fe /* PORT0_STATUS */
0x94 0x000010c2 /* PORT6_STATUS */
0xe0 0xc74164de /* SGMII_CTRL */
>;
};
};
&eth0 {
status = "okay";
phy-mode = "sgmii";
phy-handle = <&phy0>;
mtd-mac-address = <&art 0x0>;
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
};
&pcie {
status = "okay";
};

View File

@ -407,6 +407,9 @@ wd,mynet-wifi-rangeextender)
ucidef_set_led_rssi "rssimedium" "RSSIMED" "blue:rssi-med" "wlan0" "33" "100"
ucidef_set_led_rssi "rssihigh" "RSSIMAX" "blue:rssi-max" "wlan0" "66" "100"
;;
xiaomi,aiot-ac2350)
ucidef_set_led_switch "wan" "WAN" "blue:wan" "switch0" "0x02"
;;
xwrt,csac)
ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wlan5g" "phy1tpt"
ucidef_set_led_wlan "wlan2g" "WLAN2G" "blue:wlan2g" "phy0tpt"

View File

@ -311,7 +311,8 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:wan"
;;
nec,wg800hp)
nec,wg800hp|\
xiaomi,aiot-ac2350)
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:lan" "4:lan" "1:wan"
;;
@ -664,6 +665,9 @@ ath79_setup_macs()
wd,mynet-wifi-rangeextender)
lan_mac=$(nvram get et0macaddr)
;;
xiaomi,aiot-ac2350)
lan_mac=$(mtd_get_mac_binary art 0x1002)
;;
xwrt,csac)
wan_mac=$(mtd_get_mac_binary art 0)
lan_mac=$(macaddr_add "$wan_mac" 1)

View File

@ -243,6 +243,11 @@ case "$FIRMWARE" in
caldata_extract "art" 0x5000 0x2f20
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary info 0x8) +1)
;;
xiaomi,aiot-ac2350)
caldata_extract "art" 0x5000 0x2f20
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
/lib/firmware/ath10k/QCA9984/hw1.0/board.bin
;;
xwrt,csac|\
yuncore,a782|\
yuncore,xd4200)

View File

@ -2230,6 +2230,15 @@ define Device/winchannel_wb2000
endef
TARGET_DEVICES += winchannel_wb2000
define Device/xiaomi_aiot-ac2350
SOC := qca9563
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := AIoT AC2350
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9984-ct
IMAGE_SIZE := 14336k
endef
TARGET_DEVICES += xiaomi_aiot-ac2350
define Device/xiaomi_mi-router-4q
SOC := qca9561
DEVICE_VENDOR := Xiaomi

View File

@ -754,7 +754,7 @@
ptr = ip6hoff + sizeof(struct ipv6hdr);
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -274,8 +274,10 @@ static inline bool neigh_key_eq128(const
@@ -275,8 +275,10 @@ static inline bool neigh_key_eq128(const
const u32 *n32 = (const u32 *)n->primary_key;
const u32 *p32 = pkey;

View File

@ -1,54 +0,0 @@
From 4d3c17975c7814884a721fe693b3adf5c426d759 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Tue, 10 Nov 2015 22:18:39 +0100
Subject: [RFC] serial: core: add support for boot console with arbitrary
baud rates
The Arduino Yun uses a baud rate of 250000 by default. The serial is
going over the Atmel ATmega and is used to connect to this chip.
Without this patch Linux wants to switch the console to 9600 Baud.
With this patch Linux will use the configured baud rate and not a
default one specified in uart_register_driver().
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
[rebased to 4.14, slightly reworded commit message]
Signed-off-by: Sungbo Eo <mans0n@gorani.run>
---
drivers/tty/serial/serial_core.c | 6 +++++-
include/linux/console.h | 1 +
2 files changed, 6 insertions(+), 1 deletions(-)
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -220,6 +220,8 @@ static int uart_port_startup(struct tty_
if (retval == 0) {
if (uart_console(uport) && uport->cons->cflag) {
tty->termios.c_cflag = uport->cons->cflag;
+ tty->termios.c_ospeed = uport->cons->baud;
+ tty->termios.c_ispeed = uport->cons->baud;
uport->cons->cflag = 0;
}
/*
@@ -2110,8 +2112,10 @@ uart_set_options(struct uart_port *port,
* Allow the setting of the UART parameters with a NULL console
* too:
*/
- if (co)
+ if (co) {
co->cflag = termios.c_cflag;
+ co->baud = baud;
+ }
return 0;
}
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -153,6 +153,7 @@ struct console {
short flags;
short index;
int cflag;
+ int baud;
void *data;
struct console *next;
};

View File

@ -1040,7 +1040,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5369,7 +5369,7 @@ static void port_event(struct usb_hub *h
@@ -5379,7 +5379,7 @@ static void port_event(struct usb_hub *h
port_dev->over_current_count++;
port_over_current_notify(port_dev);

View File

@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -5721,6 +5721,9 @@ int __init cgroup_init_early(void)
@@ -5744,6 +5744,9 @@ int __init cgroup_init_early(void)
return 0;
}
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
/**
* cgroup_init - cgroup initialization
*
@@ -5759,6 +5762,12 @@ int __init cgroup_init(void)
@@ -5782,6 +5785,12 @@ int __init cgroup_init(void)
mutex_unlock(&cgroup_mutex);
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
@@ -6168,6 +6177,10 @@ static int __init cgroup_disable(char *s
@@ -6191,6 +6200,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
@ -51,7 +51,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
@@ -6177,6 +6190,31 @@ static int __init cgroup_disable(char *s
@@ -6200,6 +6213,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);

View File

@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -259,6 +259,10 @@ static void xhci_pci_quirks(struct devic
@@ -266,6 +266,10 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x3432)
xhci->quirks |= XHCI_BROKEN_STREAMS;

View File

@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -260,8 +260,10 @@ static void xhci_pci_quirks(struct devic
@@ -267,8 +267,10 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_BROKEN_STREAMS;
if (pdev->vendor == PCI_VENDOR_ID_VIA &&

View File

@ -82,7 +82,7 @@ Cc: linux-rockchip@lists.infradead.org
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
@@ -1176,7 +1176,8 @@ static int advk_pcie_probe(struct platfo
@@ -1523,7 +1523,8 @@ static int advk_pcie_probe(struct platfo
return ret;
}
@ -402,7 +402,7 @@ Cc: linux-rockchip@lists.infradead.org
}
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2279,6 +2279,7 @@ struct irq_domain;
@@ -2281,6 +2281,7 @@ struct irq_domain;
struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
int pci_parse_request_of_pci_ranges(struct device *dev,
struct list_head *resources,
@ -410,7 +410,7 @@ Cc: linux-rockchip@lists.infradead.org
struct resource **bus_range);
/* Arch may override this (weak) */
@@ -2287,9 +2288,11 @@ struct device_node *pcibios_get_phb_of_n
@@ -2289,9 +2290,11 @@ struct device_node *pcibios_get_phb_of_n
#else /* CONFIG_OF */
static inline struct irq_domain *
pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }

View File

@ -838,7 +838,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
break;
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1356,6 +1356,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1374,6 +1374,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_VP8_FRAME: descr = "VP8 Frame"; break;
case V4L2_PIX_FMT_VP9: descr = "VP9"; break;
case V4L2_PIX_FMT_HEVC: descr = "HEVC"; break; /* aka H.265 */

View File

@ -278,7 +278,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
pixfmt-nv24
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1258,6 +1258,8 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1276,6 +1276,8 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_NV61M: descr = "Y/CrCb 4:2:2 (N-C)"; break;
case V4L2_PIX_FMT_NV12MT: descr = "Y/CbCr 4:2:0 (64x32 MB, N-C)"; break;
case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB, N-C)"; break;

View File

@ -22,7 +22,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
#define MAX_TUNING_LOOP 40
@@ -2768,7 +2768,7 @@ static void sdhci_timeout_timer(struct t
@@ -2780,7 +2780,7 @@ static void sdhci_timeout_timer(struct t
spin_lock_irqsave(&host->lock, flags);
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
@ -31,7 +31,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
mmc_hostname(host->mmc));
sdhci_dumpregs(host);
@@ -2790,7 +2790,7 @@ static void sdhci_timeout_data_timer(str
@@ -2802,7 +2802,7 @@ static void sdhci_timeout_data_timer(str
if (host->data || host->data_cmd ||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {

View File

@ -65,7 +65,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
+
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1332,6 +1332,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1350,6 +1350,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break;
case V4L2_META_FMT_UVC: descr = "UVC Payload Header Metadata"; break;
case V4L2_META_FMT_D4XX: descr = "Intel D4xx UVC Metadata"; break;

View File

@ -74,7 +74,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
+
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1333,6 +1333,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1351,6 +1351,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_META_FMT_UVC: descr = "UVC Payload Header Metadata"; break;
case V4L2_META_FMT_D4XX: descr = "Intel D4xx UVC Metadata"; break;
case V4L2_META_FMT_SENSOR_DATA: descr = "Sensor Ancillary Metadata"; break;

View File

@ -119,7 +119,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
unsigned int i;
int mbps, ret;
@@ -520,10 +571,18 @@ static int rcsi2_start_receiver(struct r
@@ -522,10 +573,18 @@ static int rcsi2_start_receiver(struct r
fld |= FLD_FLD_NUM(1);
}
@ -140,7 +140,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
if (mbps < 0)
return mbps;
@@ -570,7 +629,7 @@ static int rcsi2_start_receiver(struct r
@@ -572,7 +631,7 @@ static int rcsi2_start_receiver(struct r
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ);
rcsi2_write(priv, PHYCNT_REG, phycnt | PHYCNT_SHUTDOWNZ | PHYCNT_RSTZ);
@ -149,7 +149,7 @@ Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
if (ret)
return ret;
@@ -747,6 +806,7 @@ static int rcsi2_notify_bound(struct v4l
@@ -749,6 +808,7 @@ static int rcsi2_notify_bound(struct v4l
}
priv->remote = subdev;

View File

@ -125,7 +125,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
+ - R\ :sub:`33high`
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1298,6 +1298,10 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1316,6 +1316,10 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_SGBRG12P: descr = "12-bit Bayer GBGB/RGRG Packed"; break;
case V4L2_PIX_FMT_SGRBG12P: descr = "12-bit Bayer GRGR/BGBG Packed"; break;
case V4L2_PIX_FMT_SRGGB12P: descr = "12-bit Bayer RGRG/GBGB Packed"; break;

View File

@ -111,7 +111,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
pixfmt-y16
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1212,6 +1212,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1230,6 +1230,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_Y6: descr = "6-bit Greyscale"; break;
case V4L2_PIX_FMT_Y10: descr = "10-bit Greyscale"; break;
case V4L2_PIX_FMT_Y12: descr = "12-bit Greyscale"; break;

View File

@ -75,7 +75,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
pixfmt-y10p
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1217,6 +1217,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1235,6 +1235,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_Y16_BE: descr = "16-bit Greyscale BE"; break;
case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break;
case V4L2_PIX_FMT_Y10P: descr = "10-bit Greyscale (MIPI Packed)"; break;

View File

@ -84,7 +84,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
pixfmt-y16
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1218,6 +1218,7 @@ static void v4l_fill_fmtdesc(struct v4l2
@@ -1236,6 +1236,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_Y10BPACK: descr = "10-bit Greyscale (Packed)"; break;
case V4L2_PIX_FMT_Y10P: descr = "10-bit Greyscale (MIPI Packed)"; break;
case V4L2_PIX_FMT_Y12P: descr = "12-bit Greyscale (MIPI Packed)"; break;

View File

@ -94,7 +94,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
#include <video/mipi_display.h>
#include "fbtft.h"
@@ -1199,6 +1200,7 @@ static struct fbtft_platform_data *fbtft
@@ -1192,6 +1193,7 @@ static struct fbtft_platform_data *fbtft
* @display: Display properties
* @sdev: SPI device
* @pdev: Platform device
@ -102,7 +102,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
*
* Allocates, initializes and registers a framebuffer
*
@@ -1208,12 +1210,15 @@ static struct fbtft_platform_data *fbtft
@@ -1201,12 +1203,15 @@ static struct fbtft_platform_data *fbtft
*/
int fbtft_probe_common(struct fbtft_display *display,
struct spi_device *sdev,
@ -119,7 +119,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
int ret;
if (sdev)
@@ -1229,6 +1234,14 @@ int fbtft_probe_common(struct fbtft_disp
@@ -1222,6 +1227,14 @@ int fbtft_probe_common(struct fbtft_disp
pdata = fbtft_probe_dt(dev);
if (IS_ERR(pdata))
return PTR_ERR(pdata);

View File

@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -263,6 +263,7 @@ static void xhci_pci_quirks(struct devic
@@ -270,6 +270,7 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x3483) {
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;

View File

@ -41,6 +41,7 @@ CONFIG_B53=y
# CONFIG_B53_SERDES is not set
# CONFIG_B53_SRAB_DRIVER is not set
CONFIG_BCM4908_ENET=y
CONFIG_BCM7038_WDT=y
CONFIG_BCM7XXX_PHY=y
CONFIG_BCM_NET_PHYLIB=y
CONFIG_BCM_PMB=y
@ -134,6 +135,7 @@ CONFIG_MEMFD_CREATE=y
CONFIG_MFD_SYSCON=y
CONFIG_MIGRATION=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_NAND_BRCMNAND=y
CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
@ -220,6 +222,7 @@ CONFIG_UBIFS_FS_ZSTD=y
CONFIG_UNMAP_KERNEL_AT_EL0=y
CONFIG_USB_SUPPORT=y
CONFIG_VMAP_STACK=y
CONFIG_WATCHDOG_CORE=y
CONFIG_XPS=y
CONFIG_XXHASH=y
CONFIG_ZLIB_DEFLATE=y

View File

@ -5,6 +5,19 @@ include $(INCLUDE_DIR)/image.mk
DEVICE_VARS += ASUS_PRODUCTID ASUS_BUILD_NO ASUS_FW_REV ASUS_EXT_NO
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_REGION
DEVICE_VARS += PKGTB_ITS
define Image/Prepare
cp bootfs-generic.its $(KDIR)/
sed -i "s=\$$$${dts_dir}=$(DTS_DIR)=" $(KDIR)/bootfs-generic.its
endef
define Build/bootfs
cat $@ | $(STAGING_DIR_HOST)/bin/lzma e -eos -si -so > $@.tmp
mv $@.tmp $@
sed -i "s=\$${kernel}=$@=" $(KDIR)/bootfs-generic.its
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/bootfs-generic.its $(KDIR)/bootfs-generic.itb
endef
define Build/bcm4908asus
$(STAGING_DIR_HOST)/bin/bcm4908asus create -i $@ \
@ -38,6 +51,14 @@ define Build/bcm4908lzma
mv $@.new $@
endef
define Build/pkgtb
mv $@ $@.rootfs
cp $(PKGTB_ITS) $@.its
sed -i "s=\$${bootfs}=$(KDIR)/bootfs-generic.itb=" $@.its
sed -i "s=\$${rootfs}=$@.rootfs=" $@.its
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@
endef
define Device/Default
KERNEL := kernel-bin | bcm4908lzma | bcm4908kernel
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
@ -86,4 +107,20 @@ define Device/tplink_archer-c2300-v1
endef
TARGET_DEVICES += tplink_archer-c2300-v1
define Device/netgear
DEVICE_VENDOR := NETGEAR
KERNEL := kernel-bin | bootfs
IMAGES := chk
IMAGE/chk := append-rootfs | pkgtb | netgear-chk
NETGEAR_REGION := 1
endef
define Device/netgear_raxe500
DEVICE_MODEL := RAXE500
$(Device/netgear)
PKGTB_ITS := pkgtb-bcm4908.its
NETGEAR_BOARD_ID := U12H449T00_NETGEAR
endef
# TARGET_DEVICES += netgear_raxe500
$(eval $(call BuildImage))

View File

@ -0,0 +1,45 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
/ {
description = "OpenWrt bootfs image";
#address-cells = <1>;
images {
kernel {
description = "Linux kernel";
data = /incbin/("${kernel}");
type = "kernel";
os = "linux";
arch = "arm64";
compression = "lzma";
load = <0x80000>;
entry = <0x80000>;
hash-1 {
algo = "sha256";
};
};
fdt_linux_RAX220 {
description = "dtb";
data = /incbin/("${dts_dir}/broadcom/bcm4908/bcm4908-netgear-raxe500.dtb");
arch = "arm64";
type = "flat_dt";
compression = "none";
hash-1 {
algo = "sha256";
};
};
};
configurations {
conf_lx_RAX220 {
description = "BRCM 63xxx linux";
kernel = "kernel";
fdt = "fdt_linux_RAX220";
};
};
};

View File

@ -0,0 +1,43 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
/ {
description = "Broadcom image upgrade package tree binary";
#address-cells = <1>;
images {
bootfs_4908_a0+ {
description = "bootfs";
data = /incbin/("${bootfs}");
type = "multi";
compression = "none";
hash-1 {
algo = "sha256";
};
};
nand_squashfs {
description = "rootfs";
data = /incbin/("${rootfs}");
type = "filesystem";
compression = "none";
hash-1 {
algo = "sha256";
};
};
};
configurations {
default = "conf_4908_a0+_nand_squashfs";
conf_4908_a0+_nand_squashfs {
description = "Brcm Image Bundle";
bootfs = "bootfs_4908_a0+";
rootfs = "nand_squashfs";
compatible = "flash=nand;chip=4908;rev=a0+;ip=ipv6,ipv4;ddr=ddr3;fstype=squashfs";
};
};
};

View File

@ -0,0 +1,43 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
/ {
description = "Broadcom image upgrade package tree binary";
#address-cells = <1>;
images {
bootfs_4912_a0+ {
description = "bootfs";
data = /incbin/("${bootfs}");
type = "multi";
compression = "none";
hash-1 {
algo = "sha256";
};
};
nand_squashfs {
description = "rootfs";
data = /incbin/("${rootfs}");
type = "filesystem";
compression = "none";
hash-1 {
algo = "sha256";
};
};
};
configurations {
default = "conf_4912_a0+_nand_squashfs";
conf_4912_a0+_nand_squashfs {
description = "Brcm Image Bundle";
bootfs = "bootfs_4912_a0+";
rootfs = "nand_squashfs";
compatible = "flash=nand;chip=4912;rev=a0+;ip=ipv6,ipv4;ddr=ddr3,ddr4;fstype=squashfs";
};
};
};

View File

@ -0,0 +1,25 @@
From b660269cba748dfd07eb5551a88ff34d5ea0b86e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 16 Apr 2021 15:37:48 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix NAND nodes names
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This matches nand-controller.yaml requirements.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -306,7 +306,7 @@
interrupt-names = "nand";
status = "okay";
- nandcs: nandcs@0 {
+ nandcs: nand@0 {
compatible = "brcm,nandcs";
reg = <0>;
};

View File

@ -0,0 +1,27 @@
From d0ae9c944b9472c5691a482297df7a57d7fd1199 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 14:11:08 +0200
Subject: [PATCH] arm64: dts: broadcom: bcm4908: Fix NAND node name
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This matches nand-controller.yaml requirements.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -296,7 +296,7 @@
status = "okay";
};
- nand@1800 {
+ nand-controller@1800 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.1", "brcm,brcmnand";

View File

@ -0,0 +1,38 @@
From 6cf9f70255b90b540b9cbde062f18fea29024a75 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 14:26:06 +0200
Subject: [PATCH] arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes following error for every bcm4908 DTS file:
bus@ff800000: reboot: {'type': 'object'} is not allowed for {'compatible': ['syscon-reboot'], 'regmap': [[15]], 'offset': [[52]], 'mask': [[1]]}
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -326,12 +326,12 @@
#reset-cells = <1>;
};
};
+ };
- reboot {
- compatible = "syscon-reboot";
- regmap = <&timer>;
- offset = <0x34>;
- mask = <1>;
- };
+ reboot {
+ compatible = "syscon-reboot";
+ regmap = <&timer>;
+ offset = <0x34>;
+ mask = <1>;
};
};

View File

@ -0,0 +1,28 @@
From 6c38c39ab2141f53786d73e706675e8819a3f2cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 17:37:02 +0200
Subject: [PATCH] arm64: dts: broadcom: bcm4908: Fix UART clock name
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
According to the binding the correct clock name is "refclk".
Fixes: 2961f69f151c ("arm64: dts: broadcom: add BCM4908 and Asus GT-AC5300 early DTS files")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -292,7 +292,7 @@
reg = <0x640 0x18>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&periph_clk>;
- clock-names = "periph";
+ clock-names = "refclk";
status = "okay";
};

View File

@ -0,0 +1,27 @@
From 7b0c9ca7f18e8d2e2cf3c342d91f037d436777bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 5 Nov 2021 11:14:12 +0100
Subject: [PATCH] dt-bindings: arm: bcm: document Netgear RAXE500 binding
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
One more BCM4908 based device.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml | 1 +
1 file changed, 1 insertion(+)
--- a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml
@@ -29,6 +29,7 @@ properties:
items:
- enum:
- asus,gt-ac5300
+ - netgear,raxe500
- const: brcm,bcm4908
- description: BCM49408 based boards

View File

@ -0,0 +1,81 @@
From d0e68d354f345873e15876a7b35be1baaf5e3ec9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 5 Nov 2021 11:14:13 +0100
Subject: [PATCH] arm64: dts: broadcom: bcm4908: add DT for Netgear RAXE500
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It's a home router based on BCM4908 SoC. It has: 1 GiB of RAM, 512 MiB
NAND flash, 6 Ethernet ports and 3 x BCM43684 (WiFi). One of Ethernet
ports is "2.5 G Multi-Gig port" that isn't described yet (it isn't known
how it's wired up).
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm64/boot/dts/broadcom/bcm4908/Makefile | 1 +
.../bcm4908/bcm4908-netgear-raxe500.dts | 50 +++++++++++++++++++
2 files changed, 51 insertions(+)
create mode 100644 arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-netgear-raxe500.dts
--- a/arch/arm64/boot/dts/broadcom/bcm4908/Makefile
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/Makefile
@@ -2,3 +2,4 @@
dtb-$(CONFIG_ARCH_BCM4908) += bcm4906-netgear-r8000p.dtb
dtb-$(CONFIG_ARCH_BCM4908) += bcm4906-tplink-archer-c2300-v1.dtb
dtb-$(CONFIG_ARCH_BCM4908) += bcm4908-asus-gt-ac5300.dtb
+dtb-$(CONFIG_ARCH_BCM4908) += bcm4908-netgear-raxe500.dtb
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-netgear-raxe500.dts
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm4908.dtsi"
+
+/ {
+ compatible = "netgear,raxe500", "brcm,bcm4908";
+ model = "Netgear RAXE500";
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x00 0x00 0x00 0x40000000>;
+ };
+};
+
+&ehci {
+ status = "okay";
+};
+
+&ohci {
+ status = "okay";
+};
+
+&xhci {
+ status = "okay";
+};
+
+&ports {
+ port@0 {
+ label = "lan4";
+ };
+
+ port@1 {
+ label = "lan3";
+ };
+
+ port@2 {
+ label = "lan2";
+ };
+
+ port@3 {
+ label = "lan1";
+ };
+
+ port@7 {
+ reg = <7>;
+ phy-mode = "internal";
+ phy-handle = <&phy12>;
+ label = "wan";
+ };
+};

View File

@ -0,0 +1,50 @@
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Tue, 9 Nov 2021 11:39:42 +0100
Subject: [PATCH] arm64: dts: broadcom: bcm4908: add TWD block
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
BCM4908 contains TWD block that provides few functions:
1. Timers
2. Wathchdog
3. Software reset
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
.../boot/dts/broadcom/bcm4908/bcm4908.dtsi | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -273,9 +273,18 @@
#size-cells = <1>;
ranges = <0x00 0x00 0xff800000 0x3000>;
- timer: timer@400 {
- compatible = "brcm,bcm6328-timer", "syscon";
- reg = <0x400 0x3c>;
+ twd: timer-mfd@400 {
+ compatible = "brcm,bcm4908-twd", "brcm,twd", "simple-mfd", "syscon";
+ reg = <0x400 0x4c>;
+ ranges = <0x0 0x400 0x4c>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ watchdog@28 {
+ compatible = "brcm,bcm7038-wdt";
+ reg = <0x28 0x8>;
+ };
};
gpio0: gpio-controller@500 {
@@ -330,7 +339,7 @@
reboot {
compatible = "syscon-reboot";
- regmap = <&timer>;
+ regmap = <&twd>;
offset = <0x34>;
mask = <1>;
};

View File

@ -0,0 +1,25 @@
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Tue, 9 Nov 2021 11:34:28 +0100
Subject: [PATCH] watchdog: bcm7038_wdt: allow building on ARCH_BCM4908
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The same hardware block is present on BCM4908 SoCs family.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
drivers/watchdog/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -1759,7 +1759,7 @@ config BCM7038_WDT
tristate "BCM7038 Watchdog"
select WATCHDOG_CORE
depends on HAS_IOMEM
- depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
+ depends on ARCH_BCM4908 || ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
help
Watchdog driver for the built-in hardware in Broadcom 7038 and
later SoCs used in set-top boxes. BCM7038 was made public

View File

@ -47,7 +47,7 @@ bcm53xx_setup_interfaces()
;;
luxul,xwr-3150-v1)
ucidef_add_switch "switch0" \
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "5@eth0"
"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "5@eth0"
;;
phicomm,k3)
ucidef_add_switch "switch0" \

View File

@ -2,6 +2,12 @@ RAMFS_COPY_BIN='osafeloader oseama otrx truncate'
PART_NAME=firmware
BCM53XX_FW_FORMAT=
BCM53XX_FW_BOARD_ID=
BCM53XX_FW_INT_IMG_FORMAT=
BCM53XX_FW_INT_IMG_TRX_OFFSET=
BCM53XX_FW_INT_IMG_EXTRACT_CMD=
LXL_FLAGS_VENDOR_LUXUL=0x00000001
# $(1): file to read magic from
@ -30,7 +36,7 @@ platform_expected_image() {
local machine=$(board_name)
case "$machine" in
"dlink,dir-885l") echo "seama wrgac42_dlink.2015_dir885l"; return;;
"dlink,dir-885l") echo "seamaseal wrgac42_dlink.2015_dir885l"; return;;
"luxul,abr-4500-v1") echo "lxl ABR-4500"; return;;
"luxul,xap-810-v1") echo "lxl XAP-810"; return;;
"luxul,xap-1410v1") echo "lxl XAP-1410"; return;;
@ -59,169 +65,126 @@ platform_identify() {
magic=$(get_magic_long "$1")
case "$magic" in
"48445230")
echo "trx"
BCM53XX_FW_FORMAT="trx"
return
;;
"2a23245e")
echo "chk"
local header_len=$((0x$(get_magic_long_at "$1" 4)))
local board_id_len=$(($header_len - 40))
BCM53XX_FW_FORMAT="chk"
BCM53XX_FW_BOARD_ID=$(dd if="$1" skip=40 bs=1 count=$board_id_len 2>/dev/null | hexdump -v -e '1/1 "%c"')
BCM53XX_FW_INT_IMG_FORMAT="trx"
BCM53XX_FW_INT_IMG_TRX_OFFSET="$header_len"
BCM53XX_FW_INT_IMG_EXTRACT_CMD="dd skip=$header_len iflag=skip_bytes"
return
;;
"4c584c23")
echo "lxl"
local hdr_len=$(get_le_long_at "$1" 8)
local flags=$(get_le_long_at "$1" 12)
[ $((flags & LXL_FLAGS_VENDOR_LUXUL)) -gt 0 ] && notify_firmware_no_backup
BCM53XX_FW_FORMAT="lxl"
BCM53XX_FW_BOARD_ID=$(dd if="$1" skip=16 bs=1 count=16 2>/dev/null | hexdump -v -e '1/1 "%c"')
BCM53XX_FW_INT_IMG_FORMAT="trx"
BCM53XX_FW_INT_IMG_TRX_OFFSET="$hdr_len"
BCM53XX_FW_INT_IMG_EXTRACT_CMD="dd skip=$hdr_len iflag=skip_bytes"
return
;;
"5ea3a417")
echo "seama"
BCM53XX_FW_FORMAT="seamaseal"
BCM53XX_FW_BOARD_ID=$(oseama info "$1" | grep "Meta entry:.*signature=" | sed "s/.*=//")
BCM53XX_FW_INT_IMG_EXTRACT_CMD="oseama extract - -e 0"
return
;;
esac
magic=$(get_magic_long_at "$1" 14)
[ "$magic" = "55324e44" ] && {
echo "cybertan"
BCM53XX_FW_FORMAT="cybertan"
BCM53XX_FW_BOARD_ID=$(dd if="$1" bs=1 count=4 2>/dev/null | hexdump -v -e '1/1 "%c"')
BCM53XX_FW_INT_IMG_FORMAT="trx"
BCM53XX_FW_INT_IMG_TRX_OFFSET="32"
BCM53XX_FW_INT_IMG_EXTRACT_CMD="dd skip=32 iflag=skip_bytes"
return
}
magic=$(get_magic_long_at "$1" 60)
[ "$magic" = "4c584c23" ] && {
echo "lxlold"
notify_firmware_no_backup
BCM53XX_FW_FORMAT="lxlold"
BCM53XX_FW_BOARD_ID=$(dd if="$1" skip=48 bs=1 count=12 2>/dev/null | hexdump -v -e '1/1 "%c"')
BCM53XX_FW_INT_IMG_FORMAT="trx"
BCM53XX_FW_INT_IMG_TRX_OFFSET="64"
BCM53XX_FW_INT_IMG_EXTRACT_CMD="dd skip=64 iflag=skip_bytes"
return
}
if osafeloader info "$1" > /dev/null 2>&1; then
echo "safeloader"
BCM53XX_FW_FORMAT="safeloader"
return
fi
echo "unknown"
}
platform_other_check_image() {
[ "$#" -gt 1 ] && return 1
local file_type=$(platform_identify "$1")
local magic
local error=0
case "$file_type" in
"chk")
local header_len=$((0x$(get_magic_long_at "$1" 4)))
local board_id_len=$(($header_len - 40))
local board_id=$(dd if="$1" skip=40 bs=1 count=$board_id_len 2>/dev/null | hexdump -v -e '1/1 "%c"')
local dev_board_id=$(platform_expected_image)
echo "Found CHK image with device board_id $board_id"
platform_identify "$1"
[ -z "$BCM53XX_FW_FORMAT" ] && {
echo "Invalid image type. Please use firmware specific for this device."
notify_firmware_broken
return 1
}
echo "Found $BCM53XX_FW_FORMAT firmware for device $BCM53XX_FW_BOARD_ID"
[ -n "$dev_board_id" -a "chk $board_id" != "$dev_board_id" ] && {
echo "Firmware board_id doesn't match device board_id ($dev_board_id)"
error=1
}
if ! otrx check "$1" -o "$header_len"; then
echo "No valid TRX firmware in the CHK image"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
"cybertan")
local pattern=$(dd if="$1" bs=1 count=4 2>/dev/null | hexdump -v -e '1/1 "%c"')
local dev_pattern=$(platform_expected_image)
echo "Found CyberTAN image with device pattern: $pattern"
[ -n "$dev_pattern" -a "cybertan $pattern" != "$dev_pattern" ] && {
echo "Firmware pattern doesn't match device pattern ($dev_pattern)"
error=1
}
if ! otrx check "$1" -o 32; then
echo "No valid TRX firmware in the CyberTAN image"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
"lxl")
local hdr_len=$(get_le_long_at "$1" 8)
local flags=$(get_le_long_at "$1" 12)
local board=$(dd if="$1" skip=16 bs=1 count=16 2>/dev/null | hexdump -v -e '1/1 "%c"')
local dev_board=$(platform_expected_image)
echo "Found LXL image for board $board"
[ -n "$dev_board" -a "lxl $board" != "$dev_board" ] && {
echo "Firmware ($board) doesn't match device ($dev_board)"
error=1
}
[ $((flags & LXL_FLAGS_VENDOR_LUXUL)) -gt 0 ] && notify_firmware_no_backup
if ! otrx check "$1" -o "$hdr_len"; then
echo "No valid TRX firmware in the LXL image"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
"lxlold")
local board_id=$(dd if="$1" skip=48 bs=1 count=12 2>/dev/null | hexdump -v -e '1/1 "%c"')
local dev_board_id=$(platform_expected_image)
echo "Found LXL image with device board_id $board_id"
[ -n "$dev_board_id" -a "lxl $board_id" != "$dev_board_id" ] && {
echo "Firmware board_id doesn't match device board_id ($dev_board_id)"
error=1
}
notify_firmware_no_backup
if ! otrx check "$1" -o 64; then
echo "No valid TRX firmware in the Luxul image"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
"safeloader")
;;
"seama")
local img_signature=$(oseama info "$1" | grep "Meta entry:.*signature=" | sed "s/.*=//")
local dev_signature=$(platform_expected_image)
echo "Found Seama image with device signature: $img_signature"
[ -n "$dev_signature" -a "seama $img_signature" != "$dev_signature" ] && {
echo "Firmware signature doesn't match device signature ($dev_signature)"
error=1
}
local expected_image="$(platform_expected_image)"
[ -n "$expected_image" -a -n "$BCM53XX_FW_BOARD_ID" -a "$expected_image" != "$BCM53XX_FW_FORMAT $BCM53XX_FW_BOARD_ID" ] && {
echo "Firmware doesn't match device ($expected_image)"
error=1
}
case "$BCM53XX_FW_FORMAT" in
"seamaseal")
$(oseama info "$1" -e 0 | grep -q "Meta entry:.*type=firmware") || {
echo "Seama container doesn't have firmware entity"
echo "Seama seal doesn't contain firmware entity"
error=1
}
;;
;;
"trx")
local expected=$(platform_expected_image)
if ! otrx check "$1"; then
echo "Failed to find a valid TRX in firmware"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
[ "$expected" == "safeloader" ] && {
[ "$expected_image" == "safeloader" ] && {
echo "This device expects SafeLoader format and may not work with TRX"
error=1
}
if ! otrx check "$1"; then
echo "Invalid (corrupted?) TRX firmware"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
;;
*)
echo "Invalid image type. Please use firmware specific for this device."
notify_firmware_broken
error=1
;;
case "$BCM53XX_FW_INT_IMG_FORMAT" in
"trx")
# Make sure that both ways of extracting TRX work.
# platform_do_upgrade() may use any of them.
if ! otrx check "$1" -o "$BCM53XX_FW_INT_IMG_TRX_OFFSET" || \
! $BCM53XX_FW_INT_IMG_EXTRACT_CMD < $1 | otrx check -; then
echo "Invalid (corrupted?) TRX firmware"
notify_firmware_test_result "trx_valid" 0
error=1
else
notify_firmware_test_result "trx_valid" 1
fi
;;
esac
;;
esac
return $error
@ -246,8 +209,8 @@ platform_check_image() {
}
# $(1): image for upgrade (with possible extra header)
# $(2): offset of trx in image
# $(1): TRX image or firmware containing TRX
# $(2): offset of TRX in firmware (optional)
platform_do_upgrade_nand_trx() {
local dir="/tmp/sysupgrade-bcm53xx"
local trx="$1"
@ -311,15 +274,15 @@ platform_do_upgrade_nand_trx() {
nand_do_upgrade $dir/root
}
platform_do_upgrade_nand_seama() {
platform_do_upgrade_nand_seamaseal() {
local dir="/tmp/sysupgrade-bcm53xx"
local seama="$1"
local seamaseal="$1"
local tmp
# Extract Seama entity from Seama seal
rm -fR $dir
mkdir -p $dir
oseama extract "$seama" \
oseama extract "$seamaseal" \
-e 0 \
-o $dir/seama.entity
[ $? -ne 0 ] && {
@ -358,26 +321,6 @@ platform_do_upgrade_nand_seama() {
nand_do_upgrade $dir/root.ubi
}
platform_trx_from_chk_cmd() {
local header_len=$((0x$(get_magic_long_at "$1" 4)))
echo -n dd skip=$header_len iflag=skip_bytes
}
platform_trx_from_cybertan_cmd() {
echo -n dd skip=32 iflag=skip_bytes
}
platform_trx_from_lxl_cmd() {
local hdr_len=$(get_le_long_at "$1" 8)
echo -n dd skip=$hdr_len iflag=skip_bytes
}
platform_trx_from_lxlold_cmd() {
echo -n dd bs=64 skip=1
}
platform_img_from_safeloader() {
local dir="/tmp/sysupgrade-bcm53xx"
@ -396,35 +339,28 @@ platform_img_from_safeloader() {
echo -n $dir/os-image
}
platform_img_from_seama() {
local dir="/tmp/sysupgrade-bcm53xx"
local offset=$(oseama info "$1" -e 0 | grep "Entity offset:" | sed "s/.*:\s*//")
local size=$(oseama info "$1" -e 0 | grep "Entity size:" | sed "s/.*:\s*//")
# Busybox doesn't support required iflag-s
# echo -n dd iflag=skip_bytes,count_bytes skip=$offset count=$size
rm -fR $dir
mkdir -p $dir
dd if="$1" of=$dir/image-noheader.bin bs=$offset skip=1
dd if=$dir/image-noheader.bin of=$dir/image-entity.bin bs=$size count=1
echo -n $dir/image-entity.bin
}
platform_other_do_upgrade() {
local file_type=$(platform_identify "$1")
local trx="$1"
local cmd=
platform_identify "$1"
[ "$(platform_flash_type)" == "nand" ] && {
case "$file_type" in
"chk") platform_do_upgrade_nand_trx "$1" $((0x$(get_magic_long_at "$1" 4)));;
"cybertan") platform_do_upgrade_nand_trx "$1" 32;;
"lxl") platform_do_upgrade_nand_trx "$1" $(get_le_long_at "$1" 8);;
"lxlold") platform_do_upgrade_nand_trx "$1" 64;;
"seama") platform_do_upgrade_nand_seama "$1";;
"trx") platform_do_upgrade_nand_trx "$1";;
# Try NAND-aware upgrade
case "$BCM53XX_FW_FORMAT" in
"seamaseal")
platform_do_upgrade_nand_seamaseal "$1"
;;
"trx")
platform_do_upgrade_nand_trx "$1"
;;
*)
case "$BCM53XX_FW_INT_IMG_FORMAT" in
"trx")
platform_do_upgrade_nand_trx "$1" "$BCM53XX_FW_INT_IMG_TRX_OFFSET"
;;
*)
echo "NAND aware sysupgrade is unsupported for $BCM53XX_FW_FORMAT format"
;;
esac
;;
esac
# Above calls exit on success.
@ -432,16 +368,26 @@ platform_other_do_upgrade() {
echo "Writing whole image to NAND flash. All erase counters will be lost."
}
case "$file_type" in
"chk") cmd=$(platform_trx_from_chk_cmd "$trx");;
"cybertan") cmd=$(platform_trx_from_cybertan_cmd "$trx");;
"lxl") cmd=$(platform_trx_from_lxl_cmd "$trx");;
"lxlold") cmd=$(platform_trx_from_lxlold_cmd "$trx");;
"safeloader") trx=$(platform_img_from_safeloader "$trx"); PART_NAME=os-image;;
"seama") trx=$(platform_img_from_seama "$trx");;
case "$BCM53XX_FW_FORMAT" in
"safeloader")
PART_NAME=os-image
img=$(platform_img_from_safeloader "$1")
default_do_upgrade "$img"
;;
"seamaseal")
default_do_upgrade "$1" "$BCM53XX_FW_INT_IMG_EXTRACT_CMD"
;;
"trx")
default_do_upgrade "$1"
;;
*)
case "$BCM53XX_FW_INT_IMG_FORMAT" in
"trx")
default_do_upgrade "$1" "$BCM53XX_FW_INT_IMG_EXTRACT_CMD"
;;
esac
;;
esac
default_do_upgrade "$trx" "$cmd"
}
platform_do_upgrade() {

View File

@ -242,13 +242,11 @@ define Device/dlink_dir-885l
endef
TARGET_DEVICES += dlink_dir-885l
# Linksys devices are disabled due to problem with 2 TRX partitions
define Device/linksys_ea6300-v1
DEVICE_VENDOR := Linksys
DEVICE_MODEL := EA6300
DEVICE_VARIANT := v1
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
BROKEN := y
endef
TARGET_DEVICES += linksys_ea6300-v1
@ -265,7 +263,6 @@ define Device/linksys_ea9200
DEVICE_MODEL := EA9200
DEVICE_VARIANT := v1
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
BROKEN := y
endef
TARGET_DEVICES += linksys_ea9200

View File

@ -16,7 +16,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -350,6 +350,14 @@
@@ -352,6 +352,14 @@
};
};
@ -31,7 +31,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
mdio: mdio@18003000 {
compatible = "brcm,iproc-mdio";
reg = <0x18003000 0x8>;
@@ -417,12 +425,12 @@
@@ -419,12 +427,12 @@
function = "spi";
};

View File

@ -12,7 +12,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -392,6 +392,15 @@
@@ -394,6 +394,15 @@
reg = <0x18105000 0x1000>;
};

View File

@ -13,7 +13,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -252,6 +252,10 @@
@@ -254,6 +254,10 @@
reg = <0x00013000 0x1000>;
};

View File

@ -20,7 +20,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -265,7 +265,7 @@
@@ -267,7 +267,7 @@
interrupt-parent = <&gic>;
@ -29,7 +29,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
#usb-cells = <0>;
compatible = "generic-ehci";
@@ -287,7 +287,7 @@
@@ -289,7 +289,7 @@
};
};

View File

@ -18,7 +18,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -318,7 +318,7 @@
@@ -320,7 +320,7 @@
interrupt-parent = <&gic>;

View File

@ -38,7 +38,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
};
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -428,7 +428,7 @@
@@ -430,7 +430,7 @@
#address-cells = <1>;
#size-cells = <1>;

View File

@ -21,7 +21,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -482,7 +482,7 @@
@@ -484,7 +484,7 @@
#thermal-sensor-cells = <0>;
};

View File

@ -71,7 +71,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+};
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -483,7 +483,7 @@
@@ -485,7 +485,7 @@
};
srab: ethernet-switch@18007000 {

View File

@ -155,7 +155,7 @@ Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
label = "lan4";
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -489,6 +489,10 @@
@@ -491,6 +491,10 @@
status = "disabled";
/* ports are defined in board DTS */

View File

@ -0,0 +1,77 @@
From b660269cba748dfd07eb5551a88ff34d5ea0b86e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Fri, 16 Apr 2021 15:37:48 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix NAND nodes names
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This matches nand-controller.yaml requirements.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
--- a/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
+++ b/arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
@@ -24,8 +24,8 @@
reg = <0x00000000 0x08000000>;
};
- nand: nand@18028000 {
- nandcs@0 {
+ nand_controller: nand-controller@18028000 {
+ nand@0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
@@ -25,8 +25,8 @@
<0x88000000 0x08000000>;
};
- nand: nand@18028000 {
- nandcs@0 {
+ nand_controller: nand-controller@18028000 {
+ nand@0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
--- a/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi
+++ b/arch/arm/boot/dts/bcm5301x-nand-cs0.dtsi
@@ -6,8 +6,8 @@
*/
/ {
- nand@18028000 {
- nandcs: nandcs@0 {
+ nand-controller@18028000 {
+ nandcs: nand@0 {
compatible = "brcm,nandcs";
reg = <0>;
#address-cells = <1>;
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -502,7 +502,7 @@
reg = <0x18004000 0x14>;
};
- nand: nand@18028000 {
+ nand_controller: nand-controller@18028000 {
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1", "brcm,brcmnand";
reg = <0x18028000 0x600>, <0x1811a408 0x600>, <0x18028f00 0x20>;
reg-names = "nand", "iproc-idm", "iproc-ext";
--- a/arch/arm/boot/dts/bcm953012k.dts
+++ b/arch/arm/boot/dts/bcm953012k.dts
@@ -49,8 +49,8 @@
};
};
-&nand {
- nandcs@0 {
+&nand_controller {
+ nand@0 {
compatible = "brcm,nandcs";
reg = <0>;
nand-on-flash-bbt;

View File

@ -0,0 +1,52 @@
From bb95d7d440fefd104c593d9cb20da6d34a474e97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Wed, 21 Apr 2021 11:00:06 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix pinmux subnodes names
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This matches pinmux-node.yaml requirements.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm/boot/dts/bcm47094.dtsi | 2 +-
arch/arm/boot/dts/bcm5301x.dtsi | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
--- a/arch/arm/boot/dts/bcm47094.dtsi
+++ b/arch/arm/boot/dts/bcm47094.dtsi
@@ -11,7 +11,7 @@
&pinctrl {
compatible = "brcm,bcm4709-pinmux";
- pinmux_mdio: mdio {
+ pinmux_mdio: mdio-pins {
groups = "mdio_grp";
function = "mdio";
};
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -440,18 +440,18 @@
function = "spi";
};
- pinmux_i2c: i2c {
+ pinmux_i2c: i2c-pins {
groups = "i2c_grp";
function = "i2c";
};
- pinmux_pwm: pwm {
+ pinmux_pwm: pwm-pins {
groups = "pwm0_grp", "pwm1_grp",
"pwm2_grp", "pwm3_grp";
function = "pwm";
};
- pinmux_uart1: uart1 {
+ pinmux_uart1: uart1-pins {
groups = "uart1_grp";
function = "uart1";
};

View File

@ -0,0 +1,70 @@
From 0e89c0d8e8edece7f8e4607841ca6651885d23b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 08:57:00 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix nodes names
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes following errors for all BCM5301X dts files:
chipcommonA@18000000: $nodename:0: 'chipcommonA@18000000' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
mpcore@19000000: $nodename:0: 'mpcore@19000000' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
mdio-bus-mux@18003000: $nodename:0: 'mdio-bus-mux@18003000' does not match '^mdio-mux[\\-@]?'
dmu@1800c000: $nodename:0: 'dmu@1800c000' does not match '^([a-z][a-z0-9\\-]+-bus|bus|soc|axi|ahb|apb)(@[0-9a-f]+)?$'
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm/boot/dts/bcm47094-linksys-panamera.dts | 2 +-
arch/arm/boot/dts/bcm5301x.dtsi | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
@@ -129,7 +129,7 @@
};
};
- mdio-bus-mux@18003000 {
+ mdio-mux@18003000 {
/* BIT(9) = 1 => external mdio */
mdio@200 {
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -19,7 +19,7 @@
#size-cells = <1>;
interrupt-parent = <&gic>;
- chipcommonA@18000000 {
+ chipcommon-a-bus@18000000 {
compatible = "simple-bus";
ranges = <0x00000000 0x18000000 0x00001000>;
#address-cells = <1>;
@@ -44,7 +44,7 @@
};
};
- mpcore@19000000 {
+ mpcore-bus@19000000 {
compatible = "simple-bus";
ranges = <0x00000000 0x19000000 0x00023000>;
#address-cells = <1>;
@@ -371,7 +371,7 @@
#address-cells = <1>;
};
- mdio-bus-mux@18003000 {
+ mdio-mux@18003000 {
compatible = "mdio-mux-mmioreg";
mdio-parent-bus = <&mdio>;
#address-cells = <1>;
@@ -417,7 +417,7 @@
status = "disabled";
};
- dmu@1800c000 {
+ dmu-bus@1800c000 {
compatible = "simple-bus";
ranges = <0 0x1800c000 0x1000>;
#address-cells = <1>;

View File

@ -0,0 +1,28 @@
From 75a5646c26895c4cfadc8d54aa53ac5455947895 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 08:57:01 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix MDIO mux binding
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes following error for all BCM5301X dts files:
mdio-bus-mux@18003000: compatible: ['mdio-mux-mmioreg'] is too short
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm/boot/dts/bcm5301x.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -372,7 +372,7 @@
};
mdio-mux@18003000 {
- compatible = "mdio-mux-mmioreg";
+ compatible = "mdio-mux-mmioreg", "mdio-mux";
mdio-parent-bus = <&mdio>;
#address-cells = <1>;
#size-cells = <0>;

View File

@ -0,0 +1,158 @@
From def3d0357e0539e6f6b82f079ff156def6ec2107 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 19 Aug 2021 08:57:02 +0200
Subject: [PATCH] ARM: dts: BCM5301X: Fix memory nodes names
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Thix fixes:
arch/arm/boot/dts/bcm4708-netgear-r6250.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 134217728]]}
arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 134217728]]}
arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 402653184]]}
arch/arm/boot/dts/bcm4709-linksys-ea9200.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 134217728]]}
arch/arm/boot/dts/bcm4709-netgear-r7000.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 134217728]]}
arch/arm/boot/dts/bcm4709-netgear-r8000.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 134217728]]}
arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728]]}
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728], [2281701376, 402653184]]}
arch/arm/boot/dts/bcm53016-meraki-mr32.dt.yaml: /: memory: False schema does not allow {'reg': [[0, 134217728]], 'device_type': ['memory']}
arch/arm/boot/dts/bcm94708.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728]]}
arch/arm/boot/dts/bcm94709.dt.yaml: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 134217728]]}
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
arch/arm/boot/dts/bcm4708-netgear-r6250.dts | 2 +-
arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 2 +-
arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | 2 +-
arch/arm/boot/dts/bcm4709-linksys-ea9200.dts | 2 +-
arch/arm/boot/dts/bcm4709-netgear-r7000.dts | 2 +-
arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 2 +-
arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | 2 +-
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts | 2 +-
arch/arm/boot/dts/bcm53016-meraki-mr32.dts | 2 +-
arch/arm/boot/dts/bcm94708.dts | 2 +-
arch/arm/boot/dts/bcm94709.dts | 2 +-
11 files changed, 11 insertions(+), 11 deletions(-)
--- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
+++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts
@@ -20,7 +20,7 @@
bootargs = "console=ttyS0,115200 earlycon";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
--- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
+++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
@@ -19,7 +19,7 @@
bootargs = "console=ttyS0,115200";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
--- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
+++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
@@ -19,7 +19,7 @@
bootargs = "console=ttyS0,115200";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x18000000>;
--- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
+++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
@@ -16,7 +16,7 @@
bootargs = "console=ttyS0,115200";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
--- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
+++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts
@@ -19,7 +19,7 @@
bootargs = "console=ttyS0,115200";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
--- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
+++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts
@@ -30,7 +30,7 @@
bootargs = "console=ttyS0,115200";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
--- a/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
+++ b/arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
@@ -15,7 +15,7 @@
bootargs = "console=ttyS0,115200 earlycon";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>;
};
--- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
@@ -16,7 +16,7 @@
bootargs = "earlycon";
};
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>,
<0x88000000 0x18000000>;
--- a/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
@@ -20,7 +20,7 @@
bootargs = " console=ttyS0,115200n8 earlycon";
};
- memory {
+ memory@0 {
reg = <0x00000000 0x08000000>;
device_type = "memory";
};
--- a/arch/arm/boot/dts/bcm94708.dts
+++ b/arch/arm/boot/dts/bcm94708.dts
@@ -38,7 +38,7 @@
model = "NorthStar SVK (BCM94708)";
compatible = "brcm,bcm94708", "brcm,bcm4708";
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>;
};
--- a/arch/arm/boot/dts/bcm94709.dts
+++ b/arch/arm/boot/dts/bcm94709.dts
@@ -38,7 +38,7 @@
model = "NorthStar SVK (BCM94709)";
compatible = "brcm,bcm94709", "brcm,bcm4709", "brcm,bcm4708";
- memory {
+ memory@0 {
device_type = "memory";
reg = <0x00000000 0x08000000>;
};

View File

@ -9,7 +9,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -422,16 +422,12 @@
@@ -424,16 +424,12 @@
#size-cells = <1>;
cru@100 {

View File

@ -113,4 +113,4 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+ bootargs = "console=ttyS0,115200 earlycon";
};
memory {
memory@0 {

View File

@ -21,7 +21,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -678,6 +678,10 @@ int ehci_setup(struct usb_hcd *hcd)
@@ -687,6 +687,10 @@ int ehci_setup(struct usb_hcd *hcd)
/* cache this readonly data; minimize chip reads */
ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);

View File

@ -107,7 +107,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
}
static struct clk clk_pcie = {
@@ -536,6 +550,21 @@ static struct clk_lookup bcm6368_clks[]
@@ -542,6 +556,21 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT(NULL, "ipsec", &clk_ipsec),
};
@ -129,7 +129,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
#define HSSPI_PLL_HZ_6328 133333333
#define HSSPI_PLL_HZ_6362 400000000
@@ -568,6 +597,10 @@ static int __init bcm63xx_clk_init(void)
@@ -574,6 +603,10 @@ static int __init bcm63xx_clk_init(void)
case BCM6368_CPU_ID:
clkdev_add_table(bcm6368_clks, ARRAY_SIZE(bcm6368_clks));
break;

View File

@ -57,7 +57,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
mask = CKCTL_6328_HSSPI_EN;
else if (BCMCPU_IS_6362())
mask = CKCTL_6362_HSSPI_EN;
@@ -444,6 +446,19 @@ static struct clk_lookup bcm3368_clks[]
@@ -450,6 +452,19 @@ static struct clk_lookup bcm3368_clks[]
CLKDEV_INIT("bcm63xx_enet.1", "enet", &clk_enet1),
};
@ -77,7 +77,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
static struct clk_lookup bcm6328_clks[] = {
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
@@ -565,6 +580,7 @@ static struct clk_lookup bcm63268_clks[]
@@ -571,6 +586,7 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT(NULL, "pcie", &clk_pcie),
};
@ -85,7 +85,7 @@ Subject: [PATCH 51/53] MIPS: BCM63XX: add support for BCM6318
#define HSSPI_PLL_HZ_6328 133333333
#define HSSPI_PLL_HZ_6362 400000000
@@ -574,6 +590,10 @@ static int __init bcm63xx_clk_init(void)
@@ -580,6 +596,10 @@ static int __init bcm63xx_clk_init(void)
case BCM3368_CPU_ID:
clkdev_add_table(bcm3368_clks, ARRAY_SIZE(bcm3368_clks));
break;

View File

@ -9,7 +9,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
--- a/arch/mips/bcm63xx/clk.c
+++ b/arch/mips/bcm63xx/clk.c
@@ -489,6 +489,8 @@ static struct clk_lookup bcm3368_clks[]
@@ -495,6 +495,8 @@ static struct clk_lookup bcm3368_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@ -18,7 +18,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
@@ -505,7 +507,9 @@ static struct clk_lookup bcm6318_clks[]
@@ -511,7 +513,9 @@ static struct clk_lookup bcm6318_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@ -28,7 +28,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
@@ -519,7 +523,10 @@ static struct clk_lookup bcm6328_clks[]
@@ -525,7 +529,10 @@ static struct clk_lookup bcm6328_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@ -39,7 +39,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
@@ -532,6 +539,7 @@ static struct clk_lookup bcm6338_clks[]
@@ -538,6 +545,7 @@ static struct clk_lookup bcm6338_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@ -47,7 +47,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
@@ -546,6 +554,7 @@ static struct clk_lookup bcm6345_clks[]
@@ -552,6 +560,7 @@ static struct clk_lookup bcm6345_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@ -55,7 +55,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
@@ -560,6 +569,7 @@ static struct clk_lookup bcm6348_clks[]
@@ -566,6 +575,7 @@ static struct clk_lookup bcm6348_clks[]
/* fixed rate clocks */
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
@ -63,7 +63,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
@@ -576,6 +586,8 @@ static struct clk_lookup bcm6358_clks[]
@@ -582,6 +592,8 @@ static struct clk_lookup bcm6358_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@ -72,7 +72,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enet0", &clk_enet0),
CLKDEV_INIT(NULL, "enet1", &clk_enet1),
@@ -595,7 +607,10 @@ static struct clk_lookup bcm6362_clks[]
@@ -601,7 +613,10 @@ static struct clk_lookup bcm6362_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@ -83,7 +83,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
@@ -611,6 +626,8 @@ static struct clk_lookup bcm6368_clks[]
@@ -617,6 +632,8 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),
@ -92,7 +92,7 @@ Subject: [PATCH] MIPS: BCM63XX: add clkdev lookups for device tree
/* gated clocks */
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
@@ -625,7 +642,10 @@ static struct clk_lookup bcm63268_clks[]
@@ -631,7 +648,10 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT(NULL, "periph", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.0", "refclk", &clk_periph),
CLKDEV_INIT("bcm63xx_uart.1", "refclk", &clk_periph),

View File

@ -24,7 +24,7 @@
* Internal peripheral clock
*/
static struct clk clk_periph = {
@@ -612,6 +629,7 @@ static struct clk_lookup bcm6362_clks[]
@@ -618,6 +635,7 @@ static struct clk_lookup bcm6362_clks[]
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
/* gated clocks */
@ -32,7 +32,7 @@
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
@@ -629,6 +647,7 @@ static struct clk_lookup bcm6368_clks[]
@@ -635,6 +653,7 @@ static struct clk_lookup bcm6368_clks[]
CLKDEV_INIT("10000100.serial", "refclk", &clk_periph),
CLKDEV_INIT("10000120.serial", "refclk", &clk_periph),
/* gated clocks */
@ -40,7 +40,7 @@
CLKDEV_INIT(NULL, "enetsw", &clk_enetsw),
CLKDEV_INIT(NULL, "usbh", &clk_usbh),
CLKDEV_INIT(NULL, "usbd", &clk_usbd),
@@ -647,6 +666,7 @@ static struct clk_lookup bcm63268_clks[]
@@ -653,6 +672,7 @@ static struct clk_lookup bcm63268_clks[]
CLKDEV_INIT("bcm63xx-hsspi.0", "pll", &clk_hsspi_pll),
CLKDEV_INIT("10001000.spi", "pll", &clk_hsspi_pll),
/* gated clocks */

View File

@ -66,7 +66,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5429,8 +5429,7 @@ static inline void skb_gro_reset_offset(
@@ -5432,8 +5432,7 @@ static inline void skb_gro_reset_offset(
NAPI_GRO_CB(skb)->frag0 = NULL;
NAPI_GRO_CB(skb)->frag0_len = 0;

View File

@ -68,7 +68,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
kfree(sdev->inquiry);
kfree(sdev);
@@ -883,6 +892,8 @@ static struct bin_attribute dev_attr_vpd
@@ -891,6 +900,8 @@ static struct bin_attribute dev_attr_vpd
sdev_vpd_pg_attr(pg83);
sdev_vpd_pg_attr(pg80);
@ -77,7 +77,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
struct bin_attribute *bin_attr,
@@ -1215,12 +1226,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
@@ -1223,12 +1234,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
struct scsi_device *sdev = to_scsi_device(dev);
@ -96,7 +96,7 @@ Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
return S_IRUGO;
}
@@ -1263,8 +1280,10 @@ static struct attribute *scsi_sdev_attrs
@@ -1271,8 +1288,10 @@ static struct attribute *scsi_sdev_attrs
};
static struct bin_attribute *scsi_sdev_bin_attrs[] = {

View File

@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1159,6 +1159,10 @@ config SYNC_R4K
@@ -1162,6 +1162,10 @@ config SYNC_R4K
config MIPS_MACHINE
def_bool n

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -615,12 +615,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
@@ -617,12 +617,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
extern struct Qdisc_ops pfifo_fast_ops;
extern struct Qdisc_ops mq_qdisc_ops;
extern struct Qdisc_ops noqueue_qdisc_ops;

View File

@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3198,10 +3198,20 @@ static int xmit_one(struct sk_buff *skb,
@@ -3200,10 +3200,20 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);

View File

@ -158,7 +158,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
IPC_SEM_IDS, sysvipc_sem_proc_show);
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -144,6 +144,8 @@ pure_initcall(ipc_ns_init);
@@ -154,6 +154,8 @@ pure_initcall(ipc_ns_init);
void __init shm_init(void)
{

View File

@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
selftest.o \
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -1313,4 +1313,5 @@ static void __exit dma_buf_deinit(void)
@@ -1314,4 +1314,5 @@ static void __exit dma_buf_deinit(void)
dma_buf_uninit_debugfs();
kern_unmount(dma_buf_mnt);
}
@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2767,6 +2767,7 @@ int wake_up_state(struct task_struct *p,
@@ -2770,6 +2770,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}

View File

@ -25,7 +25,7 @@ Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2037,7 +2037,8 @@ config CPU_MIPS32
@@ -2041,7 +2041,8 @@ config CPU_MIPS32
config CPU_MIPS64
bool

View File

@ -17,7 +17,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -651,7 +651,7 @@ static int ehci_run (struct usb_hcd *hcd
@@ -660,7 +660,7 @@ static int ehci_run (struct usb_hcd *hcd
"USB %x.%x started, EHCI %x.%02x%s\n",
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
temp >> 8, temp & 0xff,
@ -48,7 +48,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
/*
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
@@ -319,6 +319,8 @@ static int ehci_platform_probe(struct pl
@@ -325,6 +325,8 @@ static int ehci_platform_probe(struct pl
hcd->has_tt = 1;
if (pdata->reset_on_resume)
priv->reset_on_resume = true;
@ -59,10 +59,10 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
if (ehci->big_endian_mmio) {
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -218,6 +218,7 @@ struct ehci_hcd { /* one per controlle
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
@@ -219,6 +219,7 @@ struct ehci_hcd { /* one per controlle
unsigned need_oc_pp_cycle:1; /* MPC834X port power */
unsigned imx28_write_fix:1; /* For Freescale i.MX28 */
unsigned is_aspeed:1;
+ unsigned ignore_oc:1;
/* required for usb32 quirk */

View File

@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob@landley.net>
---
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1069,9 +1069,6 @@ config FW_ARC
@@ -1072,9 +1072,6 @@ config FW_ARC
config ARCH_MAY_HAVE_PC_FDC
bool
@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob@landley.net>
config CEVT_BCM1480
bool
@@ -3044,6 +3041,18 @@ choice
@@ -3048,6 +3045,18 @@ choice
bool "Extend builtin kernel arguments with bootloader arguments"
endchoice

View File

@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#include "vlan.h"
#include "vlanproc.h"
#include <linux/if_vlan.h>
@@ -744,6 +749,27 @@ static int vlan_dev_get_iflink(const str
@@ -747,6 +752,27 @@ static int vlan_dev_get_iflink(const str
return real_dev->ifindex;
}
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static const struct ethtool_ops vlan_ethtool_ops = {
.get_link_ksettings = vlan_ethtool_get_link_ksettings,
.get_drvinfo = vlan_ethtool_get_drvinfo,
@@ -782,6 +808,9 @@ static const struct net_device_ops vlan_
@@ -785,6 +811,9 @@ static const struct net_device_ops vlan_
#endif
.ndo_fix_features = vlan_dev_fix_features,
.ndo_get_iflink = vlan_dev_get_iflink,

View File

@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW:
case RTN_UNREACHABLE:
default:
@@ -4434,6 +4453,17 @@ static int ip6_pkt_prohibit_out(struct n
@@ -4453,6 +4472,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/*
* Allocate a dst for local (unicast / anycast) address.
*/
@@ -4914,7 +4944,8 @@ static int rtm_to_fib6_config(struct sk_
@@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
@@ -6037,6 +6068,8 @@ static int ip6_route_dev_notify(struct n
@@ -6056,6 +6087,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
@@ -6048,6 +6081,7 @@ static int ip6_route_dev_notify(struct n
@@ -6067,6 +6100,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
}
@@ -6240,6 +6274,8 @@ static int __net_init ip6_route_net_init
@@ -6259,6 +6293,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);
@@ -6250,11 +6286,21 @@ static int __net_init ip6_route_net_init
@@ -6269,11 +6305,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);
@@ -6278,6 +6324,8 @@ out:
@@ -6297,6 +6343,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:
@@ -6297,6 +6345,7 @@ static void __net_exit ip6_route_net_exi
@@ -6316,6 +6364,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);
@@ -6374,6 +6423,9 @@ void __init ip6_route_init_special_entri
@@ -6393,6 +6442,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);

View File

@ -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
@@ -5495,6 +5495,9 @@ static enum gro_result dev_gro_receive(s
@@ -5498,6 +5498,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;
@@ -7297,6 +7300,48 @@ static void __netdev_adjacent_dev_unlink
@@ -7300,6 +7303,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,
@@ -7347,6 +7392,7 @@ static int __netdev_upper_dev_link(struc
@@ -7350,6 +7395,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);
@@ -7440,6 +7486,7 @@ void netdev_upper_dev_unlink(struct net_
@@ -7443,6 +7489,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);
@@ -8170,6 +8217,7 @@ int dev_set_mac_address(struct net_devic
@@ -8173,6 +8220,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;

View File

@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static int netif_rx_internal(struct sk_buff *skb);
static int call_netdevice_notifiers_info(unsigned long val,
@@ -5937,6 +5938,11 @@ void __napi_schedule(struct napi_struct
@@ -5940,6 +5941,11 @@ void __napi_schedule(struct napi_struct
{
unsigned long flags;
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
local_irq_save(flags);
____napi_schedule(this_cpu_ptr(&softnet_data), n);
local_irq_restore(flags);
@@ -5988,6 +5994,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
@@ -5991,6 +5997,11 @@ EXPORT_SYMBOL(napi_schedule_prep);
*/
void __napi_schedule_irqoff(struct napi_struct *n)
{
@ -119,7 +119,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!IS_ENABLED(CONFIG_PREEMPT_RT))
____napi_schedule(this_cpu_ptr(&softnet_data), n);
else
@@ -6252,9 +6263,89 @@ static void init_gro_hash(struct napi_st
@@ -6255,9 +6266,89 @@ static void init_gro_hash(struct napi_st
napi->gro_bitmask = 0;
}
@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
INIT_LIST_HEAD(&napi->poll_list);
hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
napi->timer.function = napi_watchdog;
@@ -6271,6 +6362,7 @@ void netif_napi_add(struct net_device *d
@@ -6274,6 +6365,7 @@ void netif_napi_add(struct net_device *d
#ifdef CONFIG_NETPOLL
napi->poll_owner = -1;
#endif
@ -217,7 +217,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
set_bit(NAPI_STATE_SCHED, &napi->state);
set_bit(NAPI_STATE_NPSVC, &napi->state);
list_add_rcu(&napi->dev_list, &dev->napi_list);
@@ -6311,6 +6403,7 @@ static void flush_gro_hash(struct napi_s
@@ -6314,6 +6406,7 @@ static void flush_gro_hash(struct napi_s
void netif_napi_del(struct napi_struct *napi)
{
might_sleep();
@ -225,7 +225,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (napi_hash_del(napi))
synchronize_net();
list_del_init(&napi->dev_list);
@@ -6323,50 +6416,18 @@ EXPORT_SYMBOL(netif_napi_del);
@@ -6326,50 +6419,18 @@ EXPORT_SYMBOL(netif_napi_del);
static int napi_poll(struct napi_struct *n, struct list_head *repoll)
{
@ -280,7 +280,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* Some drivers may have called napi_schedule
* prior to exhausting their budget.
@@ -10346,6 +10407,10 @@ static int __init net_dev_init(void)
@@ -10349,6 +10410,10 @@ static int __init net_dev_init(void)
sd->backlog.weight = weight_p;
}
@ -293,7 +293,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* The loopback device is special if any other network devices
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -442,6 +442,52 @@ static ssize_t proto_down_store(struct d
@@ -470,6 +470,52 @@ static ssize_t proto_down_store(struct d
}
NETDEVICE_SHOW_RW(proto_down, fmt_dec);
@ -346,7 +346,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static ssize_t phys_port_id_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -532,6 +578,7 @@ static struct attribute *net_class_attrs
@@ -581,6 +627,7 @@ static struct attribute *net_class_attrs
&dev_attr_flags.attr,
&dev_attr_tx_queue_len.attr,
&dev_attr_gro_flush_timeout.attr,

View File

@ -13,9 +13,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
@@ -67,7 +67,7 @@ KBUILD_CFLAGS += $(call cc-option,-fno-i
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
-arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
-arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
+arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -mcpu=cortex-a15
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7

View File

@ -5480,7 +5480,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1390,6 +1390,8 @@ void pci_walk_bus(struct pci_bus *top, i
@@ -1392,6 +1392,8 @@ void pci_walk_bus(struct pci_bus *top, i
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);

View File

@ -1,6 +1,6 @@
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2379,6 +2379,12 @@ config MIPS_VPE_LOADER
@@ -2383,6 +2383,12 @@ config MIPS_VPE_LOADER
Includes a loader for loading an elf relocatable object
onto another VPE and running it.

View File

@ -13,7 +13,7 @@ Reviewed-by: Stuart Yoder <stuart.yoder@freescale.com>
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -422,6 +422,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
@@ -428,6 +428,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN)
#define pgprot_writecombine(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)

View File

@ -11,7 +11,7 @@ Signed-off-by: Haiying Wang <Haiying.wang@freescale.com>
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -425,6 +425,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
@@ -431,6 +431,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
#define pgprot_cached(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL) | \
PTE_PXN | PTE_UXN)

View File

@ -75,7 +75,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
big-endian;
};
@@ -371,7 +372,7 @@
@@ -338,7 +339,7 @@
};
i2c0: i2c@2180000 {
@ -84,7 +84,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
#address-cells = <1>;
#size-cells = <0>;
reg = <0x0 0x2180000 0x0 0x10000>;
@@ -380,11 +381,12 @@
@@ -347,11 +348,12 @@
clocks = <&clockgen 4 1>;
dma-names = "tx", "rx";
dmas = <&edma0 1 39>, <&edma0 1 38>;
@ -98,7 +98,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
#address-cells = <1>;
#size-cells = <0>;
reg = <0x0 0x2190000 0x0 0x10000>;
@@ -393,6 +395,7 @@
@@ -360,6 +362,7 @@
clocks = <&clockgen 4 1>;
dma-names = "tx", "rx";
dmas = <&edma0 1 37>, <&edma0 1 36>;
@ -106,7 +106,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
status = "disabled";
};
@@ -579,6 +582,16 @@
@@ -546,6 +549,16 @@
status = "disabled";
};
@ -123,7 +123,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
pwm1: pwm@29e0000 {
compatible = "fsl,vf610-ftm-pwm";
#pwm-cells = <3>;
@@ -861,6 +874,8 @@
@@ -828,6 +841,8 @@
dr_mode = "host";
snps,quirk-frame-length-adjustment = <0x20>;
snps,dis_rxdet_inp3_quirk;
@ -132,7 +132,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
};
@@ -869,7 +884,9 @@
@@ -836,7 +851,9 @@
reg = <0x00 0x03400000 0x0 0x00010000 /* controller registers */
0x40 0x00000000 0x0 0x00002000>; /* configuration space */
reg-names = "regs", "config";
@ -143,7 +143,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
fsl,pcie-scfg = <&scfg 0>;
#address-cells = <3>;
#size-cells = <2>;
@@ -893,7 +910,9 @@
@@ -860,7 +877,9 @@
reg = <0x00 0x03500000 0x0 0x00010000 /* controller registers */
0x48 0x00000000 0x0 0x00002000>; /* configuration space */
reg-names = "regs", "config";

View File

@ -10,7 +10,7 @@ Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
--- a/arch/arm/boot/dts/ls1021a.dtsi
+++ b/arch/arm/boot/dts/ls1021a.dtsi
@@ -877,6 +877,7 @@
@@ -844,6 +844,7 @@
usb3-lpm-capable;
snps,dis-u1u2-when-u3-quirk;
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;

View File

@ -24,7 +24,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
};
cpus {
@@ -582,16 +583,6 @@
@@ -549,16 +550,6 @@
status = "disabled";
};
@ -41,7 +41,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
pwm1: pwm@29e0000 {
compatible = "fsl,vf610-ftm-pwm";
#pwm-cells = <3>;
@@ -1003,5 +994,18 @@
@@ -970,6 +961,19 @@
big-endian;
};
@ -59,4 +59,5 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
+ big-endian;
+ };
};
};
thermal-zones {

View File

@ -14,7 +14,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
--- a/arch/arm/boot/dts/ls1021a.dtsi
+++ b/arch/arm/boot/dts/ls1021a.dtsi
@@ -998,6 +998,12 @@
@@ -965,6 +965,12 @@
compatible = "fsl,ls1021a-rcpm", "fsl,qoriq-rcpm-2.1+";
reg = <0x0 0x1ee2140 0x0 0x8>;
#fsl,rcpm-wakeup-cells = <2>;

View File

@ -15,7 +15,7 @@ Signed-off-by: Alison Wang <alison.wang@nxp.com>
--- a/arch/arm/boot/dts/ls1021a.dtsi
+++ b/arch/arm/boot/dts/ls1021a.dtsi
@@ -682,8 +682,9 @@
@@ -649,8 +649,9 @@
reg = <0x0 0x2b50000 0x0 0x10000>;
interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clockgen 4 1>, <&clockgen 4 1>,
@ -27,7 +27,7 @@ Signed-off-by: Alison Wang <alison.wang@nxp.com>
dma-names = "tx", "rx";
dmas = <&edma0 1 47>,
<&edma0 1 46>;
@@ -696,8 +697,9 @@
@@ -663,8 +664,9 @@
reg = <0x0 0x2b60000 0x0 0x10000>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clockgen 4 1>, <&clockgen 4 1>,

View File

@ -87,7 +87,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
}
/**
@@ -3873,6 +3889,7 @@ static int cgroup_add_file(struct cgroup
@@ -3896,6 +3912,7 @@ static int cgroup_add_file(struct cgroup
{
char name[CGROUP_FILE_NAME_MAX];
struct kernfs_node *kn;
@ -95,7 +95,7 @@ Signed-off-by: Li Yang <leoyang.li@nxp.com>
struct lock_class_key *key = NULL;
int ret;
@@ -3903,6 +3920,14 @@ static int cgroup_add_file(struct cgroup
@@ -3926,6 +3943,14 @@ static int cgroup_add_file(struct cgroup
spin_unlock_irq(&cgroup_file_kn_lock);
}

Some files were not shown because too many files have changed in this diff Show More