mirror of
https://github.com/immortalwrt/immortalwrt
synced 2025-01-09 04:29:03 +08:00
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
b38ee6f170
@ -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)))))))
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
@ -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);
|
@ -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
|
||||
|
@ -3,7 +3,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=bcm4908img
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,7 +0,0 @@
|
||||
all: otrx
|
||||
|
||||
otrx:
|
||||
$(CC) $(CFLAGS) -o $@ otrx.c -Wall
|
||||
|
||||
clean:
|
||||
rm -f otrx
|
@ -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;
|
||||
}
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
177
target/linux/ath79/dts/qca9563_xiaomi_aiot-ac2350.dts
Normal file
177
target/linux/ath79/dts/qca9563_xiaomi_aiot-ac2350.dts
Normal 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 = ð0;
|
||||
|
||||
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 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&phy0>;
|
||||
|
||||
mtd-mac-address = <&art 0x0>;
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
mtd-cal-data = <&art 0x1000>;
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
};
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 &&
|
||||
|
@ -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; }
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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))) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
45
target/linux/bcm4908/image/bootfs-generic.its
Normal file
45
target/linux/bcm4908/image/bootfs-generic.its
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
43
target/linux/bcm4908/image/pkgtb-bcm4908.its
Normal file
43
target/linux/bcm4908/image/pkgtb-bcm4908.its
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
43
target/linux/bcm4908/image/pkgtb-bcm4912.its
Normal file
43
target/linux/bcm4908/image/pkgtb-bcm4912.its
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
@ -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>;
|
||||
};
|
@ -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";
|
@ -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>;
|
||||
};
|
||||
};
|
@ -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";
|
||||
};
|
||||
|
@ -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
|
@ -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";
|
||||
+ };
|
||||
+};
|
@ -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>;
|
||||
};
|
@ -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
|
@ -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" \
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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";
|
||||
};
|
||||
|
||||
|
@ -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>;
|
||||
};
|
||||
|
||||
|
@ -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>;
|
||||
};
|
||||
|
||||
|
@ -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 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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>;
|
||||
};
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
@ -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";
|
||||
};
|
@ -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>;
|
@ -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>;
|
@ -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>;
|
||||
};
|
@ -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 {
|
||||
|
@ -113,4 +113,4 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
+ bootargs = "console=ttyS0,115200 earlycon";
|
||||
};
|
||||
|
||||
memory {
|
||||
memory@0 {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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),
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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[] = {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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";
|
||||
|
@ -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>;
|
||||
|
@ -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 {
|
||||
|
@ -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>;
|
||||
|
@ -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>,
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user