Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
40a0abec18
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"git.alwaysSignOff": true
|
||||||
|
}
|
3
package/base-files/files/etc/hotplug.d/leds/00-init
Normal file
3
package/base-files/files/etc/hotplug.d/leds/00-init
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ "$ACTION" = "add" ] && /etc/init.d/led start "$DEVICENAME"
|
@ -64,6 +64,8 @@ load_led() {
|
|||||||
config_get gpio $1 gpio "0"
|
config_get gpio $1 gpio "0"
|
||||||
config_get_bool inverted $1 inverted "0"
|
config_get_bool inverted $1 inverted "0"
|
||||||
|
|
||||||
|
[ "$2" ] && [ "$sysfs" != "$2" ] && return
|
||||||
|
|
||||||
# execute application led trigger
|
# execute application led trigger
|
||||||
[ -f "/usr/libexec/led-trigger/${trigger}" ] && {
|
[ -f "/usr/libexec/led-trigger/${trigger}" ] && {
|
||||||
. "/usr/libexec/led-trigger/${trigger}"
|
. "/usr/libexec/led-trigger/${trigger}"
|
||||||
@ -121,7 +123,7 @@ load_led() {
|
|||||||
[ -e "/sys/class/leds/${sysfs}/$m" ] && \
|
[ -e "/sys/class/leds/${sysfs}/$m" ] && \
|
||||||
echo 1 > /sys/class/leds/${sysfs}/$m
|
echo 1 > /sys/class/leds/${sysfs}/$m
|
||||||
done
|
done
|
||||||
echo $interval > /sys/class/leds/${sysfs}/interval
|
echo $interval > /sys/class/leds/${sysfs}/interval 2>/dev/null
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -171,6 +173,7 @@ start() {
|
|||||||
[ -s /var/run/led.state ] && {
|
[ -s /var/run/led.state ] && {
|
||||||
local led trigger brightness color
|
local led trigger brightness color
|
||||||
while read led trigger brightness color; do
|
while read led trigger brightness color; do
|
||||||
|
[ "$1" ] && [ "$1" != "$led" ] && continue
|
||||||
[ -e "/sys/class/leds/$led/trigger" ] && \
|
[ -e "/sys/class/leds/$led/trigger" ] && \
|
||||||
echo "$trigger" > "/sys/class/leds/$led/trigger"
|
echo "$trigger" > "/sys/class/leds/$led/trigger"
|
||||||
|
|
||||||
@ -185,6 +188,6 @@ start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config_load system
|
config_load system
|
||||||
config_foreach load_led led
|
config_foreach load_led led "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1,2 @@
|
|||||||
# Defaults are configured in /etc/sysctl.d/* and can be customized in this file
|
# User defined entries should be added to this file not to /etc/sysctl.d/* as
|
||||||
|
# that directory is not backed-up by default and will not survive a reimage
|
||||||
|
@ -702,10 +702,7 @@ define KernelPackage/pstore
|
|||||||
DEFAULT:=m if ALL_KMODS
|
DEFAULT:=m if ALL_KMODS
|
||||||
KCONFIG:= \
|
KCONFIG:= \
|
||||||
CONFIG_PSTORE \
|
CONFIG_PSTORE \
|
||||||
CONFIG_PSTORE_COMPRESS=y \
|
CONFIG_PSTORE_COMPRESS=y
|
||||||
CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" \
|
|
||||||
CONFIG_PSTORE_DEFLATE_COMPRESS=y \
|
|
||||||
CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
|
|
||||||
FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko
|
FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko
|
||||||
AUTOLOAD:=$(call AutoLoad,30,pstore,1)
|
AUTOLOAD:=$(call AutoLoad,30,pstore,1)
|
||||||
DEPENDS:=+kmod-lib-zlib-deflate +kmod-lib-zlib-inflate
|
DEPENDS:=+kmod-lib-zlib-deflate +kmod-lib-zlib-inflate
|
||||||
|
@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=6.11
|
PKG_VERSION:=6.11.2
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
|
|
||||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
||||||
PKG_HASH:=2c091ce9520c2e4c8a9c91a294f3c040f90cd76222674928e61542ead06cfa41
|
PKG_HASH:=700ea5abef8dde9e3c6df2acd32ff443da735d773d56db9a80269e2237549b34
|
||||||
|
|
||||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION)
|
||||||
|
@ -383,7 +383,7 @@ define KernelPackage/ath12k
|
|||||||
URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath12k
|
URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath12k
|
||||||
DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT \
|
DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT \
|
||||||
+kmod-crypto-michael-mic +kmod-qrtr-mhi \
|
+kmod-crypto-michael-mic +kmod-qrtr-mhi \
|
||||||
+kmod-qcom-qmi-helpers
|
+kmod-qcom-qmi-helpers +@DRIVER_11BE_SUPPORT
|
||||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath12k/ath12k.ko
|
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath12k/ath12k.ko
|
||||||
AUTOLOAD:=$(call AutoProbe,ath12k)
|
AUTOLOAD:=$(call AutoProbe,ath12k)
|
||||||
endef
|
endef
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||||
@@ -1431,6 +1431,7 @@ int ath9k_init_debug(struct ath_hw *ah)
|
@@ -1429,6 +1429,7 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||||
|
|
||||||
ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
||||||
ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
||||||
@ -82,7 +82,7 @@
|
|||||||
void ath9k_cmn_debug_recv(struct dentry *debugfs_phy,
|
void ath9k_cmn_debug_recv(struct dentry *debugfs_phy,
|
||||||
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
||||||
@@ -514,6 +514,7 @@ int ath9k_htc_init_debug(struct ath_hw *
|
@@ -512,6 +512,7 @@ int ath9k_htc_init_debug(struct ath_hw *
|
||||||
|
|
||||||
ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah);
|
ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah);
|
||||||
ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah);
|
ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||||
@@ -1432,6 +1432,7 @@ int ath9k_init_debug(struct ath_hw *ah)
|
@@ -1430,6 +1430,7 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||||
ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
ath9k_cmn_debug_base_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
||||||
ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
ath9k_cmn_debug_modal_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
||||||
ath9k_cmn_debug_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
ath9k_cmn_debug_eeprom(sc->debug.debugfs_phy, sc->sc_ah);
|
||||||
@ -137,7 +137,7 @@
|
|||||||
+EXPORT_SYMBOL(ath9k_cmn_debug_chanbw);
|
+EXPORT_SYMBOL(ath9k_cmn_debug_chanbw);
|
||||||
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
|
||||||
@@ -515,6 +515,7 @@ int ath9k_htc_init_debug(struct ath_hw *
|
@@ -513,6 +513,7 @@ int ath9k_htc_init_debug(struct ath_hw *
|
||||||
ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah);
|
ath9k_cmn_debug_base_eeprom(priv->debug.debugfs_phy, priv->ah);
|
||||||
ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah);
|
ath9k_cmn_debug_modal_eeprom(priv->debug.debugfs_phy, priv->ah);
|
||||||
ath9k_cmn_debug_eeprom(priv->debug.debugfs_phy, priv->ah);
|
ath9k_cmn_debug_eeprom(priv->debug.debugfs_phy, priv->ah);
|
||||||
|
@ -254,7 +254,7 @@
|
|||||||
|
|
||||||
static ssize_t read_file_ani(struct file *file, char __user *user_buf,
|
static ssize_t read_file_ani(struct file *file, char __user *user_buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
@@ -1392,6 +1447,10 @@ int ath9k_init_debug(struct ath_hw *ah)
|
@@ -1390,6 +1445,10 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||||
ath9k_tx99_init_debug(sc);
|
ath9k_tx99_init_debug(sc);
|
||||||
ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy);
|
ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy);
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
int ath9k_init_debug(struct ath_hw *ah)
|
int ath9k_init_debug(struct ath_hw *ah)
|
||||||
{
|
{
|
||||||
struct ath_common *common = ath9k_hw_common(ah);
|
struct ath_common *common = ath9k_hw_common(ah);
|
||||||
@@ -1451,6 +1495,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
@@ -1449,6 +1493,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||||
debugfs_create_file("gpio_led", S_IWUSR,
|
debugfs_create_file("gpio_led", S_IWUSR,
|
||||||
sc->debug.debugfs_phy, sc, &fops_gpio_led);
|
sc->debug.debugfs_phy, sc, &fops_gpio_led);
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||||
@@ -3313,6 +3313,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
@@ -3314,6 +3314,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||||
* preference in cfg struct to apply this to
|
* preference in cfg struct to apply this to
|
||||||
* FW later while initializing the dongle
|
* FW later while initializing the dongle
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
@@ -2101,6 +2101,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
@@ -2102,6 +2102,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
||||||
goto err_wiphy_new;
|
goto err_wiphy_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
@@ -2178,6 +2178,8 @@ int lbs_cfg_register(struct lbs_private
|
@@ -2179,6 +2179,8 @@ int lbs_cfg_register(struct lbs_private
|
||||||
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
||||||
wdev->wiphy->reg_notifier = lbs_reg_notifier;
|
wdev->wiphy->reg_notifier = lbs_reg_notifier;
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (iter == txqi)
|
if (iter == txqi)
|
||||||
--- a/include/net/mac80211.h
|
--- a/include/net/mac80211.h
|
||||||
+++ b/include/net/mac80211.h
|
+++ b/include/net/mac80211.h
|
||||||
@@ -1221,8 +1221,8 @@ struct ieee80211_tx_info {
|
@@ -1222,8 +1222,8 @@ struct ieee80211_tx_info {
|
||||||
status_data_idr:1,
|
status_data_idr:1,
|
||||||
status_data:13,
|
status_data:13,
|
||||||
hw_queue:4,
|
hw_queue:4,
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
have_80mhz = true;
|
have_80mhz = true;
|
||||||
--- a/net/mac80211/mlme.c
|
--- a/net/mac80211/mlme.c
|
||||||
+++ b/net/mac80211/mlme.c
|
+++ b/net/mac80211/mlme.c
|
||||||
@@ -5246,7 +5246,8 @@ ieee80211_determine_our_sta_mode(struct
|
@@ -5249,7 +5249,8 @@ ieee80211_determine_our_sta_mode(struct
|
||||||
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
||||||
for (i = 0; i < sband->n_channels; i++) {
|
for (i = 0; i < sband->n_channels; i++) {
|
||||||
if (sband->channels[i].flags & (IEEE80211_CHAN_DISABLED |
|
if (sband->channels[i].flags & (IEEE80211_CHAN_DISABLED |
|
||||||
|
@ -367,7 +367,7 @@ define KernelPackage/mt7925-common
|
|||||||
$(KernelPackage/mt76-default)
|
$(KernelPackage/mt76-default)
|
||||||
TITLE:=MediaTek MT7925 wireless driver common code
|
TITLE:=MediaTek MT7925 wireless driver common code
|
||||||
HIDDEN:=1
|
HIDDEN:=1
|
||||||
DEPENDS+=+kmod-mt792x-common +@DRIVER_11AX_SUPPORT +kmod-hwmon-core
|
DEPENDS+=+kmod-mt792x-common +@DRIVER_11AX_SUPPORT +kmod-hwmon-core +@DRIVER_11BE_SUPPORT
|
||||||
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925-common.ko
|
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925-common.ko
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@ -664,6 +664,7 @@ define KernelPackage/mt7992-firmware/install
|
|||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_dsp.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_dsp.bin \
|
||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom.bin \
|
||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_2i5i.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_2i5i.bin \
|
||||||
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_eeprom_2i5e.bin \
|
||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_rom_patch.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_rom_patch.bin \
|
||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wa.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wa.bin \
|
||||||
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wm.bin \
|
$(PKG_BUILD_DIR)/firmware/mt7996/mt7992_wm.bin \
|
||||||
|
11
package/kernel/mt76/patches/100-api_update.patch
Normal file
11
package/kernel/mt76/patches/100-api_update.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- a/tx.c
|
||||||
|
+++ b/tx.c
|
||||||
|
@@ -350,7 +350,7 @@ mt76_tx(struct mt76_phy *phy, struct iee
|
||||||
|
info->hw_queue |= FIELD_PREP(MT_TX_HW_QUEUE_PHY, phy->band_idx);
|
||||||
|
|
||||||
|
if ((info->flags & IEEE80211_TX_CTL_TX_OFFCHAN) ||
|
||||||
|
- (info->control.flags & IEEE80211_TX_CTRL_SCAN_TX))
|
||||||
|
+ (info->control.flags & IEEE80211_TX_CTRL_DONT_USE_RATE_MASK))
|
||||||
|
head = &wcid->tx_offchannel;
|
||||||
|
else
|
||||||
|
head = &wcid->tx_pending;
|
@ -149,7 +149,6 @@ static int ubnt_ledbar_init_led(struct device_node *np, struct ubnt_ledbar *ledb
|
|||||||
struct led_classdev *led_cdev)
|
struct led_classdev *led_cdev)
|
||||||
{
|
{
|
||||||
struct led_init_data init_data = {};
|
struct led_init_data init_data = {};
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (!np)
|
if (!np)
|
||||||
return 0;
|
return 0;
|
||||||
@ -158,19 +157,13 @@ static int ubnt_ledbar_init_led(struct device_node *np, struct ubnt_ledbar *ledb
|
|||||||
|
|
||||||
led_cdev->max_brightness = UBNT_LEDBAR_MAX_BRIGHTNESS;
|
led_cdev->max_brightness = UBNT_LEDBAR_MAX_BRIGHTNESS;
|
||||||
|
|
||||||
ret = devm_led_classdev_register_ext(&ledbar->client->dev, led_cdev,
|
return devm_led_classdev_register_ext(&ledbar->client->dev, led_cdev, &init_data);
|
||||||
&init_data);
|
|
||||||
if (ret)
|
|
||||||
dev_err(&ledbar->client->dev, "led register err: %d\n", ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ubnt_ledbar_probe(struct i2c_client *client)
|
static int ubnt_ledbar_probe(struct i2c_client *client)
|
||||||
{
|
{
|
||||||
struct device_node *np = client->dev.of_node;
|
struct device_node *np = client->dev.of_node;
|
||||||
struct ubnt_ledbar *ledbar;
|
struct ubnt_ledbar *ledbar;
|
||||||
int ret;
|
|
||||||
|
|
||||||
ledbar = devm_kzalloc(&client->dev, sizeof(*ledbar), GFP_KERNEL);
|
ledbar = devm_kzalloc(&client->dev, sizeof(*ledbar), GFP_KERNEL);
|
||||||
if (!ledbar)
|
if (!ledbar)
|
||||||
@ -178,19 +171,13 @@ static int ubnt_ledbar_probe(struct i2c_client *client)
|
|||||||
|
|
||||||
ledbar->enable_gpio = devm_gpiod_get(&client->dev, "enable", GPIOD_OUT_LOW);
|
ledbar->enable_gpio = devm_gpiod_get(&client->dev, "enable", GPIOD_OUT_LOW);
|
||||||
|
|
||||||
if (IS_ERR(ledbar->enable_gpio)) {
|
if (IS_ERR(ledbar->enable_gpio))
|
||||||
ret = PTR_ERR(ledbar->enable_gpio);
|
return dev_err_probe(&client->dev, PTR_ERR(ledbar->enable_gpio), "Failed to get enable gpio");
|
||||||
dev_err(&client->dev, "Failed to get enable gpio: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ledbar->reset_gpio = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_LOW);
|
ledbar->reset_gpio = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_LOW);
|
||||||
|
|
||||||
if (IS_ERR(ledbar->reset_gpio)) {
|
if (IS_ERR(ledbar->reset_gpio))
|
||||||
ret = PTR_ERR(ledbar->reset_gpio);
|
return dev_err_probe(&client->dev, PTR_ERR(ledbar->reset_gpio), "Failed to get reset gpio");
|
||||||
dev_err(&client->dev, "Failed to get reset gpio: %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ledbar->led_count = 1;
|
ledbar->led_count = 1;
|
||||||
of_property_read_u32(np, "led-count", &ledbar->led_count);
|
of_property_read_u32(np, "led-count", &ledbar->led_count);
|
||||||
|
@ -191,7 +191,7 @@ function wiphy_detect() {
|
|||||||
push(modes, "EHT160");
|
push(modes, "EHT160");
|
||||||
|
|
||||||
if (eht_phy_cap & 2)
|
if (eht_phy_cap & 2)
|
||||||
push(modes, "ETH320");
|
push(modes, "EHT320");
|
||||||
}
|
}
|
||||||
|
|
||||||
let entry = wiphy_get_entry(name, path);
|
let entry = wiphy_get_entry(name, path);
|
||||||
|
@ -6,14 +6,17 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=audit-userspace
|
PKG_NAME:=audit-userspace
|
||||||
PKG_VERSION:=3.1.4
|
PKG_VERSION:=3.1.5
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
||||||
PKG_SOURCE_URL:=https://github.com/linux-audit/audit-userspace/archive/refs/tags/v$(PKG_VERSION).tar.gz?
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_HASH:=aec501760acd13ebbe00e78b9b59f795d16a430b1d673628e346cd18905c594b
|
PKG_SOURCE_URL:=https://github.com/linux-audit/$(PKG_NAME).git
|
||||||
|
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
|
||||||
|
PKG_MIRROR_HASH:=60f479476d4f1b0beadbe3e516ea67490d38ca9b01db53e56f52b1731340d5bb
|
||||||
|
|
||||||
PKG_MAINTAINER:=Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
PKG_MAINTAINER:=Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||||
PKG_LICENSE:=GPL-2.0-or-later
|
PKG_LICENSE:=GPL-2.0-or-later LGPL-2.1-or-later
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING COPYING.LIB
|
||||||
PKG_CPE_ID:=cpe:/a:linux_audit_project:linux_audit
|
PKG_CPE_ID:=cpe:/a:linux_audit_project:linux_audit
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:=CONFIG_KERNEL_IO_URING
|
PKG_CONFIG_DEPENDS:=CONFIG_KERNEL_IO_URING
|
||||||
|
@ -1,615 +0,0 @@
|
|||||||
From 429d031edd52566eeba03c3b3af32ad6e103fd94 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Steve Grubb <ausearch.1@gmail.com>
|
|
||||||
Date: Fri, 3 May 2024 17:33:39 -0400
|
|
||||||
Subject: [PATCH] Implicit builtin functions
|
|
||||||
|
|
||||||
Correct a number of places where printf is being used without a prototype.
|
|
||||||
All cases are in libraries which should not be using printf. Change them
|
|
||||||
to return an error rather than communicate the problem.
|
|
||||||
|
|
||||||
This is a backport of 8c7eaa7
|
|
||||||
---
|
|
||||||
audisp/audispd-llist.c | 10 +++++-----
|
|
||||||
audisp/audispd-llist.h | 4 ++--
|
|
||||||
auparse/normalize-llist.c | 12 ++++++------
|
|
||||||
auparse/normalize-llist.h | 4 ++--
|
|
||||||
auparse/normalize.c | 14 +++++++++-----
|
|
||||||
src/auditctl-llist.c | 18 +++++++++---------
|
|
||||||
src/auditctl-llist.h | 4 ++--
|
|
||||||
src/ausearch-avc.c | 16 ++++++++--------
|
|
||||||
src/ausearch-avc.h | 4 ++--
|
|
||||||
src/ausearch-int.c | 12 ++++++------
|
|
||||||
src/ausearch-int.h | 4 ++--
|
|
||||||
src/ausearch-llist.c | 14 +++++++-------
|
|
||||||
src/ausearch-llist.h | 2 +-
|
|
||||||
src/ausearch-nvpair.c | 12 ++++++------
|
|
||||||
src/ausearch-nvpair.h | 4 ++--
|
|
||||||
src/ausearch-string.c | 10 +++++-----
|
|
||||||
src/ausearch-string.h | 2 +-
|
|
||||||
tools/aulastlog/aulastlog-llist.c | 18 +++++++++---------
|
|
||||||
tools/aulastlog/aulastlog-llist.h | 4 ++--
|
|
||||||
19 files changed, 86 insertions(+), 82 deletions(-)
|
|
||||||
|
|
||||||
--- a/audisp/audispd-llist.c
|
|
||||||
+++ b/audisp/audispd-llist.c
|
|
||||||
@@ -69,15 +69,13 @@ unsigned int plist_count_active(const co
|
|
||||||
return cnt;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void plist_append(conf_llist *l, plugin_conf_t *p)
|
|
||||||
+int plist_append(conf_llist *l, plugin_conf_t *p)
|
|
||||||
{
|
|
||||||
lnode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(lnode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
if (p) {
|
|
||||||
void *pp = malloc(sizeof(struct plugin_conf));
|
|
||||||
@@ -98,6 +96,8 @@ void plist_append(conf_llist *l, plugin_
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void plist_clear(conf_llist* l)
|
|
||||||
--- a/audisp/audispd-llist.h
|
|
||||||
+++ b/audisp/audispd-llist.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* audispd-llist.h - Header file for ausearch-conf_llist.c
|
|
||||||
-* Copyright (c) 2007,2013 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2007,2013 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -51,7 +51,7 @@ unsigned int plist_count_active(const co
|
|
||||||
void plist_last(conf_llist *l);
|
|
||||||
lnode *plist_next(conf_llist *l);
|
|
||||||
static inline lnode *plist_get_cur(conf_llist *l) { return l->cur; }
|
|
||||||
-void plist_append(conf_llist *l, plugin_conf_t *p);
|
|
||||||
+int plist_append(conf_llist *l, plugin_conf_t *p);
|
|
||||||
void plist_clear(conf_llist* l);
|
|
||||||
void plist_mark_all_unchecked(conf_llist* l);
|
|
||||||
lnode *plist_find_unchecked(conf_llist* l);
|
|
||||||
--- a/auparse/normalize-llist.c
|
|
||||||
+++ b/auparse/normalize-llist.c
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* normalize-llist.c - Minimal linked list library
|
|
||||||
- * Copyright (c) 2016-17 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+ * Copyright (c) 2016-17 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
@@ -61,15 +61,14 @@ data_node *cllist_next(cllist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void cllist_append(cllist *l, uint32_t num, void *data)
|
|
||||||
+// Returns 0 on success and 1 on error
|
|
||||||
+int cllist_append(cllist *l, uint32_t num, void *data)
|
|
||||||
{
|
|
||||||
data_node *newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(data_node));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
newnode->num = num;
|
|
||||||
newnode->data = data;
|
|
||||||
@@ -84,5 +83,6 @@ void cllist_append(cllist *l, uint32_t n
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/auparse/normalize-llist.h
|
|
||||||
+++ b/auparse/normalize-llist.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* normalize-llist.h - Header file for normalize-llist.c
|
|
||||||
- * Copyright (c) 2016-17 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+ * Copyright (c) 2016-17 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
@@ -53,7 +53,7 @@ AUDIT_HIDDEN_START
|
|
||||||
void cllist_create(cllist *l, void (*cleanup)(void *));
|
|
||||||
void cllist_clear(cllist* l);
|
|
||||||
data_node *cllist_next(cllist *l);
|
|
||||||
-void cllist_append(cllist *l, uint32_t num, void *data);
|
|
||||||
+int cllist_append(cllist *l, uint32_t num, void *data);
|
|
||||||
|
|
||||||
AUDIT_HIDDEN_END
|
|
||||||
|
|
||||||
--- a/auparse/normalize.c
|
|
||||||
+++ b/auparse/normalize.c
|
|
||||||
@@ -179,7 +179,8 @@ static unsigned int add_subj_attr(aupars
|
|
||||||
if ((auparse_find_field(au, str))) {
|
|
||||||
attr = set_record(0, rnum);
|
|
||||||
attr = set_field(attr, auparse_get_field_num(au));
|
|
||||||
- cllist_append(&D.actor.attr, attr, NULL);
|
|
||||||
+ if (cllist_append(&D.actor.attr, attr, NULL))
|
|
||||||
+ return 1;
|
|
||||||
return 0;
|
|
||||||
} else
|
|
||||||
auparse_goto_record_num(au, rnum);
|
|
||||||
@@ -224,7 +225,8 @@ static unsigned int add_obj_attr(auparse
|
|
||||||
if ((auparse_find_field(au, str))) {
|
|
||||||
attr = set_record(0, rnum);
|
|
||||||
attr = set_field(attr, auparse_get_field_num(au));
|
|
||||||
- cllist_append(&D.thing.attr, attr, NULL);
|
|
||||||
+ if (cllist_append(&D.thing.attr, attr, NULL))
|
|
||||||
+ return 1;
|
|
||||||
return 0;
|
|
||||||
} else
|
|
||||||
auparse_goto_record_num(au, rnum);
|
|
||||||
@@ -360,21 +362,23 @@ static void collect_id_obj2(auparse_stat
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void collect_path_attrs(auparse_state_t *au)
|
|
||||||
+static int collect_path_attrs(auparse_state_t *au)
|
|
||||||
{
|
|
||||||
value_t attr;
|
|
||||||
unsigned int rnum = auparse_get_record_num(au);
|
|
||||||
|
|
||||||
auparse_first_field(au);
|
|
||||||
if (add_obj_attr(au, "mode", rnum))
|
|
||||||
- return; // Failed opens don't have anything else
|
|
||||||
+ return 1; // Failed opens don't have anything else
|
|
||||||
|
|
||||||
// All the rest of the fields matter
|
|
||||||
while ((auparse_next_field(au))) {
|
|
||||||
attr = set_record(0, rnum);
|
|
||||||
attr = set_field(attr, auparse_get_field_num(au));
|
|
||||||
- cllist_append(&D.thing.attr, attr, NULL);
|
|
||||||
+ if (cllist_append(&D.thing.attr, attr, NULL))
|
|
||||||
+ return 1;
|
|
||||||
}
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void collect_cwd_attrs(auparse_state_t *au)
|
|
||||||
--- a/src/auditctl-llist.c
|
|
||||||
+++ b/src/auditctl-llist.c
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* ausearch-llist.c - Minimal linked list library
|
|
||||||
-* Copyright (c) 2005 Red Hat Inc., Durham, North Carolina.
|
|
||||||
-* All Rights Reserved.
|
|
||||||
+* Copyright (c) 2005 Red Hat Inc.
|
|
||||||
+* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
* terms of the GNU General Public License as published by the Free
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; see the file COPYING. If not, write to the
|
|
||||||
-* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
* Boston, MA 02110-1335, USA.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
@@ -59,19 +59,17 @@ lnode *list_next(llist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void list_append(llist *l, struct audit_rule_data *r, size_t sz)
|
|
||||||
+int list_append(llist *l, struct audit_rule_data *r, size_t sz)
|
|
||||||
{
|
|
||||||
lnode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(lnode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
if (r) {
|
|
||||||
void *rr = malloc(sz);
|
|
||||||
- if (rr)
|
|
||||||
+ if (rr)
|
|
||||||
memcpy(rr, r, sz);
|
|
||||||
newnode->r = rr;
|
|
||||||
} else
|
|
||||||
@@ -89,6 +87,8 @@ void list_append(llist *l, struct audit_
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void list_clear(llist* l)
|
|
||||||
--- a/src/auditctl-llist.h
|
|
||||||
+++ b/src/auditctl-llist.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* auditctl-llist.h - Header file for ausearch-llist.c
|
|
||||||
-* Copyright (c) 2005 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2005 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -50,7 +50,7 @@ void list_first(llist *l);
|
|
||||||
void list_last(llist *l);
|
|
||||||
lnode *list_next(llist *l);
|
|
||||||
static inline lnode *list_get_cur(llist *l) { return l->cur; }
|
|
||||||
-void list_append(llist *l, struct audit_rule_data *r, size_t sz);
|
|
||||||
+int list_append(llist *l, struct audit_rule_data *r, size_t sz);
|
|
||||||
void list_clear(llist* l);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
--- a/src/ausearch-avc.c
|
|
||||||
+++ b/src/ausearch-avc.c
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* ausearch-avc.c - Minimal linked list library for avcs
|
|
||||||
-* Copyright (c) 2006,2008,2014 Red Hat Inc., Durham, North Carolina.
|
|
||||||
-* All Rights Reserved.
|
|
||||||
+* Copyright (c) 2006,2008,2014 Red Hat Inc.
|
|
||||||
+* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
* terms of the GNU General Public License as published by the Free
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; see the file COPYING. If not, write to the
|
|
||||||
-* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
* Boston, MA 02110-1335, USA.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
@@ -62,15 +62,13 @@ static void alist_last(alist *l)
|
|
||||||
l->cur = cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void alist_append(alist *l, anode *node)
|
|
||||||
+int alist_append(alist *l, anode *node)
|
|
||||||
{
|
|
||||||
anode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(anode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
if (node->scontext)
|
|
||||||
newnode->scontext = node->scontext;
|
|
||||||
@@ -108,6 +106,8 @@ void alist_append(alist *l, anode *node)
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int alist_find_subj(alist *l)
|
|
||||||
--- a/src/ausearch-avc.h
|
|
||||||
+++ b/src/ausearch-avc.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-avc.h - Header file for ausearch-string.c
|
|
||||||
-* Copyright (c) 2006,2008 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2006,2008 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -54,7 +54,7 @@ void alist_create(alist *l);
|
|
||||||
static inline void alist_first(alist *l) { l->cur = l->head; }
|
|
||||||
anode *alist_next(alist *l);
|
|
||||||
static inline anode *alist_get_cur(alist *l) { return l->cur; }
|
|
||||||
-void alist_append(alist *l, anode *node);
|
|
||||||
+int alist_append(alist *l, anode *node);
|
|
||||||
void anode_init(anode *an);
|
|
||||||
void anode_clear(anode *an);
|
|
||||||
void alist_clear(alist* l);
|
|
||||||
--- a/src/ausearch-int.c
|
|
||||||
+++ b/src/ausearch-int.c
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-int.c - Minimal linked list library for integers
|
|
||||||
-* Copyright (c) 2005,2008 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2005,2008 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -41,15 +41,13 @@ int_node *ilist_next(ilist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void ilist_append(ilist *l, int num, unsigned int hits, int aux)
|
|
||||||
+int ilist_append(ilist *l, int num, unsigned int hits, int aux)
|
|
||||||
{
|
|
||||||
int_node* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(int_node));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
newnode->num = num;
|
|
||||||
newnode->hits = hits;
|
|
||||||
@@ -65,6 +63,8 @@ void ilist_append(ilist *l, int num, uns
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ilist_clear(ilist* l)
|
|
||||||
--- a/src/ausearch-int.h
|
|
||||||
+++ b/src/ausearch-int.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-int.h - Header file for ausearch-int.c
|
|
||||||
-* Copyright (c) 2005,2008 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2005,2008 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -48,7 +48,7 @@ void ilist_create(ilist *l);
|
|
||||||
static inline void ilist_first(ilist *l) { l->cur = l->head; }
|
|
||||||
int_node *ilist_next(ilist *l);
|
|
||||||
static inline int_node *ilist_get_cur(ilist *l) { return l->cur; }
|
|
||||||
-void ilist_append(ilist *l, int num, unsigned int hits, int aux);
|
|
||||||
+int ilist_append(ilist *l, int num, unsigned int hits, int aux);
|
|
||||||
void ilist_clear(ilist* l);
|
|
||||||
|
|
||||||
/* append a number if its not already on the list */
|
|
||||||
--- a/src/ausearch-llist.c
|
|
||||||
+++ b/src/ausearch-llist.c
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-llist.c - Minimal linked list library
|
|
||||||
-* Copyright (c) 2005-2008,2011,2016 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2005-2008,2011,2016 Red Hat Inc.
|
|
||||||
* Copyright (c) 2011 IBM Corp.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
@@ -102,15 +102,13 @@ lnode *list_prev(llist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void list_append(llist *l, lnode *node)
|
|
||||||
+int list_append(llist *l, lnode *node)
|
|
||||||
{
|
|
||||||
lnode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(lnode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
if (node->message)
|
|
||||||
newnode->message = node->message;
|
|
||||||
@@ -123,7 +121,7 @@ void list_append(llist *l, lnode *node)
|
|
||||||
newnode->type = node->type;
|
|
||||||
newnode->a0 = node->a0;
|
|
||||||
newnode->a1 = node->a1;
|
|
||||||
- newnode->item = l->cnt;
|
|
||||||
+ newnode->item = l->cnt;
|
|
||||||
newnode->next = NULL;
|
|
||||||
|
|
||||||
// if we are at top, fix this up
|
|
||||||
@@ -135,6 +133,8 @@ void list_append(llist *l, lnode *node)
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int list_find_item(llist *l, unsigned int i)
|
|
||||||
--- a/src/ausearch-llist.h
|
|
||||||
+++ b/src/ausearch-llist.h
|
|
||||||
@@ -107,7 +107,7 @@ void list_last(llist *l);
|
|
||||||
lnode *list_next(llist *l);
|
|
||||||
lnode *list_prev(llist *l);
|
|
||||||
static inline lnode *list_get_cur(llist *l) { return l->cur; }
|
|
||||||
-void list_append(llist *l, lnode *node);
|
|
||||||
+int list_append(llist *l, lnode *node);
|
|
||||||
void list_clear(llist* l);
|
|
||||||
int list_get_event(llist* l, event *e);
|
|
||||||
|
|
||||||
--- a/src/ausearch-nvpair.c
|
|
||||||
+++ b/src/ausearch-nvpair.c
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-nvpair.c - Minimal linked list library for name-value pairs
|
|
||||||
-* Copyright (c) 2006-08 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2006-08 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -42,13 +42,11 @@ nvnode *search_list_next(nvlist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void search_list_append(nvlist *l, nvnode *node)
|
|
||||||
+int search_list_append(nvlist *l, nvnode *node)
|
|
||||||
{
|
|
||||||
nvnode* newnode = malloc(sizeof(nvnode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
newnode->name = node->name;
|
|
||||||
newnode->val = node->val;
|
|
||||||
@@ -66,6 +64,8 @@ void search_list_append(nvlist *l, nvnod
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int search_list_find_val(nvlist *l, long val)
|
|
||||||
--- a/src/ausearch-nvpair.h
|
|
||||||
+++ b/src/ausearch-nvpair.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* ausearch-nvpair.h - Header file for ausearch-nvpair.c
|
|
||||||
-* Copyright (c) 2006-08 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2006-08 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -48,7 +48,7 @@ void search_list_create(nvlist *l);
|
|
||||||
static inline void search_list_first(nvlist *l) { l->cur = l->head; }
|
|
||||||
nvnode *search_list_next(nvlist *l);
|
|
||||||
static inline nvnode *search_list_get_cur(nvlist *l) { return l->cur; }
|
|
||||||
-void search_list_append(nvlist *l, nvnode *node);
|
|
||||||
+int search_list_append(nvlist *l, nvnode *node);
|
|
||||||
void search_list_clear(nvlist* l);
|
|
||||||
|
|
||||||
/* Given a numeric index, find that record. */
|
|
||||||
--- a/src/ausearch-string.c
|
|
||||||
+++ b/src/ausearch-string.c
|
|
||||||
@@ -44,15 +44,13 @@ snode *slist_next(slist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void slist_append(slist *l, snode *node)
|
|
||||||
+int slist_append(slist *l, snode *node)
|
|
||||||
{
|
|
||||||
snode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(snode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
if (node->str)
|
|
||||||
newnode->str = node->str;
|
|
||||||
@@ -79,6 +77,8 @@ void slist_append(slist *l, snode *node)
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void slist_clear(slist* l)
|
|
||||||
--- a/src/ausearch-string.h
|
|
||||||
+++ b/src/ausearch-string.h
|
|
||||||
@@ -49,7 +49,7 @@ void slist_create(slist *l);
|
|
||||||
static inline void slist_first(slist *l) { l->cur = l->head; }
|
|
||||||
snode *slist_next(slist *l);
|
|
||||||
static inline snode *slist_get_cur(slist *l) { return l->cur; }
|
|
||||||
-void slist_append(slist *l, snode *node);
|
|
||||||
+int slist_append(slist *l, snode *node);
|
|
||||||
void slist_clear(slist* l);
|
|
||||||
|
|
||||||
/* append a string if its not already on the list */
|
|
||||||
--- a/tools/aulastlog/aulastlog-llist.c
|
|
||||||
+++ b/tools/aulastlog/aulastlog-llist.c
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* aulastlog-llist.c - Minimal linked list library
|
|
||||||
-* Copyright (c) 2008 Red Hat Inc., Durham, North Carolina.
|
|
||||||
-* All Rights Reserved.
|
|
||||||
+* Copyright (c) 2008 Red Hat Inc..
|
|
||||||
+* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
* terms of the GNU General Public License as published by the Free
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; see the file COPYING. If not, write to the
|
|
||||||
-* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
+* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
|
|
||||||
* Boston, MA 02110-1335, USA.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
@@ -41,15 +41,13 @@ lnode *list_next(llist *l)
|
|
||||||
return l->cur;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void list_append(llist *l, lnode *node)
|
|
||||||
+int list_append(llist *l, lnode *node)
|
|
||||||
{
|
|
||||||
lnode* newnode;
|
|
||||||
|
|
||||||
newnode = malloc(sizeof(lnode));
|
|
||||||
- if (newnode == NULL) {
|
|
||||||
- printf("Out of memory. Check %s file, %d line", __FILE__, __LINE__);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ if (newnode == NULL)
|
|
||||||
+ return 1;
|
|
||||||
|
|
||||||
newnode->sec = node->sec;
|
|
||||||
newnode->uid = node->uid;
|
|
||||||
@@ -62,7 +60,7 @@ void list_append(llist *l, lnode *node)
|
|
||||||
newnode->term = strdup(node->term);
|
|
||||||
else
|
|
||||||
newnode->term = NULL;
|
|
||||||
- newnode->item = l->cnt;
|
|
||||||
+ newnode->item = l->cnt;
|
|
||||||
newnode->next = NULL;
|
|
||||||
|
|
||||||
// if we are at top, fix this up
|
|
||||||
@@ -74,6 +72,8 @@ void list_append(llist *l, lnode *node)
|
|
||||||
// make newnode current
|
|
||||||
l->cur = newnode;
|
|
||||||
l->cnt++;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void list_clear(llist* l)
|
|
||||||
--- a/tools/aulastlog/aulastlog-llist.h
|
|
||||||
+++ b/tools/aulastlog/aulastlog-llist.h
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
/*
|
|
||||||
* aulastlog-llist.h - Header file for aulastlog-llist.c
|
|
||||||
-* Copyright (c) 2008 Red Hat Inc., Durham, North Carolina.
|
|
||||||
+* Copyright (c) 2008 Red Hat Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This software may be freely redistributed and/or modified under the
|
|
||||||
@@ -53,7 +53,7 @@ static inline void list_first(llist *l)
|
|
||||||
lnode *list_next(llist *l);
|
|
||||||
static inline lnode *list_get_cur(llist *l) { return l->cur; }
|
|
||||||
static inline unsigned int list_get_cnt(llist *l) { return l->cnt; }
|
|
||||||
-void list_append(llist *l, lnode *node);
|
|
||||||
+int list_append(llist *l, lnode *node);
|
|
||||||
void list_clear(llist* l);
|
|
||||||
int list_update_login(llist* l, time_t t);
|
|
||||||
int list_update_host(llist* l, const char *h);
|
|
@ -144,8 +144,6 @@ static int gpio_rb91x_key_probe(struct platform_device *pdev)
|
|||||||
struct gpio_rb91x_key *drvdata;
|
struct gpio_rb91x_key *drvdata;
|
||||||
struct gpio_chip *gc;
|
struct gpio_chip *gc;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct fwnode_handle *fwnode = dev->fwnode;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
|
drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
|
||||||
if (!drvdata)
|
if (!drvdata)
|
||||||
@ -155,16 +153,12 @@ static int gpio_rb91x_key_probe(struct platform_device *pdev)
|
|||||||
mutex_init(&drvdata->poll_mutex);
|
mutex_init(&drvdata->poll_mutex);
|
||||||
|
|
||||||
drvdata->gpio = devm_gpiod_get(dev, NULL, GPIOD_OUT_LOW);
|
drvdata->gpio = devm_gpiod_get(dev, NULL, GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(drvdata->gpio)) {
|
if (IS_ERR(drvdata->gpio))
|
||||||
if (PTR_ERR(drvdata->gpio) != -EPROBE_DEFER) {
|
return dev_err_probe(dev, PTR_ERR(drvdata->gpio), "failed to get gpio");
|
||||||
dev_err(dev, "failed to get gpio: %ld\n",
|
|
||||||
PTR_ERR(drvdata->gpio));
|
|
||||||
}
|
|
||||||
return PTR_ERR(drvdata->gpio);
|
|
||||||
}
|
|
||||||
|
|
||||||
gc = &drvdata->gc;
|
gc = &drvdata->gc;
|
||||||
gc->label = GPIO_RB91X_KEY_DRIVER_NAME;
|
gc->label = GPIO_RB91X_KEY_DRIVER_NAME;
|
||||||
|
gc->parent = dev;
|
||||||
gc->can_sleep = 1;
|
gc->can_sleep = 1;
|
||||||
gc->base = -1;
|
gc->base = -1;
|
||||||
gc->ngpio = GPIO_RB91X_KEY_NGPIOS;
|
gc->ngpio = GPIO_RB91X_KEY_NGPIOS;
|
||||||
@ -172,25 +166,10 @@ static int gpio_rb91x_key_probe(struct platform_device *pdev)
|
|||||||
gc->set = gpio_rb91x_key_set;
|
gc->set = gpio_rb91x_key_set;
|
||||||
gc->direction_output = gpio_rb91x_key_direction_output;
|
gc->direction_output = gpio_rb91x_key_direction_output;
|
||||||
gc->direction_input = gpio_rb91x_key_direction_input;
|
gc->direction_input = gpio_rb91x_key_direction_input;
|
||||||
gc->fwnode = fwnode;
|
|
||||||
|
|
||||||
platform_set_drvdata(pdev, drvdata);
|
platform_set_drvdata(pdev, drvdata);
|
||||||
|
|
||||||
r = gpiochip_add(&drvdata->gc);
|
return devm_gpiochip_add_data(dev, gc, drvdata);
|
||||||
if (r) {
|
|
||||||
dev_err(dev, "gpiochip_add() failed: %d\n", r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int gpio_rb91x_key_remove(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
struct gpio_rb91x_key *drvdata = platform_get_drvdata(pdev);
|
|
||||||
|
|
||||||
gpiochip_remove(&drvdata->gc);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id gpio_rb91x_key_match[] = {
|
static const struct of_device_id gpio_rb91x_key_match[] = {
|
||||||
@ -202,7 +181,6 @@ MODULE_DEVICE_TABLE(of, gpio_rb91x_key_match);
|
|||||||
|
|
||||||
static struct platform_driver gpio_rb91x_key_driver = {
|
static struct platform_driver gpio_rb91x_key_driver = {
|
||||||
.probe = gpio_rb91x_key_probe,
|
.probe = gpio_rb91x_key_probe,
|
||||||
.remove = gpio_rb91x_key_remove,
|
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = GPIO_RB91X_KEY_DRIVER_NAME,
|
.name = GPIO_RB91X_KEY_DRIVER_NAME,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
@ -77,13 +77,14 @@
|
|||||||
partition@100000 {
|
partition@100000 {
|
||||||
reg = <0x100000 0xff00000>;
|
reg = <0x100000 0xff00000>;
|
||||||
label = "ubi";
|
label = "ubi";
|
||||||
|
compatible = "linux,ubi";
|
||||||
|
|
||||||
volumes {
|
volumes {
|
||||||
ubi-volume-env1 {
|
ubi-volume-env1 {
|
||||||
volname = "env1";
|
volname = "env1";
|
||||||
|
|
||||||
nvmem-layout {
|
nvmem-layout {
|
||||||
compatible = "u-boot,env";
|
compatible = "u-boot,env-redundant-count";
|
||||||
|
|
||||||
ethaddr: ethaddr {
|
ethaddr: ethaddr {
|
||||||
#nvmem-cell-cells = <1>;
|
#nvmem-cell-cells = <1>;
|
||||||
|
@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
&gmac1 {
|
&gmac1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "eth0";
|
label = "wan1";
|
||||||
phy-handle = <ðphy0>;
|
phy-handle = <ðphy0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -97,22 +97,22 @@
|
|||||||
|
|
||||||
port@1 {
|
port@1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "eth1";
|
label = "lan2";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@2 {
|
port@2 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "eth2";
|
label = "lan3";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@3 {
|
port@3 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "eth3";
|
label = "lan4";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@4 {
|
port@4 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "eth4";
|
label = "lan5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -2745,6 +2745,8 @@ TARGET_DEVICES += tplink_ec330-g5u-v1
|
|||||||
|
|
||||||
define Device/tplink_er605-v2
|
define Device/tplink_er605-v2
|
||||||
$(Device/nand)
|
$(Device/nand)
|
||||||
|
DEVICE_COMPAT_VERSION := 1.2
|
||||||
|
DEVICE_COMPAT_MESSAGE := Config cannot be migrated because interface names have changed
|
||||||
DEVICE_VENDOR := TP-Link
|
DEVICE_VENDOR := TP-Link
|
||||||
DEVICE_MODEL := ER605
|
DEVICE_MODEL := ER605
|
||||||
DEVICE_VARIANT := v2
|
DEVICE_VARIANT := v2
|
||||||
|
@ -150,7 +150,7 @@ ramips_setup_interfaces()
|
|||||||
ucidef_set_interface_lan "lan0 lan1 lan2 lan3"
|
ucidef_set_interface_lan "lan0 lan1 lan2 lan3"
|
||||||
;;
|
;;
|
||||||
tplink,er605-v2)
|
tplink,er605-v2)
|
||||||
ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0"
|
ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan1"
|
||||||
;;
|
;;
|
||||||
tplink,tl-wpa8631p-v3)
|
tplink,tl-wpa8631p-v3)
|
||||||
ucidef_set_interface_lan "lan1 lan2 lan3 plc0"
|
ucidef_set_interface_lan "lan1 lan2 lan3 plc0"
|
||||||
|
@ -12,6 +12,9 @@ case "$(board_name)" in
|
|||||||
iptime,ax2004m)
|
iptime,ax2004m)
|
||||||
ucidef_set_compat_version "2.0"
|
ucidef_set_compat_version "2.0"
|
||||||
;;
|
;;
|
||||||
|
tplink,er605-v2)
|
||||||
|
ucidef_set_compat_version "1.2"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
ucidef_set_compat_version "1.1"
|
ucidef_set_compat_version "1.1"
|
||||||
;;
|
;;
|
||||||
|
@ -176,6 +176,7 @@ CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
|||||||
CONFIG_MTD_UBI=y
|
CONFIG_MTD_UBI=y
|
||||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||||
CONFIG_MTD_UBI_BLOCK=y
|
CONFIG_MTD_UBI_BLOCK=y
|
||||||
|
CONFIG_MTD_UBI_NVMEM=y
|
||||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||||
CONFIG_MTD_VIRT_CONCAT=y
|
CONFIG_MTD_VIRT_CONCAT=y
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
@ -201,6 +202,7 @@ CONFIG_NR_CPUS=4
|
|||||||
CONFIG_NVMEM=y
|
CONFIG_NVMEM=y
|
||||||
CONFIG_NVMEM_LAYOUTS=y
|
CONFIG_NVMEM_LAYOUTS=y
|
||||||
# CONFIG_NVMEM_LAYOUT_MIKROTIK is not set
|
# CONFIG_NVMEM_LAYOUT_MIKROTIK is not set
|
||||||
|
CONFIG_NVMEM_LAYOUT_U_BOOT_ENV=y
|
||||||
CONFIG_OF=y
|
CONFIG_OF=y
|
||||||
CONFIG_OF_ADDRESS=y
|
CONFIG_OF_ADDRESS=y
|
||||||
CONFIG_OF_EARLY_FLATTREE=y
|
CONFIG_OF_EARLY_FLATTREE=y
|
||||||
@ -243,7 +245,6 @@ CONFIG_QCOM_NET_PHYLIB=y
|
|||||||
CONFIG_QUEUED_RWLOCKS=y
|
CONFIG_QUEUED_RWLOCKS=y
|
||||||
CONFIG_QUEUED_SPINLOCKS=y
|
CONFIG_QUEUED_SPINLOCKS=y
|
||||||
CONFIG_RALINK=y
|
CONFIG_RALINK=y
|
||||||
# CONFIG_RALINK_GDMA is not set
|
|
||||||
# CONFIG_RALINK_WDT is not set
|
# CONFIG_RALINK_WDT is not set
|
||||||
CONFIG_RANDSTRUCT_NONE=y
|
CONFIG_RANDSTRUCT_NONE=y
|
||||||
CONFIG_RATIONAL=y
|
CONFIG_RATIONAL=y
|
||||||
|
@ -69,7 +69,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
obj-$(CONFIG_I2C_QUP) += i2c-qup.o
|
obj-$(CONFIG_I2C_QUP) += i2c-qup.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/i2c/busses/i2c-ralink.c
|
+++ b/drivers/i2c/busses/i2c-ralink.c
|
||||||
@@ -0,0 +1,440 @@
|
@@ -0,0 +1,397 @@
|
||||||
+/*
|
+/*
|
||||||
+ * drivers/i2c/busses/i2c-ralink.c
|
+ * drivers/i2c/busses/i2c-ralink.c
|
||||||
+ *
|
+ *
|
||||||
@ -410,101 +410,58 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
+
|
+
|
||||||
+static int rt_i2c_probe(struct platform_device *pdev)
|
+static int rt_i2c_probe(struct platform_device *pdev)
|
||||||
+{
|
+{
|
||||||
+ struct resource *res;
|
+ struct device *dev = &pdev->dev;
|
||||||
+ struct rt_i2c *i2c;
|
+ struct rt_i2c *i2c;
|
||||||
+ struct i2c_adapter *adap;
|
+ struct i2c_adapter *adap;
|
||||||
+ const struct of_device_id *match;
|
+ int restart;
|
||||||
+ int ret, restart;
|
|
||||||
+
|
+
|
||||||
+ match = of_match_device(i2c_rt_dt_ids, &pdev->dev);
|
+ i2c = devm_kzalloc(dev, sizeof(struct rt_i2c), GFP_KERNEL);
|
||||||
+
|
|
||||||
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
+ if (!res) {
|
|
||||||
+ dev_err(&pdev->dev, "no memory resource found\n");
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ i2c = devm_kzalloc(&pdev->dev, sizeof(struct rt_i2c), GFP_KERNEL);
|
|
||||||
+ if (!i2c) {
|
+ if (!i2c) {
|
||||||
+ dev_err(&pdev->dev, "failed to allocate i2c_adapter\n");
|
+ dev_err(dev, "failed to allocate i2c_adapter\n");
|
||||||
+ return -ENOMEM;
|
+ return -ENOMEM;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ i2c->base = devm_ioremap_resource(&pdev->dev, res);
|
+ i2c->base = devm_platform_ioremap_resource(pdev, 0);
|
||||||
+ if (IS_ERR(i2c->base))
|
+ if (IS_ERR(i2c->base))
|
||||||
+ return PTR_ERR(i2c->base);
|
+ return PTR_ERR(i2c->base);
|
||||||
+
|
+
|
||||||
+ i2c->clk = devm_clk_get(&pdev->dev, NULL);
|
+ i2c->clk = devm_clk_get_enabled(dev, NULL);
|
||||||
+ if (IS_ERR(i2c->clk)) {
|
+ if (IS_ERR(i2c->clk))
|
||||||
+ dev_err(&pdev->dev, "no clock defined\n");
|
+ return dev_err_probe(dev, PTR_ERR(i2c->clk), "no clock defined");
|
||||||
+ return -ENODEV;
|
+
|
||||||
+ }
|
+ i2c->dev = dev;
|
||||||
+ clk_prepare_enable(i2c->clk);
|
|
||||||
+ i2c->dev = &pdev->dev;
|
|
||||||
+
|
+
|
||||||
+ if (of_property_read_u32(pdev->dev.of_node,
|
+ if (of_property_read_u32(pdev->dev.of_node,
|
||||||
+ "clock-frequency", &i2c->cur_clk))
|
+ "clock-frequency", &i2c->cur_clk))
|
||||||
+ i2c->cur_clk = 100000;
|
+ i2c->cur_clk = 100000;
|
||||||
+
|
+
|
||||||
+ adap = &i2c->adap;
|
+ adap = &i2c->adap;
|
||||||
+ adap->owner = THIS_MODULE;
|
|
||||||
+ adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
|
+ adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
|
||||||
+ adap->algo = &rt_i2c_algo;
|
+ adap->algo = &rt_i2c_algo;
|
||||||
+ adap->retries = 3;
|
+ adap->retries = 3;
|
||||||
+ adap->dev.parent = &pdev->dev;
|
+ adap->dev.parent = dev;
|
||||||
+ i2c_set_adapdata(adap, i2c);
|
+ i2c_set_adapdata(adap, i2c);
|
||||||
+ adap->dev.of_node = pdev->dev.of_node;
|
+ adap->dev.of_node = pdev->dev.of_node;
|
||||||
+ strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name));
|
+ strlcpy(adap->name, dev_name(dev), sizeof(adap->name));
|
||||||
+ adap->quirks = &rt_i2c_quirks;
|
+ adap->quirks = &rt_i2c_quirks;
|
||||||
+
|
+
|
||||||
+ platform_set_drvdata(pdev, i2c);
|
|
||||||
+
|
|
||||||
+ restart = rt_i2c_init(i2c);
|
+ restart = rt_i2c_init(i2c);
|
||||||
+
|
+
|
||||||
+ ret = i2c_add_adapter(adap);
|
+ dev_info(dev, "clock %uKHz, re-start %ssupport\n",
|
||||||
+ if (ret < 0) {
|
|
||||||
+ dev_err(&pdev->dev, "failed to add adapter\n");
|
|
||||||
+ clk_disable_unprepare(i2c->clk);
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ dev_info(&pdev->dev, "clock %uKHz, re-start %ssupport\n",
|
|
||||||
+ i2c->cur_clk/1000, restart ? "" : "not ");
|
+ i2c->cur_clk/1000, restart ? "" : "not ");
|
||||||
+
|
+
|
||||||
+ return ret;
|
+ return devm_i2c_add_adapter(dev, adap);
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int rt_i2c_remove(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct rt_i2c *i2c = platform_get_drvdata(pdev);
|
|
||||||
+
|
|
||||||
+ i2c_del_adapter(&i2c->adap);
|
|
||||||
+ clk_disable_unprepare(i2c->clk);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static struct platform_driver rt_i2c_driver = {
|
+static struct platform_driver rt_i2c_driver = {
|
||||||
+ .probe = rt_i2c_probe,
|
+ .probe = rt_i2c_probe,
|
||||||
+ .remove = rt_i2c_remove,
|
|
||||||
+ .driver = {
|
+ .driver = {
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .name = "i2c-ralink",
|
+ .name = "i2c-ralink",
|
||||||
+ .of_match_table = i2c_rt_dt_ids,
|
+ .of_match_table = i2c_rt_dt_ids,
|
||||||
+ },
|
+ },
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+static int __init i2c_rt_init (void)
|
+module_platform_driver(rt_i2c_driver);
|
||||||
+{
|
|
||||||
+ return platform_driver_register(&rt_i2c_driver);
|
|
||||||
+}
|
|
||||||
+subsys_initcall(i2c_rt_init);
|
|
||||||
+
|
|
||||||
+static void __exit i2c_rt_exit (void)
|
|
||||||
+{
|
|
||||||
+ platform_driver_unregister(&rt_i2c_driver);
|
|
||||||
+}
|
|
||||||
+module_exit(i2c_rt_exit);
|
|
||||||
+
|
+
|
||||||
+MODULE_AUTHOR("Steven Liu <steven_liu@mediatek.com>");
|
+MODULE_AUTHOR("Steven Liu <steven_liu@mediatek.com>");
|
||||||
+MODULE_DESCRIPTION("Ralink I2c host driver");
|
+MODULE_DESCRIPTION("Ralink I2c host driver");
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
CONFIG_AMD_NB=y
|
CONFIG_AMD_NB=y
|
||||||
CONFIG_ARCH_32BIT_OFF_T=y
|
CONFIG_ARCH_32BIT_OFF_T=y
|
||||||
CONFIG_ARCH_CLOCKSOURCE_INIT=y
|
CONFIG_ARCH_CLOCKSOURCE_INIT=y
|
||||||
|
CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y
|
||||||
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
|
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
|
||||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user