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 TITLE:=CryptoAPI AEAD support
KCONFIG:= \ KCONFIG:= \
CONFIG_CRYPTO_AEAD \ CONFIG_CRYPTO_AEAD \
CONFIG_CRYPTO_AEAD2 CONFIG_CRYPTO_AEAD2 \
CONFIG_CRYPTO_GENIV
FILES:= \ FILES:= \
$(LINUX_DIR)/crypto/aead.ko \ $(LINUX_DIR)/crypto/aead.ko \
$(LINUX_DIR)/crypto/geniv.ko@ge5.10 $(LINUX_DIR)/crypto/geniv.ko@ge5.10

View File

@ -142,7 +142,7 @@ $(eval $(call KernelPackage,mii))
define KernelPackage/mdio-devres define KernelPackage/mdio-devres
SUBMENU:=$(NETWORK_DEVICES_MENU) SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Supports MDIO device registration 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 KCONFIG:=CONFIG_MDIO_DEVRES
HIDDEN:=1 HIDDEN:=1
FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko FILES:=$(LINUX_DIR)/drivers/net/phy/mdio_devres.ko

View File

@ -907,11 +907,25 @@ endef
$(eval $(call KernelPackage,sched-ipset)) $(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 define KernelPackage/sched-mqprio
SUBMENU:=$(NETWORK_SUPPORT_MENU) SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=Multi-queue priority scheduler (MQPRIO) 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 KCONFIG:=CONFIG_NET_SCH_MQPRIO
FILES:=$(LINUX_DIR)/net/sched/sch_mqprio.ko FILES:=$(LINUX_DIR)/net/sched/sch_mqprio.ko
AUTOLOAD:=$(call AutoProbe, sch_mqprio) AUTOLOAD:=$(call AutoProbe, sch_mqprio)
@ -982,7 +996,7 @@ endef
$(eval $(call KernelPackage,bpf-test)) $(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) SCHED_FILES_EXTRA = $(foreach mod,$(SCHED_MODULES_EXTRA),$(LINUX_DIR)/net/sched/$(mod).ko)
define KernelPackage/sched define KernelPackage/sched
@ -991,7 +1005,7 @@ define KernelPackage/sched
DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
KCONFIG:= \ KCONFIG:= \
CONFIG_NET_SCH_CODEL \ CONFIG_NET_SCH_CODEL \
CONFIG_NET_SCH_DSMARK \ CONFIG_NET_SCH_DSMARK@lt6.2 \
CONFIG_NET_SCH_GRED \ CONFIG_NET_SCH_GRED \
CONFIG_NET_SCH_MULTIQ \ CONFIG_NET_SCH_MULTIQ \
CONFIG_NET_SCH_SFQ \ CONFIG_NET_SCH_SFQ \
@ -1005,7 +1019,8 @@ define KernelPackage/sched
CONFIG_NET_EMATCH_META \ CONFIG_NET_EMATCH_META \
CONFIG_NET_EMATCH_TEXT CONFIG_NET_EMATCH_TEXT
FILES:=$(SCHED_FILES_EXTRA) 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 endef
define KernelPackage/sched/description define KernelPackage/sched/description

View File

@ -308,12 +308,16 @@ $(eval $(call KernelPackage,drm))
define KernelPackage/drm-buddy define KernelPackage/drm-buddy
SUBMENU:=$(VIDEO_MENU) SUBMENU:=$(VIDEO_MENU)
TITLE:=A page based buddy allocator 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 KCONFIG:=CONFIG_DRM_BUDDY
FILES:= $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko FILES:= $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko
AUTOLOAD:=$(call AutoProbe,drm_buddy) AUTOLOAD:=$(call AutoProbe,drm_buddy)
endef endef
define KernelPackage/drm-buddy/description
A page based buddy allocator
endef
$(eval $(call KernelPackage,drm-buddy)) $(eval $(call KernelPackage,drm-buddy))
define KernelPackage/drm-ttm define KernelPackage/drm-ttm
@ -367,7 +371,7 @@ $(eval $(call KernelPackage,drm-kms-helper))
define KernelPackage/drm-display-helper define KernelPackage/drm-display-helper
SUBMENU:=$(VIDEO_MENU) SUBMENU:=$(VIDEO_MENU)
TITLE:=DRM helpers for display adapters drivers 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 KCONFIG:=CONFIG_DRM_DISPLAY_HELPER
FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko
AUTOLOAD:=$(call AutoProbe,drm_display_helper) AUTOLOAD:=$(call AutoProbe,drm_display_helper)
@ -383,8 +387,8 @@ define KernelPackage/drm-amdgpu
SUBMENU:=$(VIDEO_MENU) SUBMENU:=$(VIDEO_MENU)
TITLE:=AMDGPU DRM support TITLE:=AMDGPU DRM support
DEPENDS:=@TARGET_x86||TARGET_loongarch64 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-ttm \ DEPENDS:=@TARGET_x86||TARGET_loongarch64 @DISPLAY_SUPPORT +kmod-backlight +kmod-drm-ttm \
+kmod-drm-kms-helper +kmod-i2c-algo-bit +amdgpu-firmware \ +kmod-drm-ttm-helper +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-display-helper +kmod-drm-buddy +kmod-acpi-video
KCONFIG:=CONFIG_DRM_AMDGPU \ KCONFIG:=CONFIG_DRM_AMDGPU \
CONFIG_DRM_AMDGPU_SI=y \ CONFIG_DRM_AMDGPU_SI=y \
CONFIG_DRM_AMDGPU_CIK=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.h"
#include "gpiolib-of.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)); 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); + of_property_read_string(cnp, "gpio-export,name", &name);
+ +
+ if (!name) + if (!name)
+ // max_gpio = of_gpio_count(cnp); + max_gpio = of_gpio_named_count(cnp, "gpios");
+ +
+ for (i = 0; i < max_gpio; i++) { + for (i = 0; i < max_gpio; i++) {
+ struct gpio_desc *desc;
+ unsigned flags = 0; + unsigned flags = 0;
+ enum of_gpio_flags of_flags; + enum of_gpio_flags of_flags;
+ +
+ gpio = of_get_named_gpio(cnp, i, &of_flags); + desc = of_get_named_gpiod_flags(cnp, "gpios", i, &of_flags);
+ if (!gpio_is_valid(gpio)) + if (IS_ERR(desc))
+ return gpio; + 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; + flags |= GPIOF_ACTIVE_LOW;
+ +
+ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) + if (!of_property_read_u32(cnp, "gpio-export,output", &val))
@ -66,7 +68,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ continue; + continue;
+ +
+ dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change"); + 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++; + nb++;
+ } + }
+ } + }
@ -88,22 +90,24 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+module_platform_driver(gpio_export_driver); +module_platform_driver(gpio_export_driver);
+ +
+#endif +#endif
\ No newline at end of file
--- a/include/linux/gpio/consumer.h --- a/include/linux/gpio/consumer.h
+++ b/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) #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 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, int gpiod_export_link(struct device *dev, const char *name,
struct gpio_desc *desc); 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> #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, + bool direction_may_change,
+ const char *name) + const char *name)
+{ +{
@ -113,9 +117,21 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
static inline int gpiod_export(struct gpio_desc *desc, static inline int gpiod_export(struct gpio_desc *desc,
bool direction_may_change) 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 --- a/drivers/gpio/gpiolib-sysfs.c
+++ b/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. * 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_chip *chip;
struct gpio_device *gdev; 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); offset = gpio_chip_hwgpio(desc);
if (chip->names && chip->names[offset]) if (chip->names && chip->names[offset])
ioname = 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, dev = device_create_with_groups(&gpio_class, &gdev->dev,
MKDEV(0, 0), data, gpio_groups, 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); gpiod_dbg(desc, "%s: status %d\n", __func__, status);
return status; return status;
} }
@ -145,4 +161,13 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+} +}
EXPORT_SYMBOL_GPL(gpiod_export); 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) static int match_export(struct device *dev, const void *desc)
{
struct gpiod_data *data = dev_get_drvdata(dev);