######################################################################## # Helper script: /load_kernel_modules.scr/platform/arm/allwinnerH3 # Purpose......: Set the Kernel modules for Hardware Models that use the # Allwinner H3 SoC within the Slackware initial RAM disk # ('OS initrd') and the Slackware installer. # Currently supported Hardware Models: # * LeMaker Banana Pi (original and Pro) ("M3" is not supported) # * Orange Pi (A20) v1.2 # This script is sourced from '/load_kernel_modules' # Author.......: Stuart Winter # Date.........: 30-Mar-2021 # Version......: 1.01 # Maintainer...: Stuart Winter # # Please use this as an example of how to add support for # a new SoC to Slackware AArch64/ARM. # # Important Note: # * You must _append_ to the module lists (include the variable # name within the variable itself), otherwise the base # set of modules will not be loaded and would result in # a Kernel panic. # * The initrd uses the 'bash' shell, rather than 'busybox' # (as in upstream/x86 Slackware). This allows you (for example) # to use 'fallthrough' (case statements terminated with ';&' # rather than ';;') within case statements and regular expression # matches within 'if' statements. # This permits the 'c'-style switch statements where you can # 'inherit' the previous matches as you move down the cases. # This enables you to match on varients of boards, and inherit # a 'baseline' of platform modules for that board. # # The 'PLATWALK' match is to enable build scripts to process these # scripts outside of the initrd environment and determine which # modules will be loaded by a particular Hardware Model. This must# # remain in place for all scripts. ######################################################################## # The Orange Pi Allwinner A20 model simply identifies as "Orange Pi". # For testing directly on the Hardware Model: #HWM=$( strings /proc/device-tree/model 2>/dev/null ) case $HWM in "Orange Pi"|*"LeMaker Banana Pi"*|*"LeMaker Banana Pro"*|PLATWALK) platform_detected=1 SOC_NAME=allwinnerA20 # Set the short name that is used by /load_kernel_modules to install # the appropriate configuration for modprobe for this Hardware Model: HWM_SHORTNAME=bpi echo "Architecture: ${ARCH}, Hardware model: ${HWM}, SoC: ${SOC_NAME}" # If one of the modules within the base list is causing problems on # your platform, here are the options laid out as examples: # USB="${USB/ehci_orion/differentmodule}" # Substitute module 'ehci_orion' with 'differentmodule' # USB="${USB/ehci_orion/}" # Remove the 'ehci_orion' module from the list MOD_GPIO+=" " MOD_PHY+=" phy_sun4i_usb" MOD_VIDEO+=" " MOD_CARDS+=" sunxi-mmc" MOD_USB+=" " MOD_SATA+=" ahci-sunxi" MOD_NET+=" dwmac-sunxi dwmac_sun8i stmmac" MOD_CMP+=" " MOD_CRYPTO+=" " # Example to detect hardware at runtime: #{ lspci 2>/dev/null | grep -q 'SATA cont.*ATA' ;} && MOD_XX="$MOD_XX yyy" # The following modules do not inherit: MOD_RTC="" # Modules for the peripherals on the Hardware Model's main board # (outside of the SoC itself) MOD_HWM="" # Modules for the IP blocks/peripherals embedded within the SoC: MOD_SOC="sun6i_dma";; esac # The '/load_kernel_modules' script will load the modules # set above.