generic: fix loogarch64 kernel modules build

This commit is contained in:
coolsnowwolf 2024-01-14 23:16:29 +08:00
parent eadf20fda4
commit 4fb7370e09
5 changed files with 70 additions and 25 deletions

View File

@ -39,7 +39,8 @@ define KernelPackage/crypto-aead
TITLE:=CryptoAPI AEAD support
KCONFIG:= \
CONFIG_CRYPTO_AEAD \
CONFIG_CRYPTO_AEAD2
CONFIG_CRYPTO_AEAD2 \
CONFIG_CRYPTO_GENIV
FILES:= \
$(LINUX_DIR)/crypto/aead.ko \
$(LINUX_DIR)/crypto/geniv.ko@ge5.10

View File

@ -142,7 +142,7 @@ $(eval $(call KernelPackage,mii))
define KernelPackage/mdio-devres
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Supports MDIO device registration
DEPENDS:=@!LINUX_5_4 +kmod-libphy +(TARGET_armvirt||TARGET_bcm27xx_bcm2708||TARGET_malta||TARGET_tegra):kmod-of-mdio
DEPENDS:=@!LINUX_5_4 +kmod-libphy +(TARGET_armvirt||TARGET_bcm27xx_bcm2708||TARGET_loongarch64||TARGET_malta||TARGET_tegra):kmod-of-mdio
KCONFIG:=CONFIG_MDIO_DEVRES
HIDDEN:=1
FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko

View File

@ -907,11 +907,25 @@ endef
$(eval $(call KernelPackage,sched-ipset))
define KernelPackage/sched-mqprio-common
SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=mqprio queue common dependencies support
DEPENDS:=@LINUX_6_6
HIDDEN:=1
KCONFIG:=CONFIG_NET_SCH_MQPRIO_LIB
FILES:=$(LINUX_DIR)/net/sched/sch_mqprio_lib.ko
endef
define KernelPackage/sched-mqprio-common/description
Common library for manipulating mqprio queue configurations
endef
$(eval $(call KernelPackage,sched-mqprio-common))
define KernelPackage/sched-mqprio
SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=Multi-queue priority scheduler (MQPRIO)
DEPENDS:=+kmod-sched-core
DEPENDS:=+kmod-sched-core +LINUX_6_6:kmod-sched-mqprio-common
KCONFIG:=CONFIG_NET_SCH_MQPRIO
FILES:=$(LINUX_DIR)/net/sched/sch_mqprio.ko
AUTOLOAD:=$(call AutoProbe, sch_mqprio)
@ -982,7 +996,7 @@ endef
$(eval $(call KernelPackage,bpf-test))
SCHED_MODULES_EXTRA = sch_codel sch_dsmark sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_csum em_cmp em_nbyte em_meta em_text
SCHED_MODULES_EXTRA = sch_codel sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_skbmod act_csum em_cmp em_nbyte em_meta em_text
SCHED_FILES_EXTRA = $(foreach mod,$(SCHED_MODULES_EXTRA),$(LINUX_DIR)/net/sched/$(mod).ko)
define KernelPackage/sched
@ -991,7 +1005,7 @@ define KernelPackage/sched
DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
KCONFIG:= \
CONFIG_NET_SCH_CODEL \
CONFIG_NET_SCH_DSMARK \
CONFIG_NET_SCH_DSMARK@lt6.2 \
CONFIG_NET_SCH_GRED \
CONFIG_NET_SCH_MULTIQ \
CONFIG_NET_SCH_SFQ \
@ -1005,7 +1019,8 @@ define KernelPackage/sched
CONFIG_NET_EMATCH_META \
CONFIG_NET_EMATCH_TEXT
FILES:=$(SCHED_FILES_EXTRA)
AUTOLOAD:=$(call AutoLoad,73, $(SCHED_MODULES_EXTRA))
FILES+=$(LINUX_DIR)/net/sched/sch_dsmark.ko@lt6.2
AUTOLOAD:=$(call AutoLoad,73, $(SCHED_MODULES_EXTRA) sch_dsmark@lt6.2)
endef
define KernelPackage/sched/description

View File

@ -308,12 +308,16 @@ $(eval $(call KernelPackage,drm))
define KernelPackage/drm-buddy
SUBMENU:=$(VIDEO_MENU)
TITLE:=A page based buddy allocator
DEPENDS:=@TARGET_x86 @DISPLAY_SUPPORT +kmod-drm @LINUX_6_1||LINUX_6_6
DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @LINUX_6_1||LINUX_6_6
KCONFIG:=CONFIG_DRM_BUDDY
FILES:= $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko
AUTOLOAD:=$(call AutoProbe,drm_buddy)
endef
define KernelPackage/drm-buddy/description
A page based buddy allocator
endef
$(eval $(call KernelPackage,drm-buddy))
define KernelPackage/drm-ttm
@ -367,7 +371,7 @@ $(eval $(call KernelPackage,drm-kms-helper))
define KernelPackage/drm-display-helper
SUBMENU:=$(VIDEO_MENU)
TITLE:=DRM helpers for display adapters drivers
DEPENDS:=@DISPLAY_SUPPORT +kmod-drm +TARGET_x86:kmod-drm-buddy @LINUX_6_1||LINUX_6_6
DEPENDS:=@DISPLAY_SUPPORT +kmod-drm +(TARGET_x86||TARGET_loongarch64):kmod-drm-buddy @LINUX_6_1||LINUX_6_6
KCONFIG:=CONFIG_DRM_DISPLAY_HELPER
FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko
AUTOLOAD:=$(call AutoProbe,drm_display_helper)
@ -383,8 +387,8 @@ define KernelPackage/drm-amdgpu
SUBMENU:=$(VIDEO_MENU)
TITLE:=AMDGPU DRM support
DEPENDS:=@TARGET_x86||TARGET_loongarch64 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-ttm \
+kmod-drm-kms-helper +kmod-i2c-algo-bit +amdgpu-firmware \
+LINUX_6_1:kmod-drm-display-helper +LINUX_6_1:kmod-acpi-video
+kmod-drm-ttm-helper +kmod-drm-kms-helper +kmod-i2c-algo-bit +amdgpu-firmware \
+kmod-drm-display-helper +kmod-drm-buddy +kmod-acpi-video
KCONFIG:=CONFIG_DRM_AMDGPU \
CONFIG_DRM_AMDGPU_SI=y \
CONFIG_DRM_AMDGPU_CIK=y \

View File

@ -15,7 +15,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
#include "gpiolib.h"
#include "gpiolib-of.h"
@@ -1107,3 +1109,72 @@ void of_gpiochip_remove(struct gpio_chip
@@ -1111,3 +1113,74 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(dev_of_node(&chip->gpiodev->dev));
}
@ -44,17 +44,19 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ of_property_read_string(cnp, "gpio-export,name", &name);
+
+ if (!name)
+ // max_gpio = of_gpio_count(cnp);
+ max_gpio = of_gpio_named_count(cnp, "gpios");
+
+ for (i = 0; i < max_gpio; i++) {
+ struct gpio_desc *desc;
+ unsigned flags = 0;
+ enum of_gpio_flags of_flags;
+
+ gpio = of_get_named_gpio(cnp, i, &of_flags);
+ if (!gpio_is_valid(gpio))
+ return gpio;
+ desc = of_get_named_gpiod_flags(cnp, "gpios", i, &of_flags);
+ if (IS_ERR(desc))
+ return PTR_ERR(desc);
+ gpio = desc_to_gpio(desc);
+
+ if (of_flags == OF_GPIO_ACTIVE_LOW)
+ if (of_flags & OF_GPIO_ACTIVE_LOW)
+ flags |= GPIOF_ACTIVE_LOW;
+
+ if (!of_property_read_u32(cnp, "gpio-export,output", &val))
@ -66,7 +68,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ continue;
+
+ dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
+ gpio_export_with_name(gpio, dmc, name);
+ gpio_export_with_name(gpio_to_desc(gpio), dmc, name);
+ nb++;
+ }
+ }
@ -88,22 +90,24 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+module_platform_driver(gpio_export_driver);
+
+#endif
\ No newline at end of file
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
@@ -644,6 +644,7 @@ static inline struct gpio_desc *acpi_get
@@ -644,7 +644,10 @@ static inline struct gpio_desc *acpi_get
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
+int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
+ const char *name);
int gpiod_export_link(struct device *dev, const char *name,
struct gpio_desc *desc);
@@ -653,6 +654,13 @@ void gpiod_unexport(struct gpio_desc *de
void gpiod_unexport(struct gpio_desc *desc);
@@ -653,11 +656,25 @@ void gpiod_unexport(struct gpio_desc *de
#include <asm/errno.h>
+static inline int _gpiod_export(struct gpio_desc *desc,
+static inline int __gpiod_export(struct gpio_desc *desc,
+ bool direction_may_change,
+ const char *name)
+{
@ -113,9 +117,21 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
static inline int gpiod_export(struct gpio_desc *desc,
bool direction_may_change)
{
return -ENOSYS;
}
+
+static inline int gpio_export_with_name(struct gpio_desc *desc,
+ bool direction_may_change,
+ const char *name)
+{
+ return -ENOSYS;
+}
static inline int gpiod_export_link(struct device *dev, const char *name,
struct gpio_desc *desc)
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
@@ -554,7 +554,7 @@ static struct class gpio_class = {
@@ -557,7 +557,7 @@ static struct class gpio_class = {
*
* Returns zero on success, else an error.
*/
@ -124,7 +140,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
{
struct gpio_chip *chip;
struct gpio_device *gdev;
@@ -616,6 +616,8 @@ int gpiod_export(struct gpio_desc *desc,
@@ -619,6 +619,8 @@ int gpiod_export(struct gpio_desc *desc,
offset = gpio_chip_hwgpio(desc);
if (chip->names && chip->names[offset])
ioname = chip->names[offset];
@ -133,7 +149,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
dev = device_create_with_groups(&gpio_class, &gdev->dev,
MKDEV(0, 0), data, gpio_groups,
@@ -637,6 +639,12 @@ err_unlock:
@@ -640,8 +642,21 @@ err_unlock:
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
return status;
}
@ -145,4 +161,13 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+}
EXPORT_SYMBOL_GPL(gpiod_export);
+int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
+ const char *name)
+{
+ return __gpiod_export(desc, direction_may_change, name);
+}
+EXPORT_SYMBOL_GPL(gpio_export_with_name);
+
static int match_export(struct device *dev, const void *desc)
{
struct gpiod_data *data = dev_get_drvdata(dev);