Merge branch 'openwrt:master' into master
This commit is contained in:
commit
565e42825e
23 changed files with 416 additions and 97 deletions
24
.github/workflows/github-release.yml
vendored
Normal file
24
.github/workflows/github-release.yml
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
name: Create GitHub release
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
prerelease: true
|
2
Makefile
2
Makefile
|
@ -14,7 +14,7 @@ $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt dir
|
||||||
|
|
||||||
world:
|
world:
|
||||||
|
|
||||||
DISTRO_PKG_CONFIG:=$(shell $(TOPDIR)/scripts/command_all.sh pkg-config | grep '/usr' -m 1)
|
DISTRO_PKG_CONFIG:=$(shell $(TOPDIR)/scripts/command_all.sh pkg-config | grep -e '/usr' -e '/nix/store' -m 1)
|
||||||
|
|
||||||
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
||||||
export PATH:=$(if $(STAGING_DIR),$(abspath $(STAGING_DIR)/../host/bin),$(TOPDIR)/staging_dir/host/bin):$(PATH)
|
export PATH:=$(if $(STAGING_DIR),$(abspath $(STAGING_DIR)/../host/bin),$(TOPDIR)/staging_dir/host/bin):$(PATH)
|
||||||
|
|
|
@ -26,6 +26,14 @@ menu "Global build settings"
|
||||||
directory containing machine readable list of built profiles
|
directory containing machine readable list of built profiles
|
||||||
and resulting images.
|
and resulting images.
|
||||||
|
|
||||||
|
config JSON_CYCLONEDX_SBOM
|
||||||
|
bool "Create CycloneDX SBOM JSON"
|
||||||
|
default BUILDBOT
|
||||||
|
help
|
||||||
|
Create a JSON files *.bom.cdx.json in the build
|
||||||
|
directory containing Software Bill Of Materials in CycloneDX
|
||||||
|
format.
|
||||||
|
|
||||||
config ALL_NONSHARED
|
config ALL_NONSHARED
|
||||||
bool "Select all target specific packages by default"
|
bool "Select all target specific packages by default"
|
||||||
select ALL_KMODS
|
select ALL_KMODS
|
||||||
|
|
|
@ -277,6 +277,11 @@ endef
|
||||||
define Image/Manifest
|
define Image/Manifest
|
||||||
$(call opkg,$(TARGET_DIR_ORIG)) list-installed > \
|
$(call opkg,$(TARGET_DIR_ORIG)) list-installed > \
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest
|
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest
|
||||||
|
$(if $(CONFIG_JSON_CYCLONEDX_SBOM), \
|
||||||
|
$(SCRIPT_DIR)/package-metadata.pl imgcyclonedxsbom \
|
||||||
|
$(TMP_DIR)/.packageinfo \
|
||||||
|
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest > \
|
||||||
|
$(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).bom.cdx.json)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Image/gzip-ext4-padded-squashfs
|
define Image/gzip-ext4-padded-squashfs
|
||||||
|
|
|
@ -36,6 +36,8 @@ $(if $(USERID),Require-User: $(USERID)
|
||||||
)Source: $(PKG_SOURCE)
|
)Source: $(PKG_SOURCE)
|
||||||
$(if $(LICENSE),License: $(LICENSE)
|
$(if $(LICENSE),License: $(LICENSE)
|
||||||
)$(if $(LICENSE_FILES),LicenseFiles: $(LICENSE_FILES)
|
)$(if $(LICENSE_FILES),LicenseFiles: $(LICENSE_FILES)
|
||||||
|
)$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID)
|
||||||
|
)$(if $(ABI_VERSION),ABI-Version: $(ABI_VERSION)
|
||||||
)Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))
|
)Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))
|
||||||
$(if $(KCONFIG),Kernel-Config: $(KCONFIG)
|
$(if $(KCONFIG),Kernel-Config: $(KCONFIG)
|
||||||
)$(if $(BUILDONLY),Build-Only: $(BUILDONLY)
|
)$(if $(BUILDONLY),Build-Only: $(BUILDONLY)
|
||||||
|
|
|
@ -106,6 +106,14 @@ ifdef CONFIG_SIGNED_PACKAGES
|
||||||
$(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \
|
$(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \
|
||||||
); done
|
); done
|
||||||
endif
|
endif
|
||||||
|
ifdef CONFIG_JSON_CYCLONEDX_SBOM
|
||||||
|
@echo Creating CycloneDX package SBOMs...
|
||||||
|
@for d in $(PACKAGE_SUBDIRS); do ( \
|
||||||
|
[ -d $$d ] && \
|
||||||
|
cd $$d || continue; \
|
||||||
|
$(SCRIPT_DIR)/package-metadata.pl pkgcyclonedxsbom Packages.manifest > Packages.bom.cdx.json || true; \
|
||||||
|
); done
|
||||||
|
endif
|
||||||
|
|
||||||
$(curdir)/flags-install:= -j1
|
$(curdir)/flags-install:= -j1
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
{
|
{
|
||||||
--- a/boot/image-fit.c
|
--- a/boot/image-fit.c
|
||||||
+++ b/boot/image-fit.c
|
+++ b/boot/image-fit.c
|
||||||
@@ -2051,6 +2051,49 @@ static const char *fit_get_image_type_pr
|
@@ -2051,6 +2051,47 @@ static const char *fit_get_image_type_pr
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,11 +93,8 @@
|
||||||
+ max_size = hdrsize;
|
+ max_size = hdrsize;
|
||||||
+
|
+
|
||||||
+ images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
|
+ images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
|
||||||
+ if (images_noffset < 0) {
|
+ if (images_noffset < 0)
|
||||||
+ printf("Can't find images parent node '%s' (%s)\n",
|
+ goto out;
|
||||||
+ FIT_IMAGES_PATH, fdt_strerror(images_noffset));
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ for (ndepth = 0,
|
+ for (ndepth = 0,
|
||||||
+ noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
+ noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
||||||
|
@ -106,7 +103,7 @@
|
||||||
+ if (ndepth == 1) {
|
+ if (ndepth == 1) {
|
||||||
+ ret = fit_image_get_data_and_size(fit, noffset, &data, &data_size);
|
+ ret = fit_image_get_data_and_size(fit, noffset, &data, &data_size);
|
||||||
+ if (ret)
|
+ if (ret)
|
||||||
+ return 0;
|
+ goto out;
|
||||||
+
|
+
|
||||||
+ img_total = data_size + (data - fit);
|
+ img_total = data_size + (data - fit);
|
||||||
+
|
+
|
||||||
|
@ -114,6 +111,7 @@
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+out:
|
||||||
+ return max_size;
|
+ return max_size;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/include/linux/types.h
|
|
||||||
+++ b/include/linux/types.h
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
#ifndef _LINUX_TYPES_H
|
|
||||||
#define _LINUX_TYPES_H
|
|
||||||
|
|
||||||
+typedef unsigned long long __u64;
|
|
||||||
#include <linux/posix_types.h>
|
|
||||||
#include <asm/types.h>
|
|
||||||
#include <stdbool.h>
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/include/linux/types.h
|
|
||||||
+++ b/include/linux/types.h
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
#ifndef _LINUX_TYPES_H
|
|
||||||
#define _LINUX_TYPES_H
|
|
||||||
|
|
||||||
+typedef unsigned long long __u64;
|
|
||||||
#include <linux/posix_types.h>
|
|
||||||
#include <asm/types.h>
|
|
||||||
#include <stdbool.h>
|
|
|
@ -1,8 +1,6 @@
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
# Copyright (C) 2007-2012 OpenWrt.org
|
# Copyright (C) 2007-2012 OpenWrt.org
|
||||||
|
|
||||||
. /lib/functions.sh
|
|
||||||
|
|
||||||
START=19
|
START=19
|
||||||
|
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
From: David Bauer <mail@david-bauer.net>
|
||||||
|
To: hostap@lists.infradead.org
|
||||||
|
Cc: =?utf-8?q?=C3=89tienne_Morice?= <neon.emorice@mail.com>
|
||||||
|
Subject: [PATCH] nl80211: add extra-ies only if allowed by driver
|
||||||
|
Date: Sun, 30 Jan 2022 20:22:00 +0100
|
||||||
|
Message-Id: <20220130192200.10883-1-mail@david-bauer.net>
|
||||||
|
List-Id: <hostap.lists.infradead.org>
|
||||||
|
|
||||||
|
Upgrading wpa_supplicant from 2.9 to 2.10 breaks broadcom-wl
|
||||||
|
based adapters. The reason for it is hostapd tries to install additional
|
||||||
|
IEs for scanning while the driver does not support this.
|
||||||
|
|
||||||
|
The kernel indicates the maximum number of bytes for additional scan IEs
|
||||||
|
using the NL80211_ATTR_MAX_SCAN_IE_LEN attribute. Save this value and
|
||||||
|
only add additional scan IEs in case the driver can accommodate these
|
||||||
|
additional IEs.
|
||||||
|
|
||||||
|
Reported-by: Étienne Morice <neon.emorice@mail.com>
|
||||||
|
Tested-by: Étienne Morice <neon.emorice@mail.com>
|
||||||
|
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||||
|
---
|
||||||
|
src/drivers/driver.h | 3 +++
|
||||||
|
src/drivers/driver_nl80211_capa.c | 4 ++++
|
||||||
|
src/drivers/driver_nl80211_scan.c | 2 +-
|
||||||
|
3 files changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/src/drivers/driver.h
|
||||||
|
+++ b/src/drivers/driver.h
|
||||||
|
@@ -2283,6 +2283,9 @@ struct wpa_driver_capa {
|
||||||
|
/** Maximum number of iterations in a single scan plan */
|
||||||
|
u32 max_sched_scan_plan_iterations;
|
||||||
|
|
||||||
|
+ /** Maximum number of extra IE bytes for scans */
|
||||||
|
+ u16 max_scan_ie_len;
|
||||||
|
+
|
||||||
|
/** Whether sched_scan (offloaded scanning) is supported */
|
||||||
|
int sched_scan_supported;
|
||||||
|
|
||||||
|
--- a/src/drivers/driver_nl80211_capa.c
|
||||||
|
+++ b/src/drivers/driver_nl80211_capa.c
|
||||||
|
@@ -949,6 +949,10 @@ static int wiphy_info_handler(struct nl_
|
||||||
|
nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (tb[NL80211_ATTR_MAX_SCAN_IE_LEN])
|
||||||
|
+ capa->max_scan_ie_len =
|
||||||
|
+ nla_get_u16(tb[NL80211_ATTR_MAX_SCAN_IE_LEN]);
|
||||||
|
+
|
||||||
|
if (tb[NL80211_ATTR_MAX_MATCH_SETS])
|
||||||
|
capa->max_match_sets =
|
||||||
|
nla_get_u8(tb[NL80211_ATTR_MAX_MATCH_SETS]);
|
||||||
|
--- a/src/drivers/driver_nl80211_scan.c
|
||||||
|
+++ b/src/drivers/driver_nl80211_scan.c
|
||||||
|
@@ -222,7 +222,7 @@ nl80211_scan_common(struct i802_bss *bss
|
||||||
|
wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested");
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (params->extra_ies) {
|
||||||
|
+ if (params->extra_ies && drv->capa.max_scan_ie_len >= params->extra_ies_len) {
|
||||||
|
wpa_hexdump(MSG_MSGDUMP, "nl80211: Scan extra IEs",
|
||||||
|
params->extra_ies, params->extra_ies_len);
|
||||||
|
if (nla_put(msg, NL80211_ATTR_IE, params->extra_ies_len,
|
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/urngd.git
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/urngd.git
|
||||||
PKG_SOURCE_DATE:=2023-07-25
|
PKG_SOURCE_DATE:=2023-11-01
|
||||||
PKG_SOURCE_VERSION:=7aefb47be57df0467d97d539f7fe9e23e607a3b4
|
PKG_SOURCE_VERSION:=44365eb1e1165f2a44cb31f404b04cf85031718e
|
||||||
PKG_MIRROR_HASH:=427d4228fd65cf4320b8c212e710b86bcbfcdd4239f4e67132b3b471f7437202
|
PKG_MIRROR_HASH:=743bdfacf1f1e779047a55fe8f388aaf31f6e55e8a4d0a00fcabffb68af2202e
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0 BSD-3-Clause
|
PKG_LICENSE:=GPL-2.0 BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=
|
PKG_LICENSE_FILES:=
|
||||||
|
|
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
PKG_SOURCE_URL=https://github.com/jow-/ucode.git
|
||||||
PKG_SOURCE_DATE:=2023-10-19
|
PKG_SOURCE_DATE:=2023-11-02
|
||||||
PKG_SOURCE_VERSION:=07c03173d4e6a30953f92fa88ed29b0b956c9106
|
PKG_SOURCE_VERSION:=cfb24ea4f12131dcefe4f1ede2f51d3d16b88dec
|
||||||
PKG_MIRROR_HASH:=fd770335f442ebfc0f4e28d94bb60d886c43aa239ab88e965be7c490b3283a82
|
PKG_MIRROR_HASH:=f515a23ab438f92be5788c42b9f614a82e670de2df1c01cd63143cdc77fa24fe
|
||||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||||
PKG_LICENSE:=ISC
|
PKG_LICENSE:=ISC
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ my %update_method = (
|
||||||
'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
|
'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
|
||||||
'post_update' => "git submodule update --init --recursive",
|
'post_update' => "git submodule update --init --recursive",
|
||||||
'controldir' => ".git",
|
'controldir' => ".git",
|
||||||
'revision' => "git rev-parse --short HEAD | tr -d '\n'"},
|
'revision' => "git rev-parse HEAD | tr -d '\n'"},
|
||||||
'src-git-full' => {
|
'src-git-full' => {
|
||||||
'init' => "git clone '%s' '%s'",
|
'init' => "git clone '%s' '%s'",
|
||||||
'init_branch' => "git clone --branch '%s' '%s' '%s'",
|
'init_branch' => "git clone --branch '%s' '%s' '%s'",
|
||||||
|
@ -171,12 +171,12 @@ my %update_method = (
|
||||||
'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
|
'update_force' => "git pull --ff-only || (git reset --hard HEAD; git pull --ff-only; exit 1)",
|
||||||
'post_update' => "git submodule update --init --recursive",
|
'post_update' => "git submodule update --init --recursive",
|
||||||
'controldir' => ".git",
|
'controldir' => ".git",
|
||||||
'revision' => "git rev-parse --short HEAD | tr -d '\n'"},
|
'revision' => "git rev-parse HEAD | tr -d '\n'"},
|
||||||
'src-gitsvn' => {
|
'src-gitsvn' => {
|
||||||
'init' => "git svn clone -r HEAD '%s' '%s'",
|
'init' => "git svn clone -r HEAD '%s' '%s'",
|
||||||
'update' => "git svn rebase",
|
'update' => "git svn rebase",
|
||||||
'controldir' => ".git",
|
'controldir' => ".git",
|
||||||
'revision' => "git rev-parse --short HEAD | tr -d '\n'"},
|
'revision' => "git rev-parse HEAD | tr -d '\n'"},
|
||||||
'src-bzr' => {
|
'src-bzr' => {
|
||||||
'init' => "bzr checkout --lightweight '%s' '%s'",
|
'init' => "bzr checkout --lightweight '%s' '%s'",
|
||||||
'update' => "bzr update",
|
'update' => "bzr update",
|
||||||
|
|
|
@ -2,7 +2,7 @@ package metadata;
|
||||||
use base 'Exporter';
|
use base 'Exporter';
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
our @EXPORT = qw(%package %vpackage %srcpackage %category %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
|
our @EXPORT = qw(%package %vpackage %srcpackage %category %overrides clear_packages parse_package_metadata parse_package_manifest_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
|
||||||
|
|
||||||
our %package;
|
our %package;
|
||||||
our %vpackage;
|
our %vpackage;
|
||||||
|
@ -256,6 +256,8 @@ sub parse_package_metadata($) {
|
||||||
/^Source: \s*(.+)\s*$/ and $pkg->{source} = $1;
|
/^Source: \s*(.+)\s*$/ and $pkg->{source} = $1;
|
||||||
/^License: \s*(.+)\s*$/ and $pkg->{license} = $1;
|
/^License: \s*(.+)\s*$/ and $pkg->{license} = $1;
|
||||||
/^LicenseFiles: \s*(.+)\s*$/ and $pkg->{licensefiles} = $1;
|
/^LicenseFiles: \s*(.+)\s*$/ and $pkg->{licensefiles} = $1;
|
||||||
|
/^CPE-ID: \s*(.+)\s*$/ and $pkg->{cpe_id} = $1;
|
||||||
|
/^ABI-Version: \s*(.+)\s*$/ and $pkg->{abi_version} = $1;
|
||||||
/^Default: \s*(.+)\s*$/ and $pkg->{default} = $1;
|
/^Default: \s*(.+)\s*$/ and $pkg->{default} = $1;
|
||||||
/^Provides: \s*(.+)\s*$/ and do {
|
/^Provides: \s*(.+)\s*$/ and do {
|
||||||
my @vpkg = split /\s+/, $1;
|
my @vpkg = split /\s+/, $1;
|
||||||
|
@ -315,4 +317,42 @@ sub parse_package_metadata($) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub parse_package_manifest_metadata($) {
|
||||||
|
my $file = shift;
|
||||||
|
my $pkg;
|
||||||
|
my %pkgs;
|
||||||
|
|
||||||
|
open FILE, "<$file" or do {
|
||||||
|
warn "Cannot open '$file': $!\n";
|
||||||
|
return undef;
|
||||||
|
};
|
||||||
|
|
||||||
|
while (<FILE>) {
|
||||||
|
chomp;
|
||||||
|
/^Package:\s*(.+?)\s*$/ and do {
|
||||||
|
$pkg = {};
|
||||||
|
$pkg->{name} = $1;
|
||||||
|
$pkg->{depends} = [];
|
||||||
|
$pkgs{$1} = $pkg;
|
||||||
|
};
|
||||||
|
/^Version:\s*(.+)\s*$/ and $pkg->{version} = $1;
|
||||||
|
/^Depends:\s*(.+)\s*$/ and $pkg->{depends} = [ split /\s+/, $1 ];
|
||||||
|
/^Source:\s*(.+)\s*$/ and $pkg->{source} = $1;
|
||||||
|
/^SourceName:\s*(.+)\s*$/ and $pkg->{sourcename} = $1;
|
||||||
|
/^License:\s*(.+)\s*$/ and $pkg->{license} = $1;
|
||||||
|
/^LicenseFiles:\s*(.+)\s*$/ and $pkg->{licensefiles} = $1;
|
||||||
|
/^Section:\s*(.+)\s*$/ and $pkg->{section} = $1;
|
||||||
|
/^SourceDateEpoch: \s*(.+)\s*$/ and $pkg->{sourcedateepoch} = $1;
|
||||||
|
/^CPE-ID:\s*(.+)\s*$/ and $pkg->{cpe_id} = $1;
|
||||||
|
/^Architecture:\s*(.+)\s*$/ and $pkg->{architecture} = $1;
|
||||||
|
/^Installed-Size:\s*(.+)\s*$/ and $pkg->{installedsize} = $1;
|
||||||
|
/^Filename:\s*(.+)\s*$/ and $pkg->{filename} = $1;
|
||||||
|
/^Size:\s*(\d+)\s*$/ and $pkg->{size} = $1;
|
||||||
|
/^SHA256sum:\s*(.*)\s*$/ and $pkg->{sha256sum} = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
close FILE;
|
||||||
|
return %pkgs;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -4,6 +4,8 @@ use lib "$FindBin::Bin";
|
||||||
use strict;
|
use strict;
|
||||||
use metadata;
|
use metadata;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
use Time::Piece;
|
||||||
|
use JSON::PP;
|
||||||
|
|
||||||
my %board;
|
my %board;
|
||||||
|
|
||||||
|
@ -611,6 +613,7 @@ ${json}{
|
||||||
"version":"$pkg->{version}",
|
"version":"$pkg->{version}",
|
||||||
"category":"$pkg->{category}",
|
"category":"$pkg->{category}",
|
||||||
"license":"$pkg->{license}",
|
"license":"$pkg->{license}",
|
||||||
|
"cpe_id":"$pkg->{cpe_id}",
|
||||||
"maintainer": [$pkg_maintainer],
|
"maintainer": [$pkg_maintainer],
|
||||||
"depends":[$pkg_deps]},
|
"depends":[$pkg_deps]},
|
||||||
END_JSON
|
END_JSON
|
||||||
|
@ -621,6 +624,173 @@ END_JSON
|
||||||
print "[$json]";
|
print "[$json]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub image_manifest_packages($)
|
||||||
|
{
|
||||||
|
my %packages;
|
||||||
|
my $imgmanifest = shift;
|
||||||
|
|
||||||
|
open FILE, "<$imgmanifest" or return;
|
||||||
|
while (<FILE>) {
|
||||||
|
/^(.+?) - (.+)$/ and $packages{$1} = $2;
|
||||||
|
}
|
||||||
|
close FILE;
|
||||||
|
|
||||||
|
return %packages;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub dump_cyclonedxsbom_json {
|
||||||
|
my (@components) = @_;
|
||||||
|
|
||||||
|
my $uuid = sprintf(
|
||||||
|
"%04x%04x-%04x-%04x-%04x-%04x%04x%04x",
|
||||||
|
rand(0xffff), rand(0xffff), rand(0xffff),
|
||||||
|
rand(0x0fff) | 0x4000,
|
||||||
|
rand(0x3fff) | 0x8000,
|
||||||
|
rand(0xffff), rand(0xffff), rand(0xffff)
|
||||||
|
);
|
||||||
|
|
||||||
|
my $cyclonedx = {
|
||||||
|
bomFormat => "CycloneDX",
|
||||||
|
specVersion => "1.4",
|
||||||
|
serialNumber => "urn:uuid:$uuid",
|
||||||
|
version => 1,
|
||||||
|
metadata => {
|
||||||
|
timestamp => gmtime->datetime,
|
||||||
|
},
|
||||||
|
"components" => [@components],
|
||||||
|
};
|
||||||
|
|
||||||
|
return encode_json($cyclonedx);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub gen_image_cyclonedxsbom() {
|
||||||
|
my $pkginfo = shift @ARGV;
|
||||||
|
my $imgmanifest = shift @ARGV;
|
||||||
|
my @components;
|
||||||
|
my %image_packages;
|
||||||
|
|
||||||
|
%image_packages = image_manifest_packages($imgmanifest);
|
||||||
|
%image_packages or exit 1;
|
||||||
|
parse_package_metadata($pkginfo) or exit 1;
|
||||||
|
|
||||||
|
$package{"kernel"} = {
|
||||||
|
license => "GPL-2.0",
|
||||||
|
cpe_id => "cpe:/o:linux:linux_kernel",
|
||||||
|
name => "kernel",
|
||||||
|
};
|
||||||
|
|
||||||
|
my %abimap;
|
||||||
|
my @abipkgs = grep { defined $package{$_}->{abi_version} } keys %package;
|
||||||
|
foreach my $name (@abipkgs) {
|
||||||
|
my $pkg = $package{$name};
|
||||||
|
my $abipkg = $name . $pkg->{abi_version};
|
||||||
|
$abimap{$abipkg} = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $name (sort {uc($a) cmp uc($b)} keys %image_packages) {
|
||||||
|
my $pkg = $package{$name};
|
||||||
|
if (!$pkg) {
|
||||||
|
$pkg = $package{$abimap{$name}};
|
||||||
|
next if !$pkg;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @licenses;
|
||||||
|
my @license = split(/\s+/, $pkg->{license});
|
||||||
|
foreach my $lic (@license) {
|
||||||
|
push @licenses, (
|
||||||
|
{ "license" => { "name" => $lic } }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
my $type;
|
||||||
|
if ($pkg->{category}) {
|
||||||
|
my $category = $pkg->{category};
|
||||||
|
my %cat_type = (
|
||||||
|
"Firmware" => "firmware",
|
||||||
|
"Libraries" => "library"
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($cat_type{$category}) {
|
||||||
|
$type = $cat_type{$category};
|
||||||
|
} else {
|
||||||
|
$type = "application";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $version = $pkg->{version};
|
||||||
|
if ($image_packages{$name}) {
|
||||||
|
$version = $image_packages{$name};
|
||||||
|
}
|
||||||
|
$version =~ s/-\d+$// if $version;
|
||||||
|
if ($name =~ /^(kernel|kmod-)/ and $version =~ /^(\d+\.\d+\.\d+)/) {
|
||||||
|
$version = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
push @components, {
|
||||||
|
name => $pkg->{name},
|
||||||
|
version => $version,
|
||||||
|
@licenses > 0 ? (licenses => [ @licenses ]) : (),
|
||||||
|
$pkg->{cpe_id} ? (cpe => $pkg->{cpe_id}.":".$version) : (),
|
||||||
|
$type ? (type => $type) : (),
|
||||||
|
$version ? (version => $version) : (),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
print dump_cyclonedxsbom_json(@components);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub gen_package_cyclonedxsbom() {
|
||||||
|
my $pkgmanifest = shift @ARGV;
|
||||||
|
my @components;
|
||||||
|
my %mpkgs;
|
||||||
|
|
||||||
|
%mpkgs = parse_package_manifest_metadata($pkgmanifest);
|
||||||
|
%mpkgs or exit 1;
|
||||||
|
|
||||||
|
foreach my $name (sort {uc($a) cmp uc($b)} keys %mpkgs) {
|
||||||
|
my $pkg = $mpkgs{$name};
|
||||||
|
|
||||||
|
my @licenses;
|
||||||
|
my @license = split(/\s+/, $pkg->{license});
|
||||||
|
foreach my $lic (@license) {
|
||||||
|
push @licenses, (
|
||||||
|
{ "license" => { "name" => $lic } }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $type;
|
||||||
|
if ($pkg->{section}) {
|
||||||
|
my $section = $pkg->{section};
|
||||||
|
my %section_type = (
|
||||||
|
"firmware" => "firmware",
|
||||||
|
"libs" => "library"
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($section_type{$section}) {
|
||||||
|
$type = $section_type{$section};
|
||||||
|
} else {
|
||||||
|
$type = "application";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $version = $pkg->{version};
|
||||||
|
$version =~ s/-\d+$// if $version;
|
||||||
|
if ($name =~ /^(kernel|kmod-)/ and $version =~ /^(\d+\.\d+\.\d+)/) {
|
||||||
|
$version = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
push @components, {
|
||||||
|
name => $name,
|
||||||
|
version => $version,
|
||||||
|
@licenses > 0 ? (licenses => [ @licenses ]) : (),
|
||||||
|
$pkg->{cpe_id} ? (cpe => $pkg->{cpe_id}.":".$version) : (),
|
||||||
|
$type ? (type => $type) : (),
|
||||||
|
$version ? (version => $version) : (),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
print dump_cyclonedxsbom_json(@components);
|
||||||
|
}
|
||||||
|
|
||||||
sub parse_command() {
|
sub parse_command() {
|
||||||
GetOptions("ignore=s", \@ignore);
|
GetOptions("ignore=s", \@ignore);
|
||||||
my $cmd = shift @ARGV;
|
my $cmd = shift @ARGV;
|
||||||
|
@ -631,6 +801,8 @@ sub parse_command() {
|
||||||
/^source$/ and return gen_package_source();
|
/^source$/ and return gen_package_source();
|
||||||
/^pkgaux$/ and return gen_package_auxiliary();
|
/^pkgaux$/ and return gen_package_auxiliary();
|
||||||
/^pkgmanifestjson$/ and return gen_package_manifest_json();
|
/^pkgmanifestjson$/ and return gen_package_manifest_json();
|
||||||
|
/^imgcyclonedxsbom$/ and return gen_image_cyclonedxsbom();
|
||||||
|
/^pkgcyclonedxsbom$/ and return gen_package_cyclonedxsbom();
|
||||||
/^license$/ and return gen_package_license(0);
|
/^license$/ and return gen_package_license(0);
|
||||||
/^licensefull$/ and return gen_package_license(1);
|
/^licensefull$/ and return gen_package_license(1);
|
||||||
/^usergroup$/ and return gen_usergroup_list();
|
/^usergroup$/ and return gen_usergroup_list();
|
||||||
|
@ -638,15 +810,17 @@ sub parse_command() {
|
||||||
}
|
}
|
||||||
die <<EOF
|
die <<EOF
|
||||||
Available Commands:
|
Available Commands:
|
||||||
$0 mk [file] Package metadata in makefile format
|
$0 mk [file] Package metadata in makefile format
|
||||||
$0 config [file] Package metadata in Kconfig format
|
$0 config [file] Package metadata in Kconfig format
|
||||||
$0 kconfig [file] [config] [patchver] Kernel config overrides
|
$0 kconfig [file] [config] [patchver] Kernel config overrides
|
||||||
$0 source [file] Package source file information
|
$0 source [file] Package source file information
|
||||||
$0 pkgaux [file] Package auxiliary variables in makefile format
|
$0 pkgaux [file] Package auxiliary variables in makefile format
|
||||||
$0 pkgmanifestjson [file] Package manifests in JSON format
|
$0 pkgmanifestjson [file] Package manifests in JSON format
|
||||||
$0 license [file] Package license information
|
$0 imgcyclonedxsbom <file> [manifest] Image package manifest in CycloneDX SBOM JSON format
|
||||||
|
$0 pkgcyclonedxsbom <file> Package manifest in CycloneDX SBOM JSON format
|
||||||
|
$0 license [file] Package license information
|
||||||
$0 licensefull [file] Package license information (full list)
|
$0 licensefull [file] Package license information (full list)
|
||||||
$0 usergroup [file] Package usergroup allocation list
|
$0 usergroup [file] Package usergroup allocation list
|
||||||
$0 version_filter [patchver] [list...] Filter list of version tagged strings
|
$0 version_filter [patchver] [list...] Filter list of version tagged strings
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
|
@ -25,23 +25,27 @@ Cc: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||||||
Cc: Florian Fainelli <florian.fainelli@broadcom.com>
|
Cc: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||||
Cc: Scott Branden <scott.branden@broadcom.com>
|
Cc: Scott Branden <scott.branden@broadcom.com>
|
||||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
Acked-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||||||
---
|
---
|
||||||
drivers/nvmem/brcm_nvram.c | 130 +++++++++++++++++++++++++------------
|
drivers/nvmem/brcm_nvram.c | 134 ++++++++++++++++++++++++++-----------
|
||||||
1 file changed, 90 insertions(+), 40 deletions(-)
|
1 file changed, 94 insertions(+), 40 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/nvmem/brcm_nvram.c
|
--- a/drivers/nvmem/brcm_nvram.c
|
||||||
+++ b/drivers/nvmem/brcm_nvram.c
|
+++ b/drivers/nvmem/brcm_nvram.c
|
||||||
@@ -17,9 +17,20 @@
|
@@ -17,9 +17,23 @@
|
||||||
|
|
||||||
#define NVRAM_MAGIC "FLSH"
|
#define NVRAM_MAGIC "FLSH"
|
||||||
|
|
||||||
+/**
|
+/**
|
||||||
+ * struct brcm_nvram - driver state internal struct
|
+ * struct brcm_nvram - driver state internal struct
|
||||||
+ *
|
+ *
|
||||||
|
+ * @dev: NVMEM device pointer
|
||||||
+ * @nvmem_size: Size of the whole space available for NVRAM
|
+ * @nvmem_size: Size of the whole space available for NVRAM
|
||||||
+ * @data: NVRAM data copy stored to avoid poking underlaying flash controller
|
+ * @data: NVRAM data copy stored to avoid poking underlaying flash controller
|
||||||
+ * @data_len: NVRAM data size
|
+ * @data_len: NVRAM data size
|
||||||
+ * @padding_byte: Padding value used to fill remaining space
|
+ * @padding_byte: Padding value used to fill remaining space
|
||||||
|
+ * @cells: Array of discovered NVMEM cells
|
||||||
|
+ * @ncells: Number of elements in cells
|
||||||
+ */
|
+ */
|
||||||
struct brcm_nvram {
|
struct brcm_nvram {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -53,7 +57,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
struct nvmem_cell_info *cells;
|
struct nvmem_cell_info *cells;
|
||||||
int ncells;
|
int ncells;
|
||||||
};
|
};
|
||||||
@@ -36,10 +47,47 @@ static int brcm_nvram_read(void *context
|
@@ -36,10 +50,47 @@ static int brcm_nvram_read(void *context
|
||||||
size_t bytes)
|
size_t bytes)
|
||||||
{
|
{
|
||||||
struct brcm_nvram *priv = context;
|
struct brcm_nvram *priv = context;
|
||||||
|
@ -104,7 +108,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -67,8 +115,13 @@ static int brcm_nvram_add_cells(struct b
|
@@ -67,8 +118,13 @@ static int brcm_nvram_add_cells(struct b
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
struct device *dev = priv->dev;
|
struct device *dev = priv->dev;
|
||||||
|
@ -119,7 +123,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
priv->ncells = 0;
|
priv->ncells = 0;
|
||||||
for (var = data + sizeof(struct brcm_nvram_header);
|
for (var = data + sizeof(struct brcm_nvram_header);
|
||||||
@@ -78,67 +131,67 @@ static int brcm_nvram_add_cells(struct b
|
@@ -78,67 +134,68 @@ static int brcm_nvram_add_cells(struct b
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->cells = devm_kcalloc(dev, priv->ncells, sizeof(*priv->cells), GFP_KERNEL);
|
priv->cells = devm_kcalloc(dev, priv->ncells, sizeof(*priv->cells), GFP_KERNEL);
|
||||||
|
@ -204,7 +208,8 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
- return err;
|
- return err;
|
||||||
+ len = le32_to_cpu(header->len);
|
+ len = le32_to_cpu(header->len);
|
||||||
+ if (len > priv->nvmem_size) {
|
+ if (len > priv->nvmem_size) {
|
||||||
+ dev_err(dev, "NVRAM length (%zd) exceeds mapped size (%zd)\n", len, priv->nvmem_size);
|
+ dev_err(dev, "NVRAM length (%zd) exceeds mapped size (%zd)\n", len,
|
||||||
|
+ priv->nvmem_size);
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +220,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -150,7 +203,6 @@ static int brcm_nvram_probe(struct platf
|
@@ -150,7 +207,6 @@ static int brcm_nvram_probe(struct platf
|
||||||
.reg_read = brcm_nvram_read,
|
.reg_read = brcm_nvram_read,
|
||||||
};
|
};
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
|
@ -223,7 +228,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
struct brcm_nvram *priv;
|
struct brcm_nvram *priv;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -159,21 +211,19 @@ static int brcm_nvram_probe(struct platf
|
@@ -159,21 +215,19 @@ static int brcm_nvram_probe(struct platf
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
|
|
|
@ -25,23 +25,27 @@ Cc: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||||||
Cc: Florian Fainelli <florian.fainelli@broadcom.com>
|
Cc: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||||
Cc: Scott Branden <scott.branden@broadcom.com>
|
Cc: Scott Branden <scott.branden@broadcom.com>
|
||||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
Acked-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||||||
---
|
---
|
||||||
drivers/nvmem/brcm_nvram.c | 130 +++++++++++++++++++++++++------------
|
drivers/nvmem/brcm_nvram.c | 134 ++++++++++++++++++++++++++-----------
|
||||||
1 file changed, 90 insertions(+), 40 deletions(-)
|
1 file changed, 94 insertions(+), 40 deletions(-)
|
||||||
|
|
||||||
--- a/drivers/nvmem/brcm_nvram.c
|
--- a/drivers/nvmem/brcm_nvram.c
|
||||||
+++ b/drivers/nvmem/brcm_nvram.c
|
+++ b/drivers/nvmem/brcm_nvram.c
|
||||||
@@ -17,9 +17,20 @@
|
@@ -17,9 +17,23 @@
|
||||||
|
|
||||||
#define NVRAM_MAGIC "FLSH"
|
#define NVRAM_MAGIC "FLSH"
|
||||||
|
|
||||||
+/**
|
+/**
|
||||||
+ * struct brcm_nvram - driver state internal struct
|
+ * struct brcm_nvram - driver state internal struct
|
||||||
+ *
|
+ *
|
||||||
|
+ * @dev: NVMEM device pointer
|
||||||
+ * @nvmem_size: Size of the whole space available for NVRAM
|
+ * @nvmem_size: Size of the whole space available for NVRAM
|
||||||
+ * @data: NVRAM data copy stored to avoid poking underlaying flash controller
|
+ * @data: NVRAM data copy stored to avoid poking underlaying flash controller
|
||||||
+ * @data_len: NVRAM data size
|
+ * @data_len: NVRAM data size
|
||||||
+ * @padding_byte: Padding value used to fill remaining space
|
+ * @padding_byte: Padding value used to fill remaining space
|
||||||
|
+ * @cells: Array of discovered NVMEM cells
|
||||||
|
+ * @ncells: Number of elements in cells
|
||||||
+ */
|
+ */
|
||||||
struct brcm_nvram {
|
struct brcm_nvram {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -53,7 +57,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
struct nvmem_cell_info *cells;
|
struct nvmem_cell_info *cells;
|
||||||
int ncells;
|
int ncells;
|
||||||
};
|
};
|
||||||
@@ -36,10 +47,47 @@ static int brcm_nvram_read(void *context
|
@@ -36,10 +50,47 @@ static int brcm_nvram_read(void *context
|
||||||
size_t bytes)
|
size_t bytes)
|
||||||
{
|
{
|
||||||
struct brcm_nvram *priv = context;
|
struct brcm_nvram *priv = context;
|
||||||
|
@ -104,7 +108,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -67,8 +115,13 @@ static int brcm_nvram_add_cells(struct b
|
@@ -67,8 +118,13 @@ static int brcm_nvram_add_cells(struct b
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
struct device *dev = priv->dev;
|
struct device *dev = priv->dev;
|
||||||
|
@ -119,7 +123,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
priv->ncells = 0;
|
priv->ncells = 0;
|
||||||
for (var = data + sizeof(struct brcm_nvram_header);
|
for (var = data + sizeof(struct brcm_nvram_header);
|
||||||
@@ -78,67 +131,67 @@ static int brcm_nvram_add_cells(struct b
|
@@ -78,67 +134,68 @@ static int brcm_nvram_add_cells(struct b
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->cells = devm_kcalloc(dev, priv->ncells, sizeof(*priv->cells), GFP_KERNEL);
|
priv->cells = devm_kcalloc(dev, priv->ncells, sizeof(*priv->cells), GFP_KERNEL);
|
||||||
|
@ -204,7 +208,8 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
- return err;
|
- return err;
|
||||||
+ len = le32_to_cpu(header->len);
|
+ len = le32_to_cpu(header->len);
|
||||||
+ if (len > priv->nvmem_size) {
|
+ if (len > priv->nvmem_size) {
|
||||||
+ dev_err(dev, "NVRAM length (%zd) exceeds mapped size (%zd)\n", len, priv->nvmem_size);
|
+ dev_err(dev, "NVRAM length (%zd) exceeds mapped size (%zd)\n", len,
|
||||||
|
+ priv->nvmem_size);
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +220,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -150,7 +203,6 @@ static int brcm_nvram_probe(struct platf
|
@@ -150,7 +207,6 @@ static int brcm_nvram_probe(struct platf
|
||||||
.reg_read = brcm_nvram_read,
|
.reg_read = brcm_nvram_read,
|
||||||
};
|
};
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
|
@ -223,7 +228,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||||
struct brcm_nvram *priv;
|
struct brcm_nvram *priv;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -159,21 +211,19 @@ static int brcm_nvram_probe(struct platf
|
@@ -159,21 +215,19 @@ static int brcm_nvram_probe(struct platf
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
priv->dev = dev;
|
priv->dev = dev;
|
||||||
|
|
|
@ -52,7 +52,6 @@ CONFIG_ARM_GIC_V3_ITS=y
|
||||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||||
# CONFIG_ARM_MHU_V2 is not set
|
# CONFIG_ARM_MHU_V2 is not set
|
||||||
CONFIG_ARM_PSCI_CPUIDLE=y
|
CONFIG_ARM_PSCI_CPUIDLE=y
|
||||||
CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
|
|
||||||
CONFIG_ARM_PSCI_FW=y
|
CONFIG_ARM_PSCI_FW=y
|
||||||
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
|
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
|
||||||
CONFIG_ARM_QCOM_CPUFREQ_NVMEM=y
|
CONFIG_ARM_QCOM_CPUFREQ_NVMEM=y
|
||||||
|
@ -135,7 +134,6 @@ CONFIG_DMA_ENGINE=y
|
||||||
CONFIG_DMA_OF=y
|
CONFIG_DMA_OF=y
|
||||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||||
CONFIG_DTC=y
|
CONFIG_DTC=y
|
||||||
CONFIG_DT_IDLE_GENPD=y
|
|
||||||
CONFIG_DT_IDLE_STATES=y
|
CONFIG_DT_IDLE_STATES=y
|
||||||
CONFIG_EDAC_SUPPORT=y
|
CONFIG_EDAC_SUPPORT=y
|
||||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||||
|
@ -200,7 +198,7 @@ CONFIG_IPQ_APSS_PLL=y
|
||||||
# CONFIG_IPQ_GCC_4019 is not set
|
# CONFIG_IPQ_GCC_4019 is not set
|
||||||
# CONFIG_IPQ_GCC_6018 is not set
|
# CONFIG_IPQ_GCC_6018 is not set
|
||||||
# CONFIG_IPQ_GCC_806X is not set
|
# CONFIG_IPQ_GCC_806X is not set
|
||||||
CONFIG_IPQ_GCC_8074=y
|
# CONFIG_IPQ_GCC_8074 is not set
|
||||||
# CONFIG_IPQ_LCC_806X is not set
|
# CONFIG_IPQ_LCC_806X is not set
|
||||||
CONFIG_IRQCHIP=y
|
CONFIG_IRQCHIP=y
|
||||||
CONFIG_IRQ_DOMAIN=y
|
CONFIG_IRQ_DOMAIN=y
|
||||||
|
@ -223,9 +221,7 @@ CONFIG_MDIO_IPQ4019=y
|
||||||
# CONFIG_MDM_GCC_9615 is not set
|
# CONFIG_MDM_GCC_9615 is not set
|
||||||
# CONFIG_MDM_LCC_9615 is not set
|
# CONFIG_MDM_LCC_9615 is not set
|
||||||
CONFIG_MEMFD_CREATE=y
|
CONFIG_MEMFD_CREATE=y
|
||||||
# CONFIG_MFD_HI6421_SPMI is not set
|
|
||||||
# CONFIG_MFD_QCOM_RPM is not set
|
# CONFIG_MFD_QCOM_RPM is not set
|
||||||
CONFIG_MFD_SPMI_PMIC=y
|
|
||||||
CONFIG_MFD_SYSCON=y
|
CONFIG_MFD_SYSCON=y
|
||||||
CONFIG_MIGRATION=y
|
CONFIG_MIGRATION=y
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
|
@ -279,7 +275,6 @@ CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
|
||||||
CONFIG_NVMEM=y
|
CONFIG_NVMEM=y
|
||||||
CONFIG_NVMEM_QCOM_QFPROM=y
|
CONFIG_NVMEM_QCOM_QFPROM=y
|
||||||
# CONFIG_NVMEM_QCOM_SEC_QFPROM is not set
|
# CONFIG_NVMEM_QCOM_SEC_QFPROM is not set
|
||||||
# CONFIG_NVMEM_SPMI_SDAM is not set
|
|
||||||
CONFIG_NVMEM_SYSFS=y
|
CONFIG_NVMEM_SYSFS=y
|
||||||
CONFIG_NVMEM_U_BOOT_ENV=y
|
CONFIG_NVMEM_U_BOOT_ENV=y
|
||||||
CONFIG_OF=y
|
CONFIG_OF=y
|
||||||
|
@ -327,7 +322,7 @@ CONFIG_PHY_QCOM_QUSB2=y
|
||||||
# CONFIG_PHY_QCOM_USB_SS is not set
|
# CONFIG_PHY_QCOM_USB_SS is not set
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
# CONFIG_PINCTRL_IPQ6018 is not set
|
# CONFIG_PINCTRL_IPQ6018 is not set
|
||||||
CONFIG_PINCTRL_IPQ8074=y
|
# CONFIG_PINCTRL_IPQ8074 is not set
|
||||||
CONFIG_PINCTRL_MSM=y
|
CONFIG_PINCTRL_MSM=y
|
||||||
# CONFIG_PINCTRL_MSM8916 is not set
|
# CONFIG_PINCTRL_MSM8916 is not set
|
||||||
# CONFIG_PINCTRL_MSM8976 is not set
|
# CONFIG_PINCTRL_MSM8976 is not set
|
||||||
|
@ -335,7 +330,6 @@ CONFIG_PINCTRL_MSM=y
|
||||||
# CONFIG_PINCTRL_MSM8996 is not set
|
# CONFIG_PINCTRL_MSM8996 is not set
|
||||||
# CONFIG_PINCTRL_MSM8998 is not set
|
# CONFIG_PINCTRL_MSM8998 is not set
|
||||||
# CONFIG_PINCTRL_QCM2290 is not set
|
# CONFIG_PINCTRL_QCM2290 is not set
|
||||||
CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
|
|
||||||
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
|
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
|
||||||
# CONFIG_PINCTRL_QCS404 is not set
|
# CONFIG_PINCTRL_QCS404 is not set
|
||||||
# CONFIG_PINCTRL_SC7180 is not set
|
# CONFIG_PINCTRL_SC7180 is not set
|
||||||
|
@ -348,15 +342,11 @@ CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
|
||||||
# CONFIG_PINCTRL_SM8250 is not set
|
# CONFIG_PINCTRL_SM8250 is not set
|
||||||
# CONFIG_PINCTRL_SM8450 is not set
|
# CONFIG_PINCTRL_SM8450 is not set
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
# CONFIG_PM8916_WATCHDOG is not set
|
|
||||||
CONFIG_PM_CLK=y
|
CONFIG_PM_CLK=y
|
||||||
CONFIG_PM_GENERIC_DOMAINS=y
|
|
||||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
|
||||||
CONFIG_PM_OPP=y
|
CONFIG_PM_OPP=y
|
||||||
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
|
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
|
||||||
CONFIG_POWER_RESET=y
|
CONFIG_POWER_RESET=y
|
||||||
# CONFIG_POWER_RESET_MSM is not set
|
# CONFIG_POWER_RESET_MSM is not set
|
||||||
# CONFIG_POWER_RESET_QCOM_PON is not set
|
|
||||||
CONFIG_POWER_SUPPLY=y
|
CONFIG_POWER_SUPPLY=y
|
||||||
CONFIG_PREEMPT_NONE_BUILD=y
|
CONFIG_PREEMPT_NONE_BUILD=y
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
|
@ -366,18 +356,16 @@ CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||||
# CONFIG_QCOM_A53PLL is not set
|
# CONFIG_QCOM_A53PLL is not set
|
||||||
# CONFIG_QCOM_AOSS_QMP is not set
|
# CONFIG_QCOM_AOSS_QMP is not set
|
||||||
CONFIG_QCOM_APCS_IPC=y
|
CONFIG_QCOM_APCS_IPC=y
|
||||||
CONFIG_QCOM_APM=y
|
# CONFIG_QCOM_APM is not set
|
||||||
# CONFIG_QCOM_APR is not set
|
# CONFIG_QCOM_APR is not set
|
||||||
CONFIG_QCOM_BAM_DMA=y
|
CONFIG_QCOM_BAM_DMA=y
|
||||||
# CONFIG_QCOM_CLK_APCC_MSM8996 is not set
|
# CONFIG_QCOM_CLK_APCC_MSM8996 is not set
|
||||||
# CONFIG_QCOM_CLK_APCS_MSM8916 is not set
|
# CONFIG_QCOM_CLK_APCS_MSM8916 is not set
|
||||||
# CONFIG_QCOM_CLK_APCS_SDX55 is not set
|
# CONFIG_QCOM_CLK_APCS_SDX55 is not set
|
||||||
# CONFIG_QCOM_COINCELL is not set
|
|
||||||
# CONFIG_QCOM_COMMAND_DB is not set
|
# CONFIG_QCOM_COMMAND_DB is not set
|
||||||
# CONFIG_QCOM_CPR is not set
|
# CONFIG_QCOM_CPR is not set
|
||||||
# CONFIG_QCOM_EBI2 is not set
|
# CONFIG_QCOM_EBI2 is not set
|
||||||
# CONFIG_QCOM_FASTRPC is not set
|
# CONFIG_QCOM_FASTRPC is not set
|
||||||
CONFIG_QCOM_GDSC=y
|
|
||||||
# CONFIG_QCOM_GENI_SE is not set
|
# CONFIG_QCOM_GENI_SE is not set
|
||||||
# CONFIG_QCOM_GSBI is not set
|
# CONFIG_QCOM_GSBI is not set
|
||||||
# CONFIG_QCOM_HFPLL is not set
|
# CONFIG_QCOM_HFPLL is not set
|
||||||
|
@ -406,12 +394,9 @@ CONFIG_QCOM_SMP2P=y
|
||||||
# CONFIG_QCOM_SMSM is not set
|
# CONFIG_QCOM_SMSM is not set
|
||||||
CONFIG_QCOM_SOCINFO=y
|
CONFIG_QCOM_SOCINFO=y
|
||||||
# CONFIG_QCOM_SPM is not set
|
# CONFIG_QCOM_SPM is not set
|
||||||
CONFIG_QCOM_SPMI_ADC5=y
|
|
||||||
# CONFIG_QCOM_SPMI_RRADC is not set
|
|
||||||
# CONFIG_QCOM_STATS is not set
|
# CONFIG_QCOM_STATS is not set
|
||||||
# CONFIG_QCOM_SYSMON is not set
|
# CONFIG_QCOM_SYSMON is not set
|
||||||
CONFIG_QCOM_TSENS=y
|
CONFIG_QCOM_TSENS=y
|
||||||
CONFIG_QCOM_VADC_COMMON=y
|
|
||||||
# CONFIG_QCOM_WCNSS_CTRL is not set
|
# CONFIG_QCOM_WCNSS_CTRL is not set
|
||||||
# CONFIG_QCOM_WCNSS_PIL is not set
|
# CONFIG_QCOM_WCNSS_PIL is not set
|
||||||
CONFIG_QCOM_WDT=y
|
CONFIG_QCOM_WDT=y
|
||||||
|
@ -425,15 +410,9 @@ CONFIG_RAS=y
|
||||||
CONFIG_RATIONAL=y
|
CONFIG_RATIONAL=y
|
||||||
CONFIG_REGMAP=y
|
CONFIG_REGMAP=y
|
||||||
CONFIG_REGMAP_MMIO=y
|
CONFIG_REGMAP_MMIO=y
|
||||||
CONFIG_REGMAP_SPMI=y
|
|
||||||
CONFIG_REGULATOR=y
|
CONFIG_REGULATOR=y
|
||||||
CONFIG_REGULATOR_CPR3=y
|
# CONFIG_REGULATOR_CPR3 is not set
|
||||||
# CONFIG_REGULATOR_CPR3_NPU is not set
|
|
||||||
CONFIG_REGULATOR_CPR4_APSS=y
|
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
# CONFIG_REGULATOR_QCOM_LABIBB is not set
|
|
||||||
CONFIG_REGULATOR_QCOM_SPMI=y
|
|
||||||
# CONFIG_REGULATOR_QCOM_USB_VBUS is not set
|
|
||||||
# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
|
# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
|
||||||
CONFIG_RELOCATABLE=y
|
CONFIG_RELOCATABLE=y
|
||||||
CONFIG_REMOTEPROC=y
|
CONFIG_REMOTEPROC=y
|
||||||
|
@ -454,7 +433,6 @@ CONFIG_RPMSG_QCOM_SMD=y
|
||||||
# CONFIG_RPMSG_TTY is not set
|
# CONFIG_RPMSG_TTY is not set
|
||||||
CONFIG_RPS=y
|
CONFIG_RPS=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_PM8XXX=y
|
|
||||||
CONFIG_RTC_I2C_AND_SPI=y
|
CONFIG_RTC_I2C_AND_SPI=y
|
||||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||||
# CONFIG_SCHED_CORE is not set
|
# CONFIG_SCHED_CORE is not set
|
||||||
|
@ -512,10 +490,6 @@ CONFIG_SPI=y
|
||||||
CONFIG_SPI_MASTER=y
|
CONFIG_SPI_MASTER=y
|
||||||
CONFIG_SPI_MEM=y
|
CONFIG_SPI_MEM=y
|
||||||
CONFIG_SPI_QUP=y
|
CONFIG_SPI_QUP=y
|
||||||
CONFIG_SPMI=y
|
|
||||||
# CONFIG_SPMI_HISI3670 is not set
|
|
||||||
CONFIG_SPMI_MSM_PMIC_ARB=y
|
|
||||||
# CONFIG_SPMI_PMIC_CLKDIV is not set
|
|
||||||
CONFIG_SRCU=y
|
CONFIG_SRCU=y
|
||||||
CONFIG_SWIOTLB=y
|
CONFIG_SWIOTLB=y
|
||||||
CONFIG_SWPHY=y
|
CONFIG_SWPHY=y
|
||||||
|
|
30
target/linux/qualcommax/ipq807x/config-default
Normal file
30
target/linux/qualcommax/ipq807x/config-default
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
|
||||||
|
CONFIG_DT_IDLE_GENPD=y
|
||||||
|
CONFIG_IPQ_GCC_8074=y
|
||||||
|
# CONFIG_MFD_HI6421_SPMI is not set
|
||||||
|
CONFIG_MFD_SPMI_PMIC=y
|
||||||
|
# CONFIG_NVMEM_SPMI_SDAM is not set
|
||||||
|
CONFIG_PINCTRL_IPQ8074=y
|
||||||
|
CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
|
||||||
|
# CONFIG_PM8916_WATCHDOG is not set
|
||||||
|
CONFIG_PM_GENERIC_DOMAINS=y
|
||||||
|
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||||
|
# CONFIG_POWER_RESET_QCOM_PON is not set
|
||||||
|
CONFIG_QCOM_APM=y
|
||||||
|
# CONFIG_QCOM_COINCELL is not set
|
||||||
|
CONFIG_QCOM_GDSC=y
|
||||||
|
CONFIG_QCOM_SPMI_ADC5=y
|
||||||
|
# CONFIG_QCOM_SPMI_RRADC is not set
|
||||||
|
CONFIG_QCOM_VADC_COMMON=y
|
||||||
|
CONFIG_REGMAP_SPMI=y
|
||||||
|
CONFIG_REGULATOR_CPR3=y
|
||||||
|
# CONFIG_REGULATOR_CPR3_NPU is not set
|
||||||
|
CONFIG_REGULATOR_CPR4_APSS=y
|
||||||
|
# CONFIG_REGULATOR_QCOM_LABIBB is not set
|
||||||
|
CONFIG_REGULATOR_QCOM_SPMI=y
|
||||||
|
# CONFIG_REGULATOR_QCOM_USB_VBUS is not set
|
||||||
|
CONFIG_RTC_DRV_PM8XXX=y
|
||||||
|
CONFIG_SPMI=y
|
||||||
|
# CONFIG_SPMI_HISI3670 is not set
|
||||||
|
CONFIG_SPMI_MSM_PMIC_ARB=y
|
||||||
|
# CONFIG_SPMI_PMIC_CLKDIV is not set
|
|
@ -23,7 +23,7 @@ ifeq ($(HOST_OS),Darwin)
|
||||||
HOST_CFLAGS += -I/opt/homebrew/include
|
HOST_CFLAGS += -I/opt/homebrew/include
|
||||||
endif
|
endif
|
||||||
|
|
||||||
HOST_CFLAGS += -Wno-error
|
HOST_CFLAGS += -Wno-error -fPIC
|
||||||
|
|
||||||
HOST_CONFIGURE_ARGS += \
|
HOST_CONFIGURE_ARGS += \
|
||||||
--without-libintl-prefix \
|
--without-libintl-prefix \
|
||||||
|
@ -34,6 +34,7 @@ HOST_CONFIGURE_ARGS += \
|
||||||
--disable-shared \
|
--disable-shared \
|
||||||
--enable-static \
|
--enable-static \
|
||||||
--without-lzma \
|
--without-lzma \
|
||||||
|
--without-bzlib \
|
||||||
--without-zstd
|
--without-zstd
|
||||||
|
|
||||||
ifeq ($(HOST_OS),Darwin)
|
ifeq ($(HOST_OS),Darwin)
|
||||||
|
|
|
@ -291,7 +291,7 @@
|
||||||
case DW_TAG_rvalue_reference_type
|
case DW_TAG_rvalue_reference_type
|
||||||
|
|
||||||
+#define auxv_info_alias(arch) \
|
+#define auxv_info_alias(arch) \
|
||||||
+ int EBLHOOK_1(arch, auxv_info) (GElf_Xword a_type, const char **name, const char **format) \
|
+ int EBLHOOK_1(arch ## _, auxv_info) (GElf_Xword a_type, const char **name, const char **format) \
|
||||||
+ { \
|
+ { \
|
||||||
+ return EBLHOOK(auxv_info)(a_type, name, format); \
|
+ return EBLHOOK(auxv_info)(a_type, name, format); \
|
||||||
+ }
|
+ }
|
||||||
|
|
|
@ -10,15 +10,20 @@
|
||||||
#define _ASM_GENERIC_INT_LL64_H
|
#define _ASM_GENERIC_INT_LL64_H
|
||||||
|
|
||||||
typedef __signed__ char __s8;
|
typedef __signed__ char __s8;
|
||||||
|
typedef unsigned char __u8;
|
||||||
|
|
||||||
typedef __signed__ short __s16;
|
typedef __signed__ short __s16;
|
||||||
|
typedef unsigned short __u16;
|
||||||
|
|
||||||
typedef __signed__ int __s32;
|
typedef __signed__ int __s32;
|
||||||
|
typedef unsigned int __u32;
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
__extension__ typedef __signed__ long long __s64;
|
__extension__ typedef __signed__ long long __s64;
|
||||||
|
__extension__ typedef unsigned long long __u64;
|
||||||
#else
|
#else
|
||||||
typedef __signed__ long long __s64;
|
typedef __signed__ long long __s64;
|
||||||
|
typedef unsigned long long __u64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _ASM_GENERIC_INT_LL64_H */
|
#endif /* _ASM_GENERIC_INT_LL64_H */
|
||||||
|
|
Loading…
Reference in a new issue