brcm2708: Add Raspberry Pi 4 support
This commit is contained in:
parent
5587b29db8
commit
dfb162e9e2
@ -52,6 +52,24 @@ define Package/brcmfmac-firmware-43430-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43430-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-43430-sdio-rpi-3b = $(call Package/firmware-default,Broadcom BCM43430 NVRAM for Raspberry Pi 3B)
|
||||
define Package/brcmfmac-firmware-43430-sdio-rpi-3b/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43430-sdio-rpi-3b))
|
||||
|
||||
Package/brcmfmac-firmware-43430-sdio-rpi-zero-w = $(call Package/firmware-default,Broadcom BCM43430 NVRAM for Raspberry Pi Zero W)
|
||||
define Package/brcmfmac-firmware-43430-sdio-rpi-zero-w/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43430-sdio-rpi-zero-w))
|
||||
|
||||
Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware)
|
||||
define Package/brcmfmac-firmware-43430a0-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
@ -70,6 +88,24 @@ define Package/brcmfmac-firmware-43455-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43455-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-43455-sdio-rpi-3b-plus = $(call Package/firmware-default,Broadcom BCM43455 NVRAM for Raspberry Pi 3B+)
|
||||
define Package/brcmfmac-firmware-43455-sdio-rpi-3b-plus/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43455-sdio-rpi-3b-plus))
|
||||
|
||||
Package/brcmfmac-firmware-43455-sdio-rpi-4b = $(call Package/firmware-default,Broadcom BCM43455 NVRAM for Raspberry Pi 4B)
|
||||
define Package/brcmfmac-firmware-43455-sdio-rpi-4b/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43455-sdio-rpi-4b))
|
||||
|
||||
Package/brcmfmac-firmware-usb = $(call Package/firmware-default,Broadcom BCM43xx fullmac USB firmware)
|
||||
define Package/brcmfmac-firmware-usb/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2012-2016 OpenWrt.org
|
||||
# Copyright (C) 2012-2019 OpenWrt.org
|
||||
# Copyright (C) 2017 LEDE project
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=brcm2708-gpu-fw
|
||||
PKG_VERSION:=2018-11-29
|
||||
PKG_RELEASE:=b428bdd819df8d0ad3009b64492a4b3d1f9453e4
|
||||
PKG_VERSION:=2019-07-09
|
||||
PKG_RELEASE:=025759b8634c2f8df35203be02c19a0633f1cec1
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE)
|
||||
|
||||
@ -33,7 +33,7 @@ define Download/bootcode_bin
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-bootcode.bin
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=bootcode.bin
|
||||
HASH:=7b24659eb049333eec69f59cf0c5aa0d49eab5ed67726af3c6f0c9bcf1e3f9e3
|
||||
HASH:=6948c07f60f93489bbbc78747a1dc09ff0b1de42035c915fbd6453cdbd0e6475
|
||||
endef
|
||||
$(eval $(call Download,bootcode_bin))
|
||||
|
||||
@ -41,7 +41,7 @@ define Download/fixup_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup.dat
|
||||
HASH:=5e5946fe7c0b1f5e270f43a17aef5f6da5758d5e544ed37137628c972c9b8061
|
||||
HASH:=d63bc6d3516dbb860091a34ec3ce584fafb4dc79740c11da9be87572849c2e02
|
||||
endef
|
||||
$(eval $(call Download,fixup_dat))
|
||||
|
||||
@ -49,23 +49,47 @@ define Download/fixup_cd_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup_cd.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup_cd.dat
|
||||
HASH:=d7ed04063af818695f6d2f6ffdde8304c19385051c9cee7f8d6d5b20851e4e55
|
||||
HASH:=eba5b57f49d2e8c1b2261e59297256bdff4751aeb3c7a16e60044799bcfd6b68
|
||||
endef
|
||||
$(eval $(call Download,fixup_cd_dat))
|
||||
|
||||
define Download/fixup_x_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup_x.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
HASH:=ec99af78227d9ffa2e46ab80a96aa762187467fe33876e4d8085377e7d0f76c2
|
||||
URL_FILE:=fixup_x.dat
|
||||
HASH:=74cc843d28f07940f7f9e618d2f5ff8c0ed245599bb45457bab1960e56cbf672
|
||||
endef
|
||||
$(eval $(call Download,fixup_x_dat))
|
||||
|
||||
define Download/fixup4_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup4.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup4.dat
|
||||
HASH:=d8b44fd10c87ae51d4cce14a692f7f322574d63f7255f9776a61005c37183c5a
|
||||
endef
|
||||
$(eval $(call Download,fixup4_dat))
|
||||
|
||||
define Download/fixup4cd_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup4cd.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup4cd.dat
|
||||
HASH:=efc3fa3cd5f94e08687824bf149ed8c9a11bbd3e8ebac034934246dbf502300c
|
||||
endef
|
||||
$(eval $(call Download,fixup4cd_dat))
|
||||
|
||||
define Download/fixup4x_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup4x.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup4x.dat
|
||||
HASH:=866c11f0770246fba0756ee671cf118313ee23be88decae09114b123db2f26bd
|
||||
endef
|
||||
$(eval $(call Download,fixup4x_dat))
|
||||
|
||||
define Download/start_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start.elf
|
||||
HASH:=7e69d068c249cd859f5c44a8cf80a5e96a3f3fbeeeb0260de7373130a1d9b0fe
|
||||
HASH:=c9f831786f4c03d58110baddef4da32f56387d1af191866f839dffb9b0671aab
|
||||
endef
|
||||
$(eval $(call Download,start_elf))
|
||||
|
||||
@ -73,18 +97,42 @@ define Download/start_cd_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start_cd.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start_cd.elf
|
||||
HASH:=08aee2119a19c3556099ff875181d8e5440ebd1cecf1a5936b9340fe41da4428
|
||||
HASH:=c7ba345f71b1e5fed2cbc9d16dbb1b658546c1365e92302828f4f75ccb693df5
|
||||
endef
|
||||
$(eval $(call Download,start_cd_elf))
|
||||
|
||||
define Download/start_x_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start_x.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
HASH:=4fa98ee8eca7427aa013c1ad4a70d7b4cd01dcc08264307d1cb62f7c9ddfeed9
|
||||
URL_FILE:=start_x.elf
|
||||
HASH:=ab51744e7048a67758ac133ed20e3f482e40f81780915b88efb97647f838771e
|
||||
endef
|
||||
$(eval $(call Download,start_x_elf))
|
||||
|
||||
define Download/start4_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start4.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start4.elf
|
||||
HASH:=2691df2baa2d24dc08a7c7c99381555a819722a92c2b80731452724ddcd3e6d0
|
||||
endef
|
||||
$(eval $(call Download,start4_elf))
|
||||
|
||||
define Download/start4cd_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start4cd.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start4cd.elf
|
||||
HASH:=5e0d5e20b212daab99c2dd57a363ccd64ed27c8bbd0205efee07a731e6ae1a4e
|
||||
endef
|
||||
$(eval $(call Download,start4cd_elf))
|
||||
|
||||
define Download/start4x_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start4x.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start4x.elf
|
||||
HASH:=67a748bb67267cfea45597681e8400a1794956dd9b7906032991cb6ce2d8742b
|
||||
endef
|
||||
$(eval $(call Download,start4x_elf))
|
||||
|
||||
define Package/brcm2708-gpu-fw
|
||||
SECTION:=boot
|
||||
CATEGORY:=Boot Loaders
|
||||
@ -105,9 +153,15 @@ define Build/Prepare
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup.dat $(PKG_BUILD_DIR)/fixup.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup_cd.dat $(PKG_BUILD_DIR)/fixup_cd.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup_x.dat $(PKG_BUILD_DIR)/fixup_x.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup4.dat $(PKG_BUILD_DIR)/fixup4.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup4cd.dat $(PKG_BUILD_DIR)/fixup4cd.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-fixup4x.dat $(PKG_BUILD_DIR)/fixup4x.dat
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start.elf $(PKG_BUILD_DIR)/start.elf
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start_cd.elf $(PKG_BUILD_DIR)/start_cd.elf
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start_x.elf $(PKG_BUILD_DIR)/start_x.elf
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start4.elf $(PKG_BUILD_DIR)/start4.elf
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start4cd.elf $(PKG_BUILD_DIR)/start4cd.elf
|
||||
cp $(DL_DIR)/$(RPI_FIRMWARE_FILE)-start4x.elf $(PKG_BUILD_DIR)/start4x.elf
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
@ -124,9 +178,15 @@ define Build/InstallDev
|
||||
$(CP) $(PKG_BUILD_DIR)/start.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/start_cd.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/start_x.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/start4.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/start4cd.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/start4x.elf $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup.dat $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup_cd.dat $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup_x.dat $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup4.dat $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup4cd.dat $(KERNEL_BUILD_DIR)
|
||||
$(CP) $(PKG_BUILD_DIR)/fixup4x.dat $(KERNEL_BUILD_DIR)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,brcm2708-gpu-fw))
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2012-2016 OpenWrt.org
|
||||
# Copyright (C) 2012-2019 OpenWrt.org
|
||||
# Copyright (C) 2017 LEDE project
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
@ -14,7 +14,7 @@ FEATURES:=ext4 audio usb usbgadget display gpio fpu squashfs rootfs-part boot-pa
|
||||
MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
SUBTARGETS:=bcm2708 bcm2709 bcm2710
|
||||
|
||||
KERNEL_PATCHVER:=4.14
|
||||
KERNEL_PATCHVER:=4.19
|
||||
|
||||
define Target/Description
|
||||
Build firmware image for Broadcom BCM27xx SoC devices.
|
||||
|
@ -16,7 +16,8 @@ raspberrypi,model-b-plus |\
|
||||
raspberrypi,model-b-rev2 |\
|
||||
raspberrypi,2-model-b |\
|
||||
raspberrypi,3-model-b |\
|
||||
raspberrypi,3-model-b-plus)
|
||||
raspberrypi,3-model-b-plus |\
|
||||
raspberrypi,4-model-b)
|
||||
ucidef_set_interface_lan "eth0"
|
||||
;;
|
||||
|
||||
|
@ -9,6 +9,7 @@ set_preinit_iface() {
|
||||
raspberrypi,2-model-b |\
|
||||
raspberrypi,3-model-b |\
|
||||
raspberrypi,3-model-b-plus |\
|
||||
raspberrypi,4-model-b |\
|
||||
raspberrypi,model-b |\
|
||||
raspberrypi,model-b-plus |\
|
||||
raspberrypi,model-b-rev2)
|
||||
|
@ -9,7 +9,7 @@ platform_check_image() {
|
||||
|
||||
[ "$#" -gt 1 ] && return 1
|
||||
|
||||
export_bootdevice && export_partdevice diskdev -2 || {
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
@ -38,7 +38,7 @@ platform_check_image() {
|
||||
platform_do_upgrade() {
|
||||
local diskdev partdev diff
|
||||
|
||||
export_bootdevice && export_partdevice diskdev -2 || {
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
@ -72,10 +72,6 @@ platform_do_upgrade() {
|
||||
|
||||
#iterate over each partition from the image and write it to the boot disk
|
||||
while read part start size; do
|
||||
# root is /dev/sd[a|b]2 and not /dev/sd[a|b] this causes some problem
|
||||
# one of which is this offset, I'm not sure what's the best fix, so
|
||||
# here's a WA.
|
||||
let part=$((part - 2))
|
||||
if export_partdevice partdev $part; then
|
||||
echo "Writing image to /dev/$partdev..."
|
||||
get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync
|
||||
@ -92,8 +88,7 @@ platform_do_upgrade() {
|
||||
platform_copy_config() {
|
||||
local partdev
|
||||
|
||||
# Same as above /dev/sd[a|b]2 is root, so /boot is -1
|
||||
if export_partdevice partdev -1; then
|
||||
if export_partdevice partdev 1; then
|
||||
mkdir -p /boot
|
||||
[ -f /boot/kernel.img ] || mount -t vfat -o rw,noatime "/dev/$partdev" /boot
|
||||
cp -af "$CONF_TAR" /boot/
|
||||
|
@ -3,19 +3,25 @@ CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_BCM=y
|
||||
CONFIG_ARCH_BCM2835=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
# CONFIG_ARCH_MULTI_CPU_AUTO is not set
|
||||
CONFIG_ARCH_MULTI_V6=y
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
@ -23,15 +29,17 @@ CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
||||
# CONFIG_ARGON_MEM is not set
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_BCM2835_CPUFREQ=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_ARM_ERRATA_411920=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=5
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_SCPI_PROTOCOL is not set
|
||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
||||
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_TIMER_SP804=y
|
||||
@ -39,39 +47,43 @@ CONFIG_ARM_UNWIND=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_BCM2708_VCHIQ=y
|
||||
CONFIG_BCM2708_VCMEM=y
|
||||
# CONFIG_BCM2835_DEVGPIOMEM is not set
|
||||
CONFIG_BCM2835_DEVGPIOMEM=y
|
||||
CONFIG_BCM2835_FAST_MEMCPY=y
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
CONFIG_BCM2835_POWER=y
|
||||
# CONFIG_BCM2835_SMI is not set
|
||||
# CONFIG_BCM2835_THERMAL is not set
|
||||
CONFIG_BCM2835_THERMAL=y
|
||||
CONFIG_BCM2835_TIMER=y
|
||||
CONFIG_BCM2835_VCHIQ=y
|
||||
# CONFIG_BCM2835_VCHIQ_MMAL is not set
|
||||
CONFIG_BCM2835_WDT=y
|
||||
CONFIG_BCM_VCIO=y
|
||||
CONFIG_BCM_VC_CMA=y
|
||||
CONFIG_BCM_VC_SM=y
|
||||
# CONFIG_BINFMT_FLAT is not set
|
||||
# CONFIG_BCM_VC_SM_CMA is not set
|
||||
CONFIG_BCM_VIDEOCORE=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
# CONFIG_BRCMSTB_THERMAL is not set
|
||||
CONFIG_BRCM_CHAR_DRIVERS=y
|
||||
# CONFIG_BT_MTKUART is not set
|
||||
CONFIG_BUILD_BIN2C=y
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_CC_HAS_ASM_GOTO=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLKSRC_OF=y
|
||||
CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_MBYTES=5
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
@ -108,9 +120,11 @@ CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_PABRT_V6=y
|
||||
CONFIG_CPU_PM=y
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V6=y
|
||||
CONFIG_CPU_V6K=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
@ -120,7 +134,6 @@ CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
# CONFIG_DEBUG_UART_8250 is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
@ -131,6 +144,7 @@ CONFIG_DMA_BCM2835=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DTC=y
|
||||
@ -153,8 +167,8 @@ CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
# CONFIG_FB_RPISENSE is not set
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FIQ=y
|
||||
CONFIG_FIRMWARE_IN_KERNEL=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
@ -166,54 +180,58 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IO=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_GPIO_BCM_EXP is not set
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
# CONFIG_GPIO_BCM_VIRT is not set
|
||||
CONFIG_GPIO_RASPBERRYPI_EXP=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
||||
# CONFIG_HAVE_ARCH_BITREVERSE is not set
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_HAVE_CBPF_JIT=y
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
@ -224,11 +242,16 @@ CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
# CONFIG_HID_BIGBEN_FF is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_I2C_BCM2708 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_INPUT=y
|
||||
@ -236,10 +259,10 @@ CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
@ -249,18 +272,20 @@ CONFIG_KERNEL_GZIP=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_TRIGGER_INPUT=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_RPISENSE_CORE is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGHT_HAVE_PCI=y
|
||||
@ -268,6 +293,7 @@ CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
@ -276,7 +302,6 @@ CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MULTI_IRQ_HANDLER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_PER_CPU_KM=y
|
||||
CONFIG_NLS=y
|
||||
@ -286,6 +311,7 @@ CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_OABI_COMPAT=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
@ -295,6 +321,7 @@ CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
@ -302,8 +329,6 @@ CONFIG_OF_RESOLVE=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
# CONFIG_PCI_DOMAINS_GENERIC is not set
|
||||
# CONFIG_PCI_SYSCALL is not set
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PINCTRL=y
|
||||
@ -317,20 +342,18 @@ CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_BCM2835=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||
CONFIG_RASPBERRYPI_POWER=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
# CONFIG_RCU_STALL_COMMON is not set
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
# CONFIG_SCHED_INFO is not set
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
@ -341,9 +364,10 @@ CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=1
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=0
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
# CONFIG_SERIAL_AMBA_PL010 is not set
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
@ -351,16 +375,19 @@ CONFIG_SRCU=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
# CONFIG_TEXTSEARCH is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_BCM2835=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TINY_SRCU=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_TOUCHSCREEN_RPI_FT5406 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
# CONFIG_UID16 is not set
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
@ -376,7 +403,6 @@ CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UAS=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
@ -1,12 +1,13 @@
|
||||
#
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
# Copyright (C) 2015-2019 OpenWrt.org
|
||||
#
|
||||
|
||||
SUBTARGET:=bcm2708
|
||||
BOARDNAME:=BCM2708 based boards
|
||||
BOARDNAME:=BCM2708 boards (32 bit)
|
||||
CPU_TYPE:=arm1176jzf-s
|
||||
CPU_SUBTYPE:=vfp
|
||||
|
||||
define Target/Description
|
||||
Build firmware image for Broadcom BCM2708 SoC devices.
|
||||
Build firmware image for BCM2708 devices.
|
||||
This firmware features a 32 bit kernel.
|
||||
endef
|
||||
|
@ -1,23 +1,33 @@
|
||||
# CONFIG_AIO is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
# CONFIG_ARCH_AXXIA is not set
|
||||
CONFIG_ARCH_BCM=y
|
||||
CONFIG_ARCH_BCM2835=y
|
||||
# CONFIG_ARCH_BCM_HR2 is not set
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
||||
CONFIG_ARCH_HAS_PTE_SPECIAL=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=15
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
# CONFIG_ARCH_MULTI_CPU_AUTO is not set
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
@ -25,19 +35,21 @@ CONFIG_ARCH_USE_BUILTIN_BSWAP=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
|
||||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
|
||||
# CONFIG_ARGON_MEM is not set
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_BCM2835_CPUFREQ=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_LPAE=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
# CONFIG_ARM_SCPI_PROTOCOL is not set
|
||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
||||
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
# CONFIG_ARM_THUMBEE is not set
|
||||
@ -47,38 +59,48 @@ CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_BCM2708_VCHIQ=y
|
||||
CONFIG_BCM2708_VCMEM=y
|
||||
# CONFIG_BCM2835_DEVGPIOMEM is not set
|
||||
CONFIG_BCM2835_DEVGPIOMEM=y
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
CONFIG_BCM2835_POWER=y
|
||||
# CONFIG_BCM2835_SMI is not set
|
||||
# CONFIG_BCM2835_THERMAL is not set
|
||||
CONFIG_BCM2835_THERMAL=y
|
||||
CONFIG_BCM2835_TIMER=y
|
||||
CONFIG_BCM2835_VCHIQ=y
|
||||
# CONFIG_BCM2835_VCHIQ_MMAL is not set
|
||||
CONFIG_BCM2835_WDT=y
|
||||
CONFIG_BCM7XXX_PHY=y
|
||||
CONFIG_BCMGENET=y
|
||||
CONFIG_BCM_NET_PHYLIB=y
|
||||
CONFIG_BCM_VCIO=y
|
||||
CONFIG_BCM_VC_CMA=y
|
||||
CONFIG_BCM_VC_SM=y
|
||||
# CONFIG_BINFMT_FLAT is not set
|
||||
# CONFIG_BCM_VC_SM_CMA is not set
|
||||
CONFIG_BCM_VIDEOCORE=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_BRCMSTB_THERMAL=y
|
||||
CONFIG_BRCM_CHAR_DRIVERS=y
|
||||
CONFIG_BROADCOM_PHY=y
|
||||
# CONFIG_BT_MTKUART is not set
|
||||
CONFIG_BUILD_BIN2C=y
|
||||
# CONFIG_CACHE_L2X0 is not set
|
||||
CONFIG_CC_HAS_ASM_GOTO=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLKSRC_OF=y
|
||||
CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_MBYTES=5
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
@ -116,12 +138,15 @@ CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_SPECTRE=y
|
||||
# CONFIG_CPU_THERMAL is not set
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
@ -134,7 +159,6 @@ CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
# CONFIG_DEBUG_UART_8250 is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
@ -145,6 +169,7 @@ CONFIG_DMA_BCM2835=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_DTC=y
|
||||
@ -152,6 +177,7 @@ CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_EXTCON_ARIZONA is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
@ -167,8 +193,9 @@ CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
# CONFIG_FB_RPISENSE is not set
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FIQ=y
|
||||
CONFIG_FIRMWARE_IN_KERNEL=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
@ -180,26 +207,37 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IO=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_BCM_EXP=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_BCM_VIRT=y
|
||||
CONFIG_GPIO_RASPBERRYPI_EXP=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
@ -207,31 +245,33 @@ CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_HAVE_CBPF_JIT=y
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_GENERIC_GUP=y
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
@ -241,14 +281,23 @@ CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_PROC_CPU=y
|
||||
CONFIG_HAVE_RCU_TABLE_FREE=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_UID16=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
# CONFIG_HID_BIGBEN_FF is not set
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGHPTE=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_I2C_BCM2708 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_INPUT=y
|
||||
@ -256,10 +305,10 @@ CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_JBD2=y
|
||||
@ -269,35 +318,45 @@ CONFIG_KERNEL_GZIP=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_TRIGGER_INPUT=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_LOGO_LINUX_CLUT224=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
CONFIG_MDIO_BCM_UNIMAC=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_RPISENSE_CORE is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MICROCHIP_PHY=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGHT_HAVE_PCI=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_IPROC=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MULTI_IRQ_HANDLER=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEON=y
|
||||
@ -310,6 +369,7 @@ CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_OABI_COMPAT=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
@ -319,6 +379,8 @@ CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
@ -326,11 +388,18 @@ CONFIG_OF_RESOLVE=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0x80000000
|
||||
# CONFIG_PCI_DOMAINS_GENERIC is not set
|
||||
# CONFIG_PCI_SYSCALL is not set
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIE_BRCMSTB=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
# CONFIG_PCI_V3_SEMI is not set
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
CONFIG_PM=y
|
||||
@ -343,23 +412,24 @@ CONFIG_PM_SLEEP=y
|
||||
CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_BCM2835=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||
CONFIG_RASPBERRYPI_POWER=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
# CONFIG_SCHED_INFO is not set
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
@ -370,9 +440,10 @@ CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=1
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=0
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
# CONFIG_SERIAL_AMBA_PL010 is not set
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
@ -382,19 +453,24 @@ CONFIG_SRCU=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
||||
# CONFIG_TEXTSEARCH is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_BCM2835=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
# CONFIG_THUMB2_KERNEL is not set
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_TOUCHSCREEN_RPI_FT5406 is not set
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
# CONFIG_UID16 is not set
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
@ -406,16 +482,18 @@ CONFIG_USB_DWCOTG=y
|
||||
CONFIG_USB_LAN78XX=y
|
||||
CONFIG_USB_NET_DRIVERS=y
|
||||
CONFIG_USB_NET_SMSC95XX=y
|
||||
CONFIG_USB_PCI=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UAS=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PCI=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_VMSPLIT_2G=y
|
||||
# CONFIG_VMSPLIT_3G is not set
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_VT_CONSOLE_SLEEP=y
|
@ -1,13 +1,14 @@
|
||||
#
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
# Copyright (C) 2015-2019 OpenWrt.org
|
||||
# Copyright (C) 2017 LEDE project
|
||||
#
|
||||
|
||||
SUBTARGET:=bcm2709
|
||||
BOARDNAME:=BCM2709/BCM2710 32 bit based boards
|
||||
BOARDNAME:=BCM2709/BCM2710/BCM2711 boards (32 bit)
|
||||
CPU_TYPE:=cortex-a7
|
||||
CPU_SUBTYPE:=neon-vfpv4
|
||||
|
||||
define Target/Description
|
||||
Build firmware image for Broadcom BCM2709/BCM2710 32 bit SoC devices.
|
||||
Build firmware image for BCM2709/BCM2710/BCM2711 devices.
|
||||
This firmware features a 32 bit kernel.
|
||||
endef
|
||||
|
@ -60,7 +60,6 @@ CONFIG_ARM64_PAN=y
|
||||
# CONFIG_ARM64_PTDUMP_DEBUGFS is not set
|
||||
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
|
||||
CONFIG_ARM64_SSBD=y
|
||||
# CONFIG_ARM64_SW_TTBR0_PAN is not set
|
||||
CONFIG_ARM64_UAO=y
|
||||
CONFIG_ARM64_VA_BITS=39
|
||||
CONFIG_ARM64_VA_BITS_39=y
|
||||
@ -119,7 +118,6 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
|
@ -4,30 +4,72 @@ CONFIG_ARCH_BCM2835=y
|
||||
CONFIG_ARCH_CLOCKSOURCE_DATA=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
|
||||
CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
|
||||
CONFIG_ARCH_HAS_PTE_SPECIAL=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_INLINE_READ_LOCK=y
|
||||
CONFIG_ARCH_INLINE_READ_LOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y
|
||||
CONFIG_ARCH_INLINE_READ_UNLOCK=y
|
||||
CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_ARCH_INLINE_SPIN_LOCK=y
|
||||
CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y
|
||||
CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y
|
||||
CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_SPIN_UNLOCK=y
|
||||
CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_ARCH_INLINE_WRITE_LOCK=y
|
||||
CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y
|
||||
CONFIG_ARCH_INLINE_WRITE_UNLOCK=y
|
||||
CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y
|
||||
CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y
|
||||
CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
|
||||
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
|
||||
CONFIG_ARCH_SUPPORTS_INT128=y
|
||||
CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
|
||||
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
|
||||
CONFIG_ARCH_SUPPORTS_UPROBES=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
|
||||
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
|
||||
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
|
||||
CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
|
||||
CONFIG_ARCH_WANT_FRAME_POINTERS=y
|
||||
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
|
||||
# CONFIG_ARGON_MEM is not set
|
||||
CONFIG_ARM64=y
|
||||
# CONFIG_ARM64_16K_PAGES is not set
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
@ -42,12 +84,16 @@ CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
CONFIG_ARM64_HW_AFDBM=y
|
||||
# CONFIG_ARM64_LSE_ATOMICS is not set
|
||||
CONFIG_ARM64_MODULE_CMODEL_LARGE=y
|
||||
CONFIG_ARM64_MODULE_PLTS=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PAN=y
|
||||
# CONFIG_ARM64_PTDUMP is not set
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
# CONFIG_ARM64_PMEM is not set
|
||||
# CONFIG_ARM64_PTDUMP_DEBUGFS is not set
|
||||
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
|
||||
CONFIG_ARM64_SSBD=y
|
||||
CONFIG_ARM64_SVE=y
|
||||
CONFIG_ARM64_UAO=y
|
||||
CONFIG_ARM64_VA_BITS=39
|
||||
CONFIG_ARM64_VA_BITS_39=y
|
||||
@ -56,55 +102,64 @@ CONFIG_ARM64_VHE=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
|
||||
CONFIG_ARM_BCM2835_CPUFREQ=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
# CONFIG_ARM_SCMI_PROTOCOL is not set
|
||||
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||
CONFIG_ARM_TIMER_SP804=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
# CONFIG_BCM2708_VCHIQ is not set
|
||||
CONFIG_BCM2708_VCMEM=y
|
||||
# CONFIG_BCM2835_DEVGPIOMEM is not set
|
||||
CONFIG_BCM2835_DEVGPIOMEM=y
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
CONFIG_BCM2835_POWER=y
|
||||
# CONFIG_BCM2835_SMI is not set
|
||||
# CONFIG_BCM2835_THERMAL is not set
|
||||
CONFIG_BCM2835_THERMAL=y
|
||||
CONFIG_BCM2835_VCHIQ=y
|
||||
# CONFIG_BCM2835_VCHIQ_MMAL is not set
|
||||
CONFIG_BCM2835_WDT=y
|
||||
# CONFIG_BCM_PDC_MBOX is not set
|
||||
# CONFIG_BCM_VCIO is not set
|
||||
# CONFIG_BCM_VC_SM is not set
|
||||
# CONFIG_BCM_VC_SM_CMA is not set
|
||||
CONFIG_BCM_VIDEOCORE=y
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BRCMSTB_THERMAL=y
|
||||
CONFIG_BRCM_CHAR_DRIVERS=y
|
||||
# CONFIG_BT_MTKUART is not set
|
||||
CONFIG_BUILD_BIN2C=y
|
||||
CONFIG_CAVIUM_ERRATUM_22375=y
|
||||
CONFIG_CAVIUM_ERRATUM_23154=y
|
||||
CONFIG_CAVIUM_ERRATUM_27456=y
|
||||
CONFIG_CC_HAS_ASM_GOTO=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLKSRC_MMIO=y
|
||||
CONFIG_CLKSRC_OF=y
|
||||
CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=16
|
||||
CONFIG_CMA_SIZE_MBYTES=5
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_COMMON_CLK_VERSATILE is not set
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
# CONFIG_COMPAT is not set
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
# CONFIG_CPUFREQ_DT is not set
|
||||
@ -130,6 +185,7 @@ CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
@ -139,10 +195,8 @@ CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_WORKQUEUE=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
# CONFIG_DEBUG_ALIGN_RODATA is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_RODATA=y
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
@ -150,6 +204,7 @@ CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_BCM2708=y
|
||||
CONFIG_DMA_BCM2835=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_DMA_DIRECT_OPS=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
@ -158,6 +213,7 @@ CONFIG_DTC=y
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_EXTCON_ARIZONA is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
@ -173,8 +229,10 @@ CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
# CONFIG_FB_RPISENSE is not set
|
||||
CONFIG_FIRMWARE_IN_KERNEL=y
|
||||
CONFIG_FB_SIMPLE=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
# CONFIG_FLATMEM_MANUAL is not set
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_8x8=y
|
||||
@ -185,9 +243,11 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FSL_ERRATUM_A008585=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
@ -196,27 +256,33 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IO=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_BCM_EXP=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_BCM_VIRT=y
|
||||
CONFIG_GPIO_RASPBERRYPI_EXP=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
|
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
||||
CONFIG_HAVE_ARCH_BITREVERSE=y
|
||||
@ -225,12 +291,13 @@ CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_KASAN=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
|
||||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_HAVE_ARCH_VMAP_STACK=y
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_HAVE_CMPXCHG_DOUBLE=y
|
||||
@ -239,7 +306,6 @@ CONFIG_HAVE_CONTEXT_TRACKING=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_HAVE_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
@ -248,10 +314,11 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_HAVE_GENERIC_RCU_GUP=y
|
||||
CONFIG_HAVE_GENERIC_GUP=y
|
||||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_HAVE_MEMORY_PRESENT=y
|
||||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_HAVE_NET_DSA=y
|
||||
CONFIG_HAVE_PATA_PLATFORM=y
|
||||
CONFIG_HAVE_PERF_EVENTS=y
|
||||
@ -259,20 +326,45 @@ CONFIG_HAVE_PERF_REGS=y
|
||||
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
|
||||
CONFIG_HAVE_RCU_TABLE_FREE=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
|
||||
# CONFIG_HID_BIGBEN_FF is not set
|
||||
CONFIG_HOLES_IN_ZONE=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_I2C_BCM2708 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_INLINE_READ_LOCK=y
|
||||
CONFIG_INLINE_READ_LOCK_BH=y
|
||||
CONFIG_INLINE_READ_LOCK_IRQ=y
|
||||
CONFIG_INLINE_READ_LOCK_IRQSAVE=y
|
||||
CONFIG_INLINE_READ_UNLOCK_BH=y
|
||||
CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_INLINE_SPIN_LOCK=y
|
||||
CONFIG_INLINE_SPIN_LOCK_BH=y
|
||||
CONFIG_INLINE_SPIN_LOCK_IRQ=y
|
||||
CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y
|
||||
CONFIG_INLINE_SPIN_TRYLOCK=y
|
||||
CONFIG_INLINE_SPIN_TRYLOCK_BH=y
|
||||
CONFIG_INLINE_SPIN_UNLOCK_BH=y
|
||||
CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_INLINE_WRITE_LOCK=y
|
||||
CONFIG_INLINE_WRITE_LOCK_BH=y
|
||||
CONFIG_INLINE_WRITE_LOCK_IRQ=y
|
||||
CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y
|
||||
CONFIG_INLINE_WRITE_UNLOCK_BH=y
|
||||
CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y
|
||||
CONFIG_INPUT=y
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
CONFIG_IOMMU_HELPER=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
@ -284,6 +376,7 @@ CONFIG_JBD2=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_TRIGGER_INPUT=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_LOGO_LINUX_CLUT224=y
|
||||
@ -294,18 +387,29 @@ CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_RPISENSE_CORE is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MICROCHIP_PHY=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BCM2835_DMA=y
|
||||
CONFIG_MMC_BCM2835_MMC=y
|
||||
CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
|
||||
CONFIG_MMC_BCM2835_SDHOST=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_IPROC=y
|
||||
# CONFIG_MMC_SDHCI_PCI is not set
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_TIFM_SD is not set
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
@ -319,9 +423,9 @@ CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NO_IOPORT_MAP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_CONFIGFS=y
|
||||
@ -330,18 +434,23 @@ CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OF_NET=y
|
||||
CONFIG_OF_OVERLAY=y
|
||||
CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_OF_RESOLVE=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
# CONFIG_PCI_DOMAINS is not set
|
||||
# CONFIG_PCI_DOMAINS_GENERIC is not set
|
||||
# CONFIG_PCI_SYSCALL is not set
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_PCIE_BRCMSTB is not set
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
# CONFIG_PHY_XGENE is not set
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_BCM2835=y
|
||||
CONFIG_PM=y
|
||||
@ -355,24 +464,27 @@ CONFIG_PM_SLEEP_SMP=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_BCM2835=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
# CONFIG_RANDOMIZE_BASE is not set
|
||||
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||
CONFIG_RASPBERRYPI_POWER=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_RCU_STALL_COMMON=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
# CONFIG_SCHED_INFO is not set
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
@ -385,6 +497,8 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
@ -399,17 +513,23 @@ CONFIG_SRCU=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
|
||||
# CONFIG_TEXTSEARCH is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_BCM2835=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_TOUCHSCREEN_RPI_FT5406 is not set
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UEVENT_HELPER_PATH=""
|
||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
||||
CONFIG_USB=y
|
||||
@ -424,6 +544,7 @@ CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_UAS=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_VT_CONSOLE_SLEEP=y
|
||||
@ -432,3 +553,4 @@ CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZONE_DMA32=y
|
@ -1,13 +1,14 @@
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
# Copyright (C) 2016-2019 OpenWrt.org
|
||||
# Copyright (C) 2017 LEDE project
|
||||
#
|
||||
|
||||
ARCH:=aarch64
|
||||
SUBTARGET:=bcm2710
|
||||
BOARDNAME:=BCM2710 64 bit based boards
|
||||
BOARDNAME:=BCM2710 boards (64 bit)
|
||||
CPU_TYPE:=cortex-a53
|
||||
|
||||
define Target/Description
|
||||
Build firmware image for Broadcom BCM2710 64 bit SoC devices.
|
||||
Build firmware image for BCM2710 devices.
|
||||
This firmware features a 64 bit kernel.
|
||||
endef
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2012-2015 OpenWrt.org
|
||||
# Copyright (C) 2012-2019 OpenWrt.org
|
||||
# Copyright (C) 2016-2017 LEDE project
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
@ -21,18 +21,12 @@ define Build/kernel-img
|
||||
mv $@.tmp $@
|
||||
endef
|
||||
|
||||
define Build/boot-img
|
||||
define Build/boot-common
|
||||
rm -f $@.boot
|
||||
mkfs.fat -C $@.boot $(FAT32_BLOCKS)
|
||||
mcopy -i $@.boot $(KDIR)/COPYING.linux ::
|
||||
mcopy -i $@.boot $(KDIR)/bootcode.bin ::
|
||||
mcopy -i $@.boot $(KDIR)/LICENCE.broadcom ::
|
||||
mcopy -i $@.boot $(KDIR)/start.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start_cd.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start_x.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup_cd.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup_x.dat ::
|
||||
mcopy -i $@.boot cmdline.txt ::
|
||||
mcopy -i $@.boot config.txt ::
|
||||
mcopy -i $@.boot $(IMAGE_KERNEL) ::$(KERNEL_IMG)
|
||||
@ -42,6 +36,24 @@ define Build/boot-img
|
||||
mcopy -i $@.boot $(DTS_DIR)/overlays/README ::/overlays/
|
||||
endef
|
||||
|
||||
define Build/boot-2708
|
||||
mcopy -i $@.boot $(KDIR)/start.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start_cd.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start_x.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup_cd.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup_x.dat ::
|
||||
endef
|
||||
|
||||
define Build/boot-2711
|
||||
mcopy -i $@.boot $(KDIR)/start4.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start4cd.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/start4x.elf ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup4.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup4cd.dat ::
|
||||
mcopy -i $@.boot $(KDIR)/fixup4x.dat ::
|
||||
endef
|
||||
|
||||
define Build/sdcard-img
|
||||
./gen_rpi_sdcard_img.sh $@ $@.boot $(IMAGE_ROOTFS) \
|
||||
$(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
||||
@ -52,33 +64,43 @@ define Device/Default
|
||||
KERNEL := kernel-bin | kernel-img
|
||||
KERNEL_IMG := kernel.img
|
||||
IMAGES := factory.img.gz sysupgrade.img.gz
|
||||
IMAGE/sysupgrade.img.gz := boot-img | sdcard-img | gzip | append-metadata
|
||||
IMAGE/factory.img.gz := boot-img | sdcard-img | gzip
|
||||
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | sdcard-img | gzip | append-metadata
|
||||
IMAGE/factory.img.gz := boot-common | boot-2708 | sdcard-img | gzip
|
||||
endef
|
||||
|
||||
define Device/rpi
|
||||
DEVICE_TITLE := Raspberry Pi B/B+/CM/Zero/ZeroW
|
||||
DEVICE_DTS := bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm bcm2708-rpi-0-w
|
||||
DEVICE_DTS := bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm bcm2708-rpi-zero bcm2708-rpi-zero-w
|
||||
SUPPORTED_DEVICES := \
|
||||
rpi-b rpi-b-plus rpi-cm rpi-zero rpi-zero-w \
|
||||
raspberrypi,model-b raspberrypi,model-b-plus raspberrypi,model-b-rev2 \
|
||||
raspberrypi,compute-module raspberrypi,compute-module-1 \
|
||||
raspberrypi,model-zero raspberrypi,model-zero-w
|
||||
DEVICE_PACKAGES := brcmfmac-firmware-43430-sdio brcmfmac-board-rpi2 kmod-brcmfmac wpad-basic
|
||||
DEVICE_PACKAGES := \
|
||||
brcmfmac-firmware-43430-sdio \
|
||||
brcmfmac-firmware-43430-sdio-rpi-zero-w \
|
||||
kmod-brcmfmac wpad-basic
|
||||
endef
|
||||
ifeq ($(SUBTARGET),bcm2708)
|
||||
TARGET_DEVICES += rpi
|
||||
endif
|
||||
|
||||
define Device/rpi-2
|
||||
DEVICE_TITLE := Raspberry Pi 2B/3B/3B+/3CM
|
||||
DEVICE_DTS := bcm2709-rpi-2-b bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3
|
||||
DEVICE_TITLE := Raspberry Pi 2B/3B/3B+/3CM/4B
|
||||
DEVICE_DTS := bcm2709-rpi-2-b bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2711-rpi-4-b bcm2710-rpi-cm3
|
||||
SUPPORTED_DEVICES := \
|
||||
rpi-2-b rpi-3-b rpi-3-b-plus rpi-cm \
|
||||
raspberrypi,2-model-b \
|
||||
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
||||
raspberrypi,3-compute-module raspberrypi,compute-module-3
|
||||
DEVICE_PACKAGES := brcmfmac-firmware-43430-sdio brcmfmac-firmware-43455-sdio brcmfmac-board-rpi2 brcmfmac-board-rpi3 kmod-brcmfmac wpad-basic
|
||||
DEVICE_PACKAGES := \
|
||||
brcmfmac-firmware-43430-sdio \
|
||||
brcmfmac-firmware-43430-sdio-rpi-3b \
|
||||
brcmfmac-firmware-43455-sdio brcmfmac-firmware-43455-clm_blob \
|
||||
brcmfmac-firmware-43455-sdio-rpi-3b-plus brcmfmac-firmware-43455-sdio-rpi-4b \
|
||||
kmod-brcmfmac wpad-basic
|
||||
IMAGE/sysupgrade.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip | append-metadata
|
||||
IMAGE/factory.img.gz := boot-common | boot-2708 | boot-2711 | sdcard-img | gzip
|
||||
endef
|
||||
ifeq ($(SUBTARGET),bcm2709)
|
||||
TARGET_DEVICES += rpi-2
|
||||
@ -86,13 +108,18 @@ endif
|
||||
|
||||
define Device/rpi-3
|
||||
KERNEL_IMG := kernel8.img
|
||||
DEVICE_TITLE := Raspberry Pi 3B/3B+
|
||||
DEVICE_DTS := broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus
|
||||
DEVICE_TITLE := Raspberry Pi 3B/3B+/3CM
|
||||
DEVICE_DTS := broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3
|
||||
SUPPORTED_DEVICES := \
|
||||
rpi-3-b rpi-3-b-plus \
|
||||
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
||||
raspberrypi,3-compute-module raspberrypi,compute-module-3
|
||||
DEVICE_PACKAGES := brcmfmac-firmware-43430-sdio brcmfmac-board-rpi2 brcmfmac-firmware-43455-sdio brcmfmac-board-rpi3 kmod-brcmfmac wpad-basic
|
||||
DEVICE_PACKAGES := \
|
||||
brcmfmac-firmware-43430-sdio \
|
||||
brcmfmac-firmware-43430-sdio-rpi-3b \
|
||||
brcmfmac-firmware-43455-sdio brcmfmac-firmware-43455-clm_blob \
|
||||
brcmfmac-firmware-43455-sdio-rpi-3b-plus \
|
||||
kmod-brcmfmac wpad-basic
|
||||
endef
|
||||
ifeq ($(SUBTARGET),bcm2710)
|
||||
TARGET_DEVICES += rpi-3
|
||||
|
@ -1 +1 @@
|
||||
dwc_otg.lpm_enable=0 console=serial0,115200 kgdboc=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait
|
||||
console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait
|
||||
|
@ -1,961 +1,8 @@
|
||||
################################################################################
|
||||
## Raspberry Pi Configuration Settings
|
||||
##
|
||||
## Revision 14, 2012/10/22
|
||||
##
|
||||
## Details taken from the eLinux wiki
|
||||
## For up-to-date information please refer to wiki page.
|
||||
##
|
||||
## Wiki Location : http://elinux.org/RPi_config.txt
|
||||
##
|
||||
##
|
||||
## Description:
|
||||
## Details of each setting are described with each section that begins with
|
||||
## a double hashed comment ('##')
|
||||
## It is up to the user to remove the single hashed comment ('#') from each
|
||||
## option they want to enable, and to set the specific value of that option.
|
||||
##
|
||||
## WARNING: Setting the following combination of parameters will set a
|
||||
## permanent bit within the SOC and your warranty is void.
|
||||
## over_voltage>0, and at least one of the following:
|
||||
## force_turbo=1
|
||||
## current_limit_override=0x5A000020
|
||||
## temp_limit>85
|
||||
##
|
||||
## Overclock settings will be disabled at runtime if the SoC reaches temp_limit
|
||||
##
|
||||
# Bootloader configuration - config.txt
|
||||
################################################################################
|
||||
|
||||
################################################################################
|
||||
## Standard Definition Video Settings
|
||||
# For overclocking and various other settings, see:
|
||||
# https://www.raspberrypi.org/documentation/configuration/config-txt/README.md
|
||||
################################################################################
|
||||
|
||||
## sdtv_mode
|
||||
## defines the TV standard for composite output
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Normal NTSC (Default)
|
||||
## 1 Japanese version of NTSC - no pedestal
|
||||
## 2 Normal PAL
|
||||
## 3 Brazilian version of PAL - 525/60 rather than 625/50, different
|
||||
## subcarrier
|
||||
##
|
||||
#sdtv_mode=0
|
||||
|
||||
## sdtv_aspect
|
||||
## defines the aspect ratio for composite output
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 1 4:3 (Default)
|
||||
## 2 14:9
|
||||
## 3 16:9
|
||||
##
|
||||
#sdtv_aspect=1
|
||||
|
||||
## sdtv_disable_colourburst
|
||||
## Disables colour burst on composite output. The picture will be
|
||||
## monochrome, but possibly sharper
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Colour burst is enabled (Default)
|
||||
## 1 Colour burst is disabled
|
||||
##
|
||||
#sdtv_disable_colourburst=1
|
||||
|
||||
################################################################################
|
||||
## High Definition Video Settings
|
||||
################################################################################
|
||||
|
||||
## hdmi_safe
|
||||
## Use "safe mode" settings to try to boot with maximum hdmi compatibility.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Disabled (Default)
|
||||
## 1 Enabled (this does: hdmi_force_hotplug=1, config_hdmi_boost=4,
|
||||
## hdmi_group=1, hdmi_mode=1,
|
||||
## disable_overscan=0)
|
||||
##
|
||||
#hdmi_safe=1
|
||||
|
||||
## hdmi_force_hotplug
|
||||
## Pretends HDMI hotplug signal is asserted so it appears a HDMI display
|
||||
## is attached
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Disabled (Default)
|
||||
## 1 Use HDMI mode even if no HDMI monitor is detected
|
||||
##
|
||||
#hdmi_force_hotplug=1
|
||||
|
||||
## hdmi_ignore_hotplug
|
||||
## Pretends HDMI hotplug signal is not asserted so it appears a HDMI
|
||||
## display is not attached
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Disabled (Default)
|
||||
## 1 Use composite mode even if HDMI monitor is detected
|
||||
##
|
||||
#hdmi_ignore_hotplug=1
|
||||
|
||||
## hdmi_drive
|
||||
## chooses between HDMI and DVI modes
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 1 Normal DVI mode (No sound)
|
||||
## 2 Normal HDMI mode (Sound will be sent if supported and enabled)
|
||||
##
|
||||
#hdmi_drive=2
|
||||
|
||||
## hdmi_ignore_edid
|
||||
## Enables the ignoring of EDID/display data
|
||||
##
|
||||
#hdmi_ignore_edid=0xa5000080
|
||||
|
||||
## hdmi_edid_file
|
||||
## Read the EDID data from the edid.dat file instead of from the attached
|
||||
## device
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Read EDID data from attached device (Default)
|
||||
## 1 Read EDID data from edid.txt file
|
||||
##
|
||||
#hdmi_edid_file=1
|
||||
|
||||
## hdmi_force_edid_audio
|
||||
## Pretends all audio formats are supported by display, allowing
|
||||
## passthrough of DTS/AC3 even when not reported as supported.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Use EDID provided values (Default)
|
||||
## 1 Pretend all audio formats are supported
|
||||
##
|
||||
#hdmi_force_edid_audio=1
|
||||
|
||||
## avoid_edid_fuzzy_match
|
||||
## Avoid fuzzy matching of modes described in edid.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Use fuzzy matching (Default)
|
||||
## 1 Avoid fuzzy matching
|
||||
##
|
||||
#avoid_edid_fuzzy_match=1
|
||||
|
||||
## hdmi_group
|
||||
## Defines the HDMI type
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Use the preferred group reported by the edid (Default)
|
||||
## 1 CEA
|
||||
## 2 DMT
|
||||
##
|
||||
#hdmi_group=1
|
||||
|
||||
## hdmi_mode
|
||||
## defines screen resolution in CEA or DMT format
|
||||
##
|
||||
## H means 16:9 variant (of a normally 4:3 mode).
|
||||
## 2x means pixel doubled (i.e. higher clock rate, with each pixel repeated
|
||||
## twice)
|
||||
## 4x means pixel quadrupled (i.e. higher clock rate, with each pixel
|
||||
## repeated four times)
|
||||
## reduced blanking means fewer bytes are used for blanking within the data
|
||||
## stream (i.e. lower clock rate, with fewer wasted bytes)
|
||||
##
|
||||
## Value hdmi_group=CEA hdmi_group=DMT
|
||||
## -------------------------------------------------------------------------
|
||||
## 1 VGA 640x350 85Hz
|
||||
## 2 480p 60Hz 640x400 85Hz
|
||||
## 3 480p 60Hz H 720x400 85Hz
|
||||
## 4 720p 60Hz 640x480 60Hz
|
||||
## 5 1080i 60Hz 640x480 72Hz
|
||||
## 6 480i 60Hz 640x480 75Hz
|
||||
## 7 480i 60Hz H 640x480 85Hz
|
||||
## 8 240p 60Hz 800x600 56Hz
|
||||
## 9 240p 60Hz H 800x600 60Hz
|
||||
## 10 480i 60Hz 4x 800x600 72Hz
|
||||
## 11 480i 60Hz 4x H 800x600 75Hz
|
||||
## 12 240p 60Hz 4x 800x600 85Hz
|
||||
## 13 240p 60Hz 4x H 800x600 120Hz
|
||||
## 14 480p 60Hz 2x 848x480 60Hz
|
||||
## 15 480p 60Hz 2x H 1024x768 43Hz DO NOT USE
|
||||
## 16 1080p 60Hz 1024x768 60Hz
|
||||
## 17 576p 50Hz 1024x768 70Hz
|
||||
## 18 576p 50Hz H 1024x768 75Hz
|
||||
## 19 720p 50Hz 1024x768 85Hz
|
||||
## 20 1080i 50Hz 1024x768 120Hz
|
||||
## 21 576i 50Hz 1152x864 75Hz
|
||||
## 22 576i 50Hz H 1280x768 reduced blanking
|
||||
## 23 288p 50Hz 1280x768 60Hz
|
||||
## 24 288p 50Hz H 1280x768 75Hz
|
||||
## 25 576i 50Hz 4x 1280x768 85Hz
|
||||
## 26 576i 50Hz 4x H 1280x768 120Hz reduced blanking
|
||||
## 27 288p 50Hz 4x 1280x800 reduced blanking
|
||||
## 28 288p 50Hz 4x H 1280x800 60Hz
|
||||
## 29 576p 50Hz 2x 1280x800 75Hz
|
||||
## 30 576p 50Hz 2x H 1280x800 85Hz
|
||||
## 31 1080p 50Hz 1280x800 120Hz reduced blanking
|
||||
## 32 1080p 24Hz 1280x960 60Hz
|
||||
## 33 1080p 25Hz 1280x960 85Hz
|
||||
## 34 1080p 30Hz 1280x960 120Hz reduced blanking
|
||||
## 35 480p 60Hz 4x 1280x1024 60Hz
|
||||
## 36 480p 60Hz 4x H 1280x1024 75Hz
|
||||
## 37 576p 50Hz 4x 1280x1024 85Hz
|
||||
## 38 576p 50Hz 4x H 1280x1024 120Hz reduced blanking
|
||||
## 39 1080i 50Hz reduced blanking 1360x768 60Hz
|
||||
## 40 1080i 100Hz 1360x768 120Hz reduced blanking
|
||||
## 41 720p 100Hz 1400x1050 reduced blanking
|
||||
## 42 576p 100Hz 1400x1050 60Hz
|
||||
## 43 576p 100Hz H 1400x1050 75Hz
|
||||
## 44 576i 100Hz 1400x1050 85Hz
|
||||
## 45 576i 100Hz H 1400x1050 120Hz reduced blanking
|
||||
## 46 1080i 120Hz 1440x900 reduced blanking
|
||||
## 47 720p 120Hz 1440x900 60Hz
|
||||
## 48 480p 120Hz 1440x900 75Hz
|
||||
## 49 480p 120Hz H 1440x900 85Hz
|
||||
## 50 480i 120Hz 1440x900 120Hz reduced blanking
|
||||
## 51 480i 120Hz H 1600x1200 60Hz
|
||||
## 52 576p 200Hz 1600x1200 65Hz
|
||||
## 53 576p 200Hz H 1600x1200 70Hz
|
||||
## 54 576i 200Hz 1600x1200 75Hz
|
||||
## 55 576i 200Hz H 1600x1200 85Hz
|
||||
## 56 480p 240Hz 1600x1200 120Hz reduced blanking
|
||||
## 57 480p 240Hz H 1680x1050 reduced blanking
|
||||
## 58 480i 240Hz 1680x1050 60Hz
|
||||
## 59 480i 240Hz H 1680x1050 75Hz
|
||||
## 60 1680x1050 85Hz
|
||||
## 61 1680x1050 120Hz reduced blanking
|
||||
## 62 1792x1344 60Hz
|
||||
## 63 1792x1344 75Hz
|
||||
## 64 1792x1344 120Hz reduced blanking
|
||||
## 65 1856x1392 60Hz
|
||||
## 66 1856x1392 75Hz
|
||||
## 67 1856x1392 120Hz reduced blanking
|
||||
## 68 1920x1200 reduced blanking
|
||||
## 69 1920x1200 60Hz
|
||||
## 70 1920x1200 75Hz
|
||||
## 71 1920x1200 85Hz
|
||||
## 72 1920x1200 120Hz reduced blanking
|
||||
## 73 1920x1440 60Hz
|
||||
## 74 1920x1440 75Hz
|
||||
## 75 1920x1440 120Hz reduced blanking
|
||||
## 76 2560x1600 reduced blanking
|
||||
## 77 2560x1600 60Hz
|
||||
## 78 2560x1600 75Hz
|
||||
## 79 2560x1600 85Hz
|
||||
## 80 2560x1600 120Hz reduced blanking
|
||||
## 81 1366x768 60Hz
|
||||
## 82 1080p 60Hz
|
||||
## 83 1600x900 reduced blanking
|
||||
## 84 2048x1152 reduced blanking
|
||||
## 85 720p 60Hz
|
||||
## 86 1366x768 reduced blanking
|
||||
##
|
||||
#hdmi_mode=1
|
||||
|
||||
## config_hdmi_boost
|
||||
## configure the signal strength of the HDMI interface.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 (Default)
|
||||
## 1
|
||||
## 2
|
||||
## 3
|
||||
## 4 Try if you have interference issues with HDMI
|
||||
## 5
|
||||
## 6
|
||||
## 7 Maximum
|
||||
##
|
||||
#config_hdmi_boost=0
|
||||
|
||||
## hdmi_ignore_cec_init
|
||||
## Doesn't sent initial active source message. Avoids bringing
|
||||
## (CEC enabled) TV out of standby and channel switch when rebooting.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Normal behaviour (Default)
|
||||
## 1 Doesn't sent initial active source message
|
||||
##
|
||||
#hdmi_ignore_cec_init=1
|
||||
|
||||
## hdmi_ignore_cec
|
||||
## Pretends CEC is not supported at all by TV.
|
||||
## No CEC functions will be supported.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Normal behaviour (Default)
|
||||
## 1 Pretend CEC is not supported by TV
|
||||
##
|
||||
#hdmi_ignore_cec=1
|
||||
|
||||
################################################################################
|
||||
## Overscan Video Settings
|
||||
################################################################################
|
||||
|
||||
## overscan_left
|
||||
## Number of pixels to skip on left
|
||||
##
|
||||
#overscan_left=0
|
||||
|
||||
## overscan_right
|
||||
## Number of pixels to skip on right
|
||||
##
|
||||
#overscan_right=0
|
||||
|
||||
## overscan_top
|
||||
## Number of pixels to skip on top
|
||||
##
|
||||
#overscan_top=0
|
||||
|
||||
## overscan_bottom
|
||||
## Number of pixels to skip on bottom
|
||||
##
|
||||
#overscan_bottom=0
|
||||
|
||||
## disable_overscan
|
||||
## Set to 1 to disable overscan
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Overscan Enabled (Default)
|
||||
## 1 Overscan Disabled
|
||||
##
|
||||
#disable_overscan=1
|
||||
|
||||
################################################################################
|
||||
## Framebuffer Video Settings
|
||||
################################################################################
|
||||
|
||||
## framebuffer_width
|
||||
## Console framebuffer width in pixels. Default is display width minus
|
||||
## overscan.
|
||||
##
|
||||
#framebuffer_width=0
|
||||
|
||||
## framebuffer_height
|
||||
## Console framebuffer height in pixels. Default is display height minus
|
||||
## overscan.
|
||||
##
|
||||
#framebuffer_height=0
|
||||
|
||||
## framebuffer_depth
|
||||
## Console framebuffer depth in bits per pixel.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 8 Valid, but default RGB palette makes an unreadable screen
|
||||
## 16 (Default)
|
||||
## 24 Looks better but has corruption issues as of 2012/06/15
|
||||
## 32 Has no corruption issues but needs framebuffer_ignore_alpha=1
|
||||
## and shows the wrong colors as of 2012/06/15
|
||||
##
|
||||
#framebuffer_depth=16
|
||||
|
||||
## framebuffer_ignore_alpha
|
||||
## Set to 1 to disable alpha channel. Helps with 32bit.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Enable Alpha Channel (Default)
|
||||
## 1 Disable Alpha Channel
|
||||
##
|
||||
#framebuffer_ignore_alpha=0
|
||||
|
||||
################################################################################
|
||||
## General Video Settings
|
||||
################################################################################
|
||||
|
||||
## display_rotate
|
||||
## Rotate the display clockwise or flip the display.
|
||||
## The 90 and 270 degrees rotation options require additional memory on GPU,
|
||||
## so won't work with the 16M GPU split.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 0 degrees (Default)
|
||||
## 1 90 degrees
|
||||
## 2 180 degrees
|
||||
## 3 270 degrees
|
||||
## 0x10000 Horizontal flip
|
||||
## 0x20000 Vertical flip
|
||||
##
|
||||
#display_rotate=0
|
||||
|
||||
################################################################################
|
||||
## Licensed Codecs
|
||||
##
|
||||
## Hardware decoding of additional codecs can be enabled by purchasing a
|
||||
## license that is locked to the CPU serial number of your Raspberry Pi.
|
||||
##
|
||||
## Up to 8 licenses per CODEC can be specified as a comma seperated list.
|
||||
##
|
||||
################################################################################
|
||||
|
||||
## decode_MPG2
|
||||
## License key to allow hardware MPEG-2 decoding.
|
||||
##
|
||||
#decode_MPG2=0x12345678
|
||||
|
||||
## decode_WVC1
|
||||
## License key to allow hardware VC-1 decoding.
|
||||
##
|
||||
#decode_WVC1=0x12345678
|
||||
|
||||
################################################################################
|
||||
## Test Settings
|
||||
################################################################################
|
||||
|
||||
## test_mode
|
||||
## Enable test sound/image during boot for manufacturing test.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Disable Test Mod (Default)
|
||||
## 1 Enable Test Mode
|
||||
##
|
||||
#test_mode=0
|
||||
|
||||
################################################################################
|
||||
## Memory Settings
|
||||
################################################################################
|
||||
|
||||
## disable_l2cache
|
||||
## Disable arm access to GPU's L2 cache. Needs corresponding L2 disabled
|
||||
## kernel.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Enable L2 Cache (Default)
|
||||
## 1 Disable L2 cache
|
||||
##
|
||||
#disable_l2cache=0
|
||||
|
||||
## gpu_mem
|
||||
## GPU memory allocation in MB for all board revisions.
|
||||
##
|
||||
## Default 64
|
||||
##
|
||||
#gpu_mem=128
|
||||
|
||||
## gpu_mem_256
|
||||
## GPU memory allocation in MB for 256MB board revision.
|
||||
## This option overrides gpu_mem.
|
||||
##
|
||||
#gpu_mem_256=128
|
||||
|
||||
## gpu_mem_512
|
||||
## GPU memory allocation in MB for 512MB board revision.
|
||||
## This option overrides gpu_mem.
|
||||
##
|
||||
#gpu_mem_512=128
|
||||
|
||||
## gpu_mem_1024
|
||||
## GPU memory allocation in MB for 1024MB board revision.
|
||||
## This option overrides gpu_mem.
|
||||
##
|
||||
#gpu_mem_1024=128
|
||||
|
||||
################################################################################
|
||||
## Boot Option Settings
|
||||
################################################################################
|
||||
|
||||
## disable_commandline_tags
|
||||
## Stop start.elf from filling in ATAGS (memory from 0x100) before
|
||||
## launching kernel
|
||||
##
|
||||
#disable_commandline_tags=2
|
||||
|
||||
## enable_uart
|
||||
## Enables or disables uart pin multiplexing
|
||||
## Raspberry Pi 1/2: if unset, uart is enabled by default
|
||||
## Raspberry Pi 3: if unset uart is disabled by default
|
||||
##
|
||||
enable_uart=1
|
||||
|
||||
## cmdline (string)
|
||||
## Command line parameters. Can be used instead of cmdline.txt file
|
||||
##
|
||||
#cmdline=""
|
||||
|
||||
## kernel (string)
|
||||
## Alternative name to use when loading kernel.
|
||||
##
|
||||
#kernel=""
|
||||
|
||||
## kernel_address
|
||||
## Address to load kernel.img file at
|
||||
##
|
||||
#kernel_address=0x8000
|
||||
|
||||
## ramfsfile (string)
|
||||
## ramfs file to load
|
||||
##
|
||||
#ramfsfile=""
|
||||
|
||||
## ramfsaddr
|
||||
## Address to load ramfs file at
|
||||
##
|
||||
#ramfsaddr=0x00000000
|
||||
|
||||
## initramfs (string address)
|
||||
## ramfs file and address to load it at (it's like ramfsfile+ramfsaddr in
|
||||
## one option).
|
||||
##
|
||||
## NOTE: this option uses different syntax than all other options - you
|
||||
## should not use "=" character here.
|
||||
##
|
||||
#initramfs initramf.gz 0x00800000
|
||||
|
||||
## device_tree_address
|
||||
## Address to load device_tree at
|
||||
##
|
||||
#device_tree_address=0x100
|
||||
|
||||
## init_uart_baud
|
||||
## Initial uart baud rate.
|
||||
##
|
||||
## Default 115200
|
||||
##
|
||||
#init_uart_baud=115200
|
||||
|
||||
## init_uart_clock
|
||||
## Initial uart clock.
|
||||
##
|
||||
## Default 3000000 (3MHz)
|
||||
##
|
||||
#init_uart_clock=3000000
|
||||
|
||||
## init_emmc_clock
|
||||
## Initial emmc clock, increasing this can speedup your SD-card.
|
||||
##
|
||||
## Default 100000000 (100mhz)
|
||||
##
|
||||
#init_emmc_clock=100000000
|
||||
|
||||
## boot_delay
|
||||
## Wait for a given number of seconds in start.elf before loading
|
||||
## kernel.img.
|
||||
##
|
||||
## delay = (1000 * boot_delay) + boot_delay_ms
|
||||
##
|
||||
## Default 1
|
||||
##
|
||||
#boot_delay=0
|
||||
|
||||
## boot_delay_ms
|
||||
## Wait for a given number of milliseconds in start.elf before loading
|
||||
## kernel.img.
|
||||
##
|
||||
## delay = (1000 * boot_delay) + boot_delay_ms
|
||||
##
|
||||
## Default 0
|
||||
##
|
||||
#boot_delay_ms=0
|
||||
|
||||
## avoid_safe_mode
|
||||
## Adding a jumper between pins 5 & 6 of P1 enables a recovery Safe Mode.
|
||||
## If pins 5 & 6 are used for connecting to external devices (e.g. GPIO),
|
||||
## then this setting can be used to ensure Safe Mode is not triggered.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Respect Safe Mode input (Default)
|
||||
## 1 Ignore Safe Mode input
|
||||
##
|
||||
#avoid_safe_mode=1
|
||||
|
||||
################################################################################
|
||||
## Overclocking Settings
|
||||
##
|
||||
## ARM, SDRAM and GPU each have their own PLLs and can have unrelated
|
||||
## frequencies.
|
||||
##
|
||||
## The GPU core, h264, v3d and isp share a PLL, so need to have related
|
||||
## frequencies.
|
||||
## pll_freq = floor(2400 / (2 * core_freq)) * (2 * core_freq)
|
||||
## gpu_freq = pll_freq / [even number]
|
||||
##
|
||||
## The effective gpu_freq is automatically rounded to nearest even integer, so
|
||||
## asking for core_freq = 500 and gpu_freq = 300 will result in divisor of
|
||||
## 2000/300 = 6.666 => 6 and so 333.33MHz.
|
||||
##
|
||||
##
|
||||
## Standard Profiles:
|
||||
## arm_freq core_freq sdram_freq over_voltage
|
||||
## -------------------------------------------------------------------------
|
||||
## None 700 250 400 0
|
||||
## Modest 800 300 400 0
|
||||
## Medium 900 333 450 2
|
||||
## High 950 450 450 6
|
||||
## Turbo 1000 500 500 6
|
||||
##
|
||||
################################################################################
|
||||
|
||||
## force_turbo
|
||||
## Control the kernel "ondemand" governor. It has no effect if no overclock
|
||||
## settings are specified.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Enable dynamic clocks and voltage for the ARM core, GPU core and
|
||||
## SDRAM (Default).
|
||||
## Overclocking of h264_freq, v3d_freq and isp_freq is ignored.
|
||||
## 1 Disable dynamic clocks and voltage for the ARM core, GPU core
|
||||
## and SDRAM.
|
||||
## Overclocking of h264_freq, v3d_freq and isp_freq is allowed.
|
||||
##
|
||||
#force_turbo=0
|
||||
|
||||
## initial_turbo
|
||||
## Enables turbo mode from boot for the given value in seconds (up to 60)
|
||||
## or until cpufreq sets a frequency. Can help with sdcard corruption if
|
||||
## overclocked.
|
||||
##
|
||||
## Default 0
|
||||
##
|
||||
#initial_turbo=0
|
||||
|
||||
## temp_limit
|
||||
## Overheat protection. Sets clocks and voltages to default when the SoC
|
||||
## reaches this Celsius value.
|
||||
## Setting this higher than default voids warranty.
|
||||
##
|
||||
## Default 85
|
||||
##
|
||||
#temp_limit=85
|
||||
|
||||
## arm_freq
|
||||
## Frequency of ARM in MHz.
|
||||
##
|
||||
## Default 700.
|
||||
##
|
||||
#arm_freq=700
|
||||
|
||||
## arm_freq_min
|
||||
## Minimum frequency of ARM in MHz (used for dynamic clocking).
|
||||
##
|
||||
## Default 700.
|
||||
##
|
||||
#arm_freq_min=700
|
||||
|
||||
## gpu_freq
|
||||
## Sets core_freq, h264_freq, isp_freq, v3d_freq together.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#gpu_freq=250
|
||||
|
||||
## core_freq
|
||||
## Frequency of GPU processor core in MHz. It has an impact on ARM
|
||||
## performance since it drives L2 cache.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#core_freq=250
|
||||
|
||||
## core_freq_min
|
||||
## Minimum frequency of GPU processor core in MHz (used for dynamic
|
||||
## clocking). It has an impact on ARM performance since it drives L2 cache.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#core_freq_min=250
|
||||
|
||||
## h264_freq
|
||||
## Frequency of hardware video block in MHz.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#h264_freq=250
|
||||
|
||||
## isp_freq
|
||||
## Frequency of image sensor pipeline block in MHz.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#isp_freq=250
|
||||
|
||||
## v3d_freq
|
||||
## Frequency of 3D block in MHz.
|
||||
##
|
||||
## Default 250.
|
||||
##
|
||||
#v3d_freq=250
|
||||
|
||||
## sdram_freq
|
||||
## Frequency of SDRAM in MHz.
|
||||
##
|
||||
## Default 400.
|
||||
##
|
||||
#sdram_freq=400
|
||||
|
||||
## sdram_freq_min
|
||||
## Minimum frequency of SDRAM in MHz (used for dynamic clocking).
|
||||
##
|
||||
## Default 400.
|
||||
##
|
||||
#sdram_freq_min=400
|
||||
|
||||
## avoid_pwm_pll
|
||||
## Unlink core_freq from the rest of the gpu. Analog audio should still
|
||||
## work, but from a fractional divider, so lower quality.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## 0 Linked core_freq (Default)
|
||||
## 1 Unlinked core_freq
|
||||
##
|
||||
#avoid_pwm_pll=1
|
||||
|
||||
################################################################################
|
||||
## Voltage Settings
|
||||
################################################################################
|
||||
|
||||
## current_limit_override
|
||||
## Disables SMPS current limit protection. Can help if you are currently
|
||||
## hitting a reboot failure when overclocking too high.
|
||||
##
|
||||
#current_limit_override=0x5A000020
|
||||
|
||||
## over_voltage
|
||||
## ARM/GPU core voltage adjust.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V (requires force_turbo=1)
|
||||
## 8 1.4 V (requires force_turbo=1)
|
||||
##
|
||||
#over_voltage=0
|
||||
|
||||
## over_voltage_min
|
||||
## Minimum ARM/GPU core voltage adjust (used for dynamic clocking).
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V (requires force_turbo=1)
|
||||
## 8 1.4 V (requires force_turbo=1)
|
||||
##
|
||||
#over_voltage_min=0
|
||||
|
||||
## over_voltage_sdram
|
||||
## Sets over_voltage_sdram_c, over_voltage_sdram_i, over_voltage_sdram_p
|
||||
## together
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V
|
||||
## 8 1.4 V
|
||||
##
|
||||
#over_voltage_sdram=0
|
||||
|
||||
## over_voltage_sdram_c
|
||||
## SDRAM controller voltage adjust.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V
|
||||
## 8 1.4 V
|
||||
##
|
||||
#over_voltage_sdram_c=0
|
||||
|
||||
## over_voltage_sdram_i
|
||||
## SDRAM I/O voltage adjust.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V
|
||||
## 8 1.4 V
|
||||
##
|
||||
#over_voltage_sdram_i=0
|
||||
|
||||
## over_voltage_sdram_p
|
||||
## SDRAM phy voltage adjust.
|
||||
##
|
||||
## Value Description
|
||||
## -------------------------------------------------------------------------
|
||||
## -16 0.8 V
|
||||
## -15 0.825 V
|
||||
## -14 0.85 V
|
||||
## -13 0.875 V
|
||||
## -12 0.9 V
|
||||
## -11 0.925 V
|
||||
## -10 0.95 V
|
||||
## -9 0.975 V
|
||||
## -8 1.0 V
|
||||
## -7 1.025 V
|
||||
## -6 1.05 V
|
||||
## -5 1.075 V
|
||||
## -4 1.1 V
|
||||
## -3 1.125 V
|
||||
## -2 1.15 V
|
||||
## -1 1.175 V
|
||||
## 0 1.2 V (Default)
|
||||
## 1 1.225 V
|
||||
## 2 1.25 V
|
||||
## 3 1.275 V
|
||||
## 4 1.3 V
|
||||
## 5 1.325 V
|
||||
## 6 1.35 V
|
||||
## 7 1.375 V
|
||||
## 8 1.4 V
|
||||
##
|
||||
#over_voltage_sdram_p=0
|
||||
|
||||
################################################################################
|
||||
## Device Tree Settings
|
||||
################################################################################
|
||||
|
||||
dtparam=random=on
|
||||
dtparam=watchdog=on
|
||||
dtparam=audio=on
|
||||
dtparam=i2c0=on
|
||||
dtparam=i2c1=on
|
||||
dtparam=spi=on
|
||||
|
||||
#dtoverlay=adau1977-adc
|
||||
#dtoverlay=allo-piano-dac-pcm512x-audio
|
||||
#dtoverlay=audioinjector-wm8731-audio
|
||||
#dtoverlay=dionaudio-loco
|
||||
#dtoverlay=hifiberry-amp
|
||||
#dtoverlay=hifiberry-dac
|
||||
#dtoverlay=hifiberry-dacplus
|
||||
#dtoverlay=hifiberry-digi
|
||||
#dtoverlay=hifiberry-digi-pro
|
||||
#dtoverlay=iqaudio-dac
|
||||
#dtoverlay=iqaudio-dacplus
|
||||
#dtoverlay=iqaudio-digi-wm8804-audio
|
||||
#dtoverlay=justboom-dac
|
||||
#dtoverlay=justboom-digi
|
||||
#dtoverlay=pisound
|
||||
#dtoverlay=raspidac3
|
||||
#dtoverlay=rpi-dac
|
||||
#dtoverlay=rpi-proto
|
||||
#dtoverlay=rra-digidac1-wm8741-audio
|
||||
|
@ -1,868 +1,8 @@
|
||||
#
|
||||
# Copyright (C) 2012-2016 OpenWrt.org
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/drm-vc4
|
||||
SUBMENU:=$(VIDEO_MENU)
|
||||
TITLE:=Broadcom VC4 Graphics
|
||||
DEPENDS:= \
|
||||
@TARGET_brcm2708 +kmod-drm \
|
||||
+kmod-sound-core \
|
||||
+kmod-sound-soc-core
|
||||
KCONFIG:= \
|
||||
CONFIG_DRM_VC4 \
|
||||
CONFIG_DRM_VC4_HDMI_CEC=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/vc4/vc4.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/drm_kms_helper.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vc4)
|
||||
endef
|
||||
|
||||
define KernelPackage/drm-vc4/description
|
||||
Direct Rendering Manager (DRM) support for Broadcom VideoCore IV GPU
|
||||
used in BCM2835, BCM2836 and BCM2837 SoCs (e.g. Raspberry Pi).
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,drm-vc4))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-rpi-poe-fan
|
||||
SUBMENU:=$(HWMON_MENU)
|
||||
TITLE:=Raspberry Pi PoE HAT fan
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-hwmon-core
|
||||
KCONFIG:=CONFIG_SENSORS_RPI_POE_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/rpi-poe-fan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rpi-poe-fan)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-rpi-poe-fan/description
|
||||
Raspberry Pi PoE HAT fan driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-rpi-poe-fan))
|
||||
|
||||
|
||||
define KernelPackage/sound-arm-bcm2835
|
||||
TITLE:=BCM2835 ALSA driver
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_ARM=y \
|
||||
CONFIG_SND_BCM2835 \
|
||||
CONFIG_SND_ARMAACI=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-audio/snd-bcm2835.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-bcm2835)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-arm-bcm2835/description
|
||||
This package contains the BCM2835 ALSA pcm card driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-arm-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-bcm2835-i2s
|
||||
TITLE:=SoC Audio support for the Broadcom 2835 I2S module
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2835_SOC_I2S \
|
||||
CONFIG_SND_SOC_DMAENGINE_PCM=y \
|
||||
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-bcm2835-i2s.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-bcm2835-i2s)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-sound-soc-core
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-bcm2835-i2s/description
|
||||
This package contains support for codecs attached to the Broadcom 2835 I2S interface
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-bcm2835-i2s))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-3dlab-nano-player
|
||||
TITLE:=Support for 3Dlab Nano Player
|
||||
KCONFIG:= CONFIG_SND_BCM2708_SOC_3DLAB_NANO_PLAYER
|
||||
FILES:=$(LINUX_DIR)/sound/soc/bcm/snd-soc-3dlab-nano-player.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-3dlab-nano-player)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-3dlab-nano-player/description
|
||||
This package contains support for 3Dlab Nano Player
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-3dlab-nano-player))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-adau1977-adc
|
||||
TITLE:=Support for ADAU1977 ADC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ADAU1977_ADC \
|
||||
CONFIG_SND_SOC_ADAU1977 \
|
||||
CONFIG_SND_SOC_ADAU1977_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-adau1977-adc.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-adau1977 snd-soc-adau1977-i2c \
|
||||
snd-soc-adau1977-adc)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-adau1977-adc/description
|
||||
This package contains support for ADAU1977 ADC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-adau1977-adc))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-boss-dac
|
||||
TITLE:=Support for Allo Boss DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-boss-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-boss-dac)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-boss-dac/description
|
||||
This package contains support for Allo Boss DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-boss-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-digione
|
||||
TITLE:=Support for Allo Piano DigiOne
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-digione.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-digione)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-digione/description
|
||||
This package contains support for Allo DigiOne
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-digione))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac
|
||||
TITLE:=Support for Allo Piano DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-piano-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-piano-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac/description
|
||||
This package contains support for Allo Piano DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-piano-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac-plus
|
||||
TITLE:=Support for Allo Piano DAC Plus
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-piano-dac-plus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-piano-dac-plus)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac-plus/description
|
||||
This package contains support for Allo Piano DAC Plus
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-piano-dac-plus))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-katana-codec
|
||||
TITLE:=Support for Allo Katana DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIO_GRAPH_CARD \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_KATANA_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C \
|
||||
CONFIG_SND_SIMPLE_CARD_UTILS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-katana-codec.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-katana-codec)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-katana-codec/description
|
||||
This package contains support for Allo Katana DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-katana-codec))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-octo-soundcard
|
||||
TITLE:=Support for AudioInjector Octo soundcard
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIOINJECTOR_OCTO_SOUNDCARD \
|
||||
CONFIG_SND_SOC_CS42XX8 \
|
||||
CONFIG_SND_SOC_CS42XX8_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-audioinjector-octo-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-cs42xx8.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-cs42xx8-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc- \
|
||||
snd-soc-audioinjector-octo-soundcard)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-octo-soundcard/description
|
||||
This package contains support for AudioInjector Octo soundcard
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-audioinjector-octo-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-pi-soundcard
|
||||
TITLE:=Support for AudioInjector Pi soundcard
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD \
|
||||
CONFIG_SND_SOC_WM8731
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-audioinjector-pi-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8731.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8731 \
|
||||
snd-soc-audioinjector-pi-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-pi-soundcard/description
|
||||
This package contains support for AudioInjector Pi soundcard
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-audioinjector-pi-soundcard))
|
||||
|
||||
define KernelPackage/sound-soc-digidac1-soundcard
|
||||
TITLE:=Support for RRA DigiDAC1
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_DIGIDAC1_SOUNDCARD \
|
||||
CONFIG_SND_SOC_WM8741 \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM8804_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-digidac1-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8741.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8741 \
|
||||
snd-soc-wm8804 snd-soc-wm8804-i2c \
|
||||
snd-soc-digidac1-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-digidac1-soundcard/description
|
||||
This package contains support for RRA DigiDAC1
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-digidac1-soundcard))
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco
|
||||
TITLE:=Support for Dion Audio LOCO DAC-AMP
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-dionaudio-loco.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a \
|
||||
snd-soc-dionaudio-loco)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco/description
|
||||
This package contains support for Dion Audio LOCO DAC-AMP
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-dionaudio-loco))
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco-v2
|
||||
TITLE:=Support for Dion Audio LOCO-V2 DAC-AMP
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO_V2 \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-dionaudio-loco.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-pcm512x-i2c \
|
||||
snd-soc-dionaudio-loco)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco-v2/description
|
||||
This package contains support for Dion Audio LOCO-V2 DAC-AMP
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-dionaudio-loco-v2))
|
||||
|
||||
define KernelPackage/sound-soc-fe-pi
|
||||
TITLE:=Support for Fe-Pi Audio Sound Card
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO \
|
||||
CONFIG_SND_SOC_SGTL5000
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-fe-pi-audio.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-sgtl5000.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-sgtl5000 \
|
||||
snd-soc-fe-pi-audio)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-fe-pi/description
|
||||
This package contains support for Fe-Pi Audio Sound Card
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-fe-pi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-googlevoicehat
|
||||
TITLE:=Support for Google VoiceHAT Sound Card
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD \
|
||||
CONFIG_SND_SOC_VOICEHAT
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-googlevoicehat-codec.ko \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-googlevoicehat-soundcard.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-googlevoicehat-codec \
|
||||
snd-soc-googlevoicehat-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-googlevoicehat/description
|
||||
This package contains support for Google VoiceHAT Sound Card
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-googlevoicehat))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dac
|
||||
TITLE:=Support for HifiBerry DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a snd-soc-hifiberry-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dac/description
|
||||
This package contains support for HifiBerry DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-dac))
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplus
|
||||
TITLE:=Support for HifiBerry DAC+ / DAC+ Pro
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS \
|
||||
CONFIG_SND_SOC_PCM512x
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/clk/clk-hifiberry-dacpro.ko \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-dacplus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,clk-hifiberry-dacpro snd-soc-pcm512x \
|
||||
snd-soc-hifiberry-dacplus)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplus/description
|
||||
This package contains support for HifiBerry DAC+ / DAC+ Pro
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-dacplus))
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-digi
|
||||
TITLE:=Support for HifiBerry Digi / Digi+ / Digi+ Pro
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI \
|
||||
CONFIG_SND_SOC_WM8804
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-digi.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804 snd-soc-hifiberry-digi)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-digi/description
|
||||
This package contains support for HifiBerry Digi
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-digi))
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-amp
|
||||
TITLE:=Support for HifiBerry Amp
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP \
|
||||
CONFIG_SND_SOC_TAS5713
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-amp.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-tas5713.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-tas5713 snd-soc-hifiberry-amp)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-amp/description
|
||||
This package contains support for HifiBerry Amp
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-amp))
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-dac
|
||||
TITLE:=Support for IQaudIO-DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-iqaudio-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-pcm512x-i2c \
|
||||
snd-soc-iqaudio-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-dac/description
|
||||
This package contains support for IQaudIO-DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-iqaudio-dac))
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-digi
|
||||
TITLE:=Support for IQaudIO-DIGI
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM8804_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-iqaudio-digi.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804 snd-soc-wm8804-i2c \
|
||||
snd-soc-iqaudio-digi)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-digi/description
|
||||
This package contains support for IQaudIO-DIGI
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-iqaudio-digi))
|
||||
|
||||
define KernelPackage/sound-soc-justboom-dac
|
||||
TITLE:=Support for JustBoom DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC \
|
||||
CONFIG_SND_SOC_PCM512x
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-justboom-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-justboom-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-justboom-dac/description
|
||||
This package contains support for JustBoom DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-justboom-dac))
|
||||
|
||||
define KernelPackage/sound-soc-justboom-digi
|
||||
TITLE:=Support for JustBoom Digi
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI \
|
||||
CONFIG_SND_SOC_WM8804
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-justboom-digi.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804 snd-soc-justboom-digi)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-justboom-digi/description
|
||||
This package contains support for JustBoom Digi
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-justboom-digi))
|
||||
|
||||
define KernelPackage/sound-soc-pisound
|
||||
TITLE:=Support for Blokas Labs PiSound
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_PISOUND \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-pisound.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a snd-soc-pisound)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-pisound/description
|
||||
This package contains support for Blokas Labs PiSound
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-pisound))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-cirrus
|
||||
TITLE:=Support for Cirrus Logic Audio Card
|
||||
KCONFIG:= \
|
||||
CONFIG_GPIO_ARIZONA \
|
||||
CONFIG_INPUT_ARIZONA_HAPTICS=n \
|
||||
CONFIG_MFD_ARIZONA=y \
|
||||
CONFIG_MFD_ARIZONA_I2C \
|
||||
CONFIG_MFD_CS47L24=n \
|
||||
CONFIG_MFD_WM5102=n \
|
||||
CONFIG_MFD_WM5110=n \
|
||||
CONFIG_MFD_WM8997=n \
|
||||
CONFIG_MFD_WM8998=n \
|
||||
CONFIG_REGULATOR_ARIZONA \
|
||||
CONFIG_REGULATOR_ARIZONA_LDO1 \
|
||||
CONFIG_REGULATOR_ARIZONA_MICSUPP \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_CIRRUS \
|
||||
CONFIG_SND_SOC_ARIZONA \
|
||||
CONFIG_SND_SOC_WM5102 \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM_ADSP
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-cirrus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-arizona.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm-adsp.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm5102.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm1794a snd-soc-rpi-cirrus)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2708 \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-cirrus/description
|
||||
This package contains support for RPi-Cirrus
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-cirrus))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-dac
|
||||
TITLE:=Support for RPi-DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_DAC \
|
||||
CONFIG_SND_SOC_PCM1794A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm1794a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm1794a snd-soc-rpi-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-dac/description
|
||||
This package contains support for RPi-DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-dac))
|
||||
|
||||
define KernelPackage/sound-soc-rpi-proto
|
||||
TITLE:=Support for RPi-PROTO
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_PROTO \
|
||||
CONFIG_SND_SOC_WM8731
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-proto.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8731.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8731 snd-soc-rpi-proto)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2708 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-proto/description
|
||||
This package contains support for RPi-PROTO
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-proto))
|
||||
|
||||
|
||||
define KernelPackage/random-bcm2835
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 HW Random Number Generator
|
||||
KCONFIG:=CONFIG_HW_RANDOM_BCM2835
|
||||
FILES:=$(LINUX_DIR)/drivers/char/hw_random/bcm2835-rng.ko
|
||||
AUTOLOAD:=$(call AutoLoad,11,bcm2835-rng)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-random-core
|
||||
endef
|
||||
|
||||
define KernelPackage/random-bcm2835/description
|
||||
This package contains the Broadcom 2835 HW random number generator driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,random-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/smi-bcm2835
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 SMI driver
|
||||
KCONFIG:=CONFIG_BCM2835_SMI
|
||||
FILES:=$(LINUX_DIR)/drivers/misc/bcm2835_smi.ko
|
||||
AUTOLOAD:=$(call AutoLoad,20,bcm2835_smi)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/smi-bcm2835/description
|
||||
This package contains the Character device driver for Broadcom Secondary
|
||||
Memory Interface
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,smi-bcm2835))
|
||||
|
||||
define KernelPackage/smi-bcm2835-dev
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 SMI device driver
|
||||
KCONFIG:=CONFIG_BCM2835_SMI_DEV
|
||||
FILES:=$(LINUX_DIR)/drivers/char/broadcom/bcm2835_smi_dev.ko
|
||||
AUTOLOAD:=$(call AutoLoad,21,bcm2835_smi_dev)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-smi-bcm2835
|
||||
endef
|
||||
|
||||
define KernelPackage/smi-bcm2835-dev/description
|
||||
This driver provides a character device interface (ioctl + read/write) to
|
||||
Broadcom's Secondary Memory interface. The low-level functionality is provided
|
||||
by the SMI driver itself.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,smi-bcm2835-dev))
|
||||
|
||||
|
||||
define KernelPackage/spi-bcm2835
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=BCM2835 SPI controller driver
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI=y \
|
||||
CONFIG_SPI_BCM2835 \
|
||||
CONFIG_SPI_MASTER=y
|
||||
FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835.ko
|
||||
AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-bcm2835/description
|
||||
This package contains the Broadcom 2835 SPI master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-bcm2835))
|
||||
|
||||
define KernelPackage/spi-bcm2835-aux
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=BCM2835 Aux SPI controller driver
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI=y \
|
||||
CONFIG_SPI_BCM2835AUX \
|
||||
CONFIG_SPI_MASTER=y
|
||||
FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835aux.ko
|
||||
AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835aux)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-bcm2835-aux/description
|
||||
This package contains the Broadcom 2835 Aux SPI master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-bcm2835-aux))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-bcm2835
|
||||
TITLE:=BCM2835 HWMON driver
|
||||
KCONFIG:=CONFIG_SENSORS_BCM2835
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/bcm2835-hwmon.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,bcm2835-hwmon)
|
||||
$(call AddDepends/hwmon,@TARGET_brcm2708)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-bcm2835/description
|
||||
Kernel module for BCM2835 thermal monitor chip
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-bcm2835))
|
||||
|
||||
|
||||
I2C_BCM2708_MODULES:=\
|
||||
CONFIG_I2C_BCM2708:drivers/i2c/busses/i2c-bcm2708
|
||||
|
||||
define KernelPackage/i2c-bcm2708
|
||||
$(call i2c_defaults,$(I2C_BCM2708_MODULES),59)
|
||||
TITLE:=Broadcom BCM2708 I2C master controller driver
|
||||
KCONFIG+= \
|
||||
CONFIG_I2C_BCM2708_BAUDRATE=100000
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-bcm2708/description
|
||||
This package contains the Broadcom 2708 I2C master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-bcm2708))
|
||||
|
||||
I2C_BCM2835_MODULES:=\
|
||||
CONFIG_I2C_BCM2835:drivers/i2c/busses/i2c-bcm2835
|
||||
|
||||
define KernelPackage/i2c-bcm2835
|
||||
$(call i2c_defaults,$(I2C_BCM2835_MODULES),59)
|
||||
TITLE:=Broadcom BCM2835 I2C master controller driver
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-bcm2835/description
|
||||
This package contains the Broadcom 2835 I2C master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/video-bcm2835
|
||||
TITLE:=Broadcom BCM2835 camera interface driver
|
||||
KCONFIG:= \
|
||||
CONFIG_VIDEO_BCM2835 \
|
||||
CONFIG_VIDEO_BCM2835_MMAL
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko
|
||||
AUTOLOAD:=$(call AutoLoad,65,bcm2835-v4l2)
|
||||
$(call AddDepends/video,@TARGET_brcm2708 +kmod-video-videobuf2)
|
||||
endef
|
||||
|
||||
define KernelPackage/video-bcm2835/description
|
||||
This is a V4L2 driver for the Broadcom 2835 MMAL camera host interface
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,video-bcm2835))
|
||||
include $(TOPDIR)/target/linux/brcm2708/modules/*.mk
|
||||
|
36
target/linux/brcm2708/modules/hwmon.mk
Normal file
36
target/linux/brcm2708/modules/hwmon.mk
Normal file
@ -0,0 +1,36 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/hwmon-raspberrypi
|
||||
TITLE:=Raspberry Pi voltage monitor
|
||||
KCONFIG:=CONFIG_SENSORS_RASPBERRYPI_HWMON
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/raspberrypi-hwmon.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,raspberrypi-hwmon)
|
||||
$(call AddDepends/hwmon,@TARGET_brcm2708)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-raspberrypi/description
|
||||
Kernel module for voltage sensor on the Raspberry Pi
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-raspberrypi))
|
||||
|
||||
|
||||
define KernelPackage/hwmon-rpi-poe-fan
|
||||
SUBMENU:=$(HWMON_MENU)
|
||||
TITLE:=Raspberry Pi PoE HAT fan
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-hwmon-core
|
||||
KCONFIG:=CONFIG_SENSORS_RPI_POE_FAN
|
||||
FILES:=$(LINUX_DIR)/drivers/hwmon/rpi-poe-fan.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rpi-poe-fan)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-rpi-poe-fan/description
|
||||
Raspberry Pi PoE HAT fan driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hwmon-rpi-poe-fan))
|
21
target/linux/brcm2708/modules/i2c.mk
Normal file
21
target/linux/brcm2708/modules/i2c.mk
Normal file
@ -0,0 +1,21 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
I2C_BCM2835_MODULES:=\
|
||||
CONFIG_I2C_BCM2835:drivers/i2c/busses/i2c-bcm2835
|
||||
|
||||
define KernelPackage/i2c-bcm2835
|
||||
$(call i2c_defaults,$(I2C_BCM2835_MODULES),59)
|
||||
TITLE:=Broadcom BCM2835 I2C master controller driver
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-i2c-core
|
||||
endef
|
||||
|
||||
define KernelPackage/i2c-bcm2835/description
|
||||
This package contains the Broadcom 2835 I2C master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,i2c-bcm2835))
|
75
target/linux/brcm2708/modules/other.mk
Normal file
75
target/linux/brcm2708/modules/other.mk
Normal file
@ -0,0 +1,75 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/pwm-bcm2835
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 PWM driver
|
||||
KCONFIG:= \
|
||||
CONFIG_PWM=y \
|
||||
CONFIG_PWM_BCM2835
|
||||
FILES:=$(LINUX_DIR)/drivers/pwm/pwm-bcm2835.ko
|
||||
AUTOLOAD:=$(call AutoLoad,60,pwm-bcm2835)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/pwm-bcm2835/description
|
||||
This package contains the PWM framework driver for BCM2835 controller (Raspberry Pi)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,pwm-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/random-bcm2835
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 HW Random Number Generator
|
||||
KCONFIG:= \
|
||||
CONFIG_HW_RANDOM_BCM2835
|
||||
FILES:=$(LINUX_DIR)/drivers/char/hw_random/bcm2835-rng.ko
|
||||
AUTOLOAD:=$(call AutoLoad,11,bcm2835-rng)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-random-core
|
||||
endef
|
||||
|
||||
define KernelPackage/random-bcm2835/description
|
||||
This package contains the Broadcom 2835 HW random number generator driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,random-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/smi-bcm2835
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 SMI driver
|
||||
KCONFIG:=CONFIG_BCM2835_SMI
|
||||
FILES:=$(LINUX_DIR)/drivers/misc/bcm2835_smi.ko
|
||||
AUTOLOAD:=$(call AutoLoad,20,bcm2835_smi)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/smi-bcm2835/description
|
||||
This package contains the Character device driver for Broadcom Secondary
|
||||
Memory Interface
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,smi-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/smi-bcm2835-dev
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=BCM2835 SMI device driver
|
||||
KCONFIG:=CONFIG_BCM2835_SMI_DEV
|
||||
FILES:=$(LINUX_DIR)/drivers/char/broadcom/bcm2835_smi_dev.ko
|
||||
AUTOLOAD:=$(call AutoLoad,21,bcm2835_smi_dev)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-smi-bcm2835
|
||||
endef
|
||||
|
||||
define KernelPackage/smi-bcm2835-dev/description
|
||||
This driver provides a character device interface (ioctl + read/write) to
|
||||
Broadcom's Secondary Memory interface. The low-level functionality is provided
|
||||
by the SMI driver itself.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,smi-bcm2835-dev))
|
805
target/linux/brcm2708/modules/sound.mk
Normal file
805
target/linux/brcm2708/modules/sound.mk
Normal file
@ -0,0 +1,805 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/sound-arm-bcm2835
|
||||
TITLE:=BCM2835 ALSA driver
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_ARM=y \
|
||||
CONFIG_SND_BCM2835 \
|
||||
CONFIG_SND_ARMAACI=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-audio/snd-bcm2835.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-bcm2835)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-arm-bcm2835/description
|
||||
This package contains the BCM2835 ALSA pcm card driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-arm-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-bcm2835-i2s
|
||||
TITLE:=SoC Audio support for the Broadcom 2835 I2S module
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2835_SOC_I2S \
|
||||
CONFIG_SND_SOC_AD193X_SPI=n \
|
||||
CONFIG_SND_SOC_AD193X_I2C=n \
|
||||
CONFIG_SND_SOC_DMAENGINE_PCM=y \
|
||||
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-bcm2835-i2s.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-bcm2835-i2s)
|
||||
DEPENDS:=@TARGET_brcm2708 +kmod-sound-soc-core
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-bcm2835-i2s/description
|
||||
This package contains support for codecs attached to the Broadcom 2835 I2S interface
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-bcm2835-i2s))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-simple-soundcard
|
||||
TITLE:=Support for Raspberry Pi simple soundcards
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_RPI_SIMPLE_SOUNDCARD
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-simple-soundcard.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-rpi-simple-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-simple-soundcard/description
|
||||
This package contains support for Raspbery Pi simple soundcards
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-simple-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-wm8804-soundcard
|
||||
TITLE:=Support for Raspberry Pi generic WM8804 soundcards
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_RPI_WM8804_SOUNDCARD
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-wm8804-soundcard.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-rpi-wm8804-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-wm8804-soundcard/description
|
||||
This package contains support for Raspbery Pi simple soundcards
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-wm8804-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-adau1977-adc
|
||||
TITLE:=Support for ADAU1977 ADC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ADAU1977_ADC \
|
||||
CONFIG_SND_SOC_ADAU1977 \
|
||||
CONFIG_SND_SOC_ADAU1977_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-adau1977 snd-soc-adau1977-i2c)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-simple-soundcard \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-adau1977-adc/description
|
||||
This package contains support for ADAU1977 ADC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-adau1977-adc))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-boss-dac
|
||||
TITLE:=Support for Allo Boss DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-boss-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-boss-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-boss-dac/description
|
||||
This package contains support for Allo Boss DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-boss-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-digione
|
||||
TITLE:=Support for Allo Piano DigiOne
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM8804_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804-i2c snd-soc-wm8804 \
|
||||
snd-soc-allo-digione)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-wm8804-soundcard \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-digione/description
|
||||
This package contains support for Allo DigiOne
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-digione))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac
|
||||
TITLE:=Support for Allo Piano DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-piano-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-piano-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac/description
|
||||
This package contains support for Allo Piano DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-piano-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac-plus
|
||||
TITLE:=Support for Allo Piano DAC Plus
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-piano-dac-plus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-piano-dac-plus)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-piano-dac-plus/description
|
||||
This package contains support for Allo Piano DAC Plus
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-piano-dac-plus))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-audiosense-pi
|
||||
TITLE:=Support for AudioSense Add-On Soundcard
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIOSENSE_PI \
|
||||
CONFIG_SND_SOC_TLV320AIC32X4 \
|
||||
CONFIG_SND_SOC_TLV320AIC32X4_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-audiosense-pi.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-tlv320aic32x4.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-tlv320aic32x4-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-tlv320aic32x4-i2c snd-soc-tlv320aic32x4 \
|
||||
snd-soc-audiosense-pi)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-audiosense-pi/description
|
||||
This package contains support for AudioSense Add-On Soundcard
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-audiosense-pi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-allo-katana-codec
|
||||
TITLE:=Support for Allo Katana DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIO_GRAPH_CARD \
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_KATANA_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C \
|
||||
CONFIG_SND_SIMPLE_CARD_UTILS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-katana-codec.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \
|
||||
snd-soc-allo-katana-codec)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-allo-katana-codec/description
|
||||
This package contains support for Allo Katana DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-allo-katana-codec))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-octo-soundcard
|
||||
TITLE:=Support for AudioInjector Octo soundcard
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIOINJECTOR_OCTO_SOUNDCARD \
|
||||
CONFIG_SND_SOC_CS42XX8 \
|
||||
CONFIG_SND_SOC_CS42XX8_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-audioinjector-octo-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-cs42xx8.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-cs42xx8-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc- \
|
||||
snd-soc-audioinjector-octo-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-octo-soundcard/description
|
||||
This package contains support for AudioInjector Octo soundcard
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-audioinjector-octo-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-pi-soundcard
|
||||
TITLE:=Support for AudioInjector Pi soundcard
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD \
|
||||
CONFIG_SND_SOC_WM8731
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-audioinjector-pi-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8731.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8731 \
|
||||
snd-soc-audioinjector-pi-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-audioinjector-pi-soundcard/description
|
||||
This package contains support for AudioInjector Pi soundcard
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-audioinjector-pi-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-digidac1-soundcard
|
||||
TITLE:=Support for RRA DigiDAC1
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_DIGIDAC1_SOUNDCARD \
|
||||
CONFIG_SND_SOC_WM8741 \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM8804_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-digidac1-soundcard.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8741.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8741 \
|
||||
snd-soc-wm8804 snd-soc-wm8804-i2c \
|
||||
snd-soc-digidac1-soundcard)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-digidac1-soundcard/description
|
||||
This package contains support for RRA DigiDAC1
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-digidac1-soundcard))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco
|
||||
TITLE:=Support for Dion Audio LOCO DAC-AMP
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-dionaudio-loco.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a \
|
||||
snd-soc-dionaudio-loco)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco/description
|
||||
This package contains support for Dion Audio LOCO DAC-AMP
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-dionaudio-loco))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco-v2
|
||||
TITLE:=Support for Dion Audio LOCO-V2 DAC-AMP
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO_V2 \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-dionaudio-loco.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-pcm512x-i2c \
|
||||
snd-soc-dionaudio-loco)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-dionaudio-loco-v2/description
|
||||
This package contains support for Dion Audio LOCO-V2 DAC-AMP
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-dionaudio-loco-v2))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-fe-pi
|
||||
TITLE:=Support for Fe-Pi Audio Sound Card
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO \
|
||||
CONFIG_SND_SOC_SGTL5000
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-fe-pi-audio.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-sgtl5000.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-sgtl5000 \
|
||||
snd-soc-fe-pi-audio)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-fe-pi/description
|
||||
This package contains support for Fe-Pi Audio Sound Card
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-fe-pi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-googlevoicehat
|
||||
TITLE:=Support for Google VoiceHAT Sound Card
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD \
|
||||
CONFIG_SND_SOC_VOICEHAT
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-googlevoicehat-codec.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-googlevoicehat-codec)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-simple-soundcard
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-googlevoicehat/description
|
||||
This package contains support for Google VoiceHAT Sound Card
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-googlevoicehat))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dac
|
||||
TITLE:=Support for HifiBerry DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-simple-soundcard \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dac/description
|
||||
This package contains support for HifiBerry DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplus
|
||||
TITLE:=Support for HifiBerry DAC+ / DAC+ Pro
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS \
|
||||
CONFIG_SND_SOC_PCM512x
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/clk/clk-hifiberry-dacpro.ko \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-dacplus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,clk-hifiberry-dacpro snd-soc-pcm512x \
|
||||
snd-soc-hifiberry-dacplus)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplus/description
|
||||
This package contains support for HifiBerry DAC+ / DAC+ Pro
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-dacplus))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplusadc
|
||||
TITLE:=Support for HifiBerry DAC+ADC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_DMIC
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/clk/clk-hifiberry-dacpro.ko \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-hifiberry-dacplusadc.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-dmic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,clk-hifiberry-dacpro snd-soc-pcm512x \
|
||||
snd-soc-dmic snd-soc-hifiberry-dacplusadc)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-dacplusadc/description
|
||||
This package contains support for HifiBerry DAC+ADC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-dacplusadc))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-digi
|
||||
TITLE:=Support for HifiBerry Digi / Digi+ / Digi+ Pro
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI \
|
||||
CONFIG_SND_SOC_WM8804
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-wm8804-soundcard \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-digi/description
|
||||
This package contains support for HifiBerry Digi
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-digi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-amp
|
||||
TITLE:=Support for HifiBerry Amp
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP \
|
||||
CONFIG_SND_SOC_TAS5713
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-tas5713.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-tas5713)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-simple-soundcard \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-hifiberry-amp/description
|
||||
This package contains support for HifiBerry Amp
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-hifiberry-amp))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-codec
|
||||
TITLE:=Support for IQaudIO-CODEC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_IQAUDIO_CODEC \
|
||||
CONFIG_SND_SOC_DA7213
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-iqaudio-codec.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-da7213.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-da7213 snd-soc-iqaudio-codec)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-codec/description
|
||||
This package contains support for IQaudIO-CODEC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-iqaudio-codec))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-dac
|
||||
TITLE:=Support for IQaudIO-DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC \
|
||||
CONFIG_SND_SOC_PCM512x \
|
||||
CONFIG_SND_SOC_PCM512x_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-iqaudio-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-pcm512x-i2c \
|
||||
snd-soc-iqaudio-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-dac/description
|
||||
This package contains support for IQaudIO-DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-iqaudio-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-digi
|
||||
TITLE:=Support for IQaudIO-DIGI
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM8804_I2C
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804-i2c.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804 snd-soc-wm8804-i2c)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-wm8804-soundcard \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-iqaudio-digi/description
|
||||
This package contains support for IQaudIO-DIGI
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-iqaudio-digi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-i-sabe-q2m
|
||||
TITLE:=Support for Audiophonics I-Sabre Q2M DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_I_SABRE_Q2M \
|
||||
CONFIG_SND_SOC_I_SABRE_CODEC
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-i-sabre-q2m.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-i-sabre-codec.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-i-sabre-codec snd-soc-i-sabre-q2m)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-i-sabe-q2m/description
|
||||
This package contains support for Audiophonics I-SABRE Q2M DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-i-sabe-q2m))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-justboom-dac
|
||||
TITLE:=Support for JustBoom DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC \
|
||||
CONFIG_SND_SOC_PCM512x
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-justboom-dac.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x snd-soc-justboom-dac)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-justboom-dac/description
|
||||
This package contains support for JustBoom DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-justboom-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-justboom-digi
|
||||
TITLE:=Support for JustBoom Digi
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI \
|
||||
CONFIG_SND_SOC_WM8804
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8804)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-wm8804-soundcard \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-justboom-digi/description
|
||||
This package contains support for JustBoom Digi
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-justboom-digi))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-pisound
|
||||
TITLE:=Support for Blokas Labs PiSound
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_PISOUND \
|
||||
CONFIG_SND_SOC_PCM5102A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-pisound.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm5102a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm5102a snd-soc-pisound)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-pisound/description
|
||||
This package contains support for Blokas Labs PiSound
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-pisound))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-cirrus
|
||||
TITLE:=Support for Cirrus Logic Audio Card
|
||||
KCONFIG:= \
|
||||
CONFIG_GPIO_ARIZONA \
|
||||
CONFIG_INPUT_ARIZONA_HAPTICS=n \
|
||||
CONFIG_MFD_ARIZONA=y \
|
||||
CONFIG_MFD_ARIZONA_I2C \
|
||||
CONFIG_MFD_CS47L24=n \
|
||||
CONFIG_MFD_WM5102=n \
|
||||
CONFIG_MFD_WM5110=n \
|
||||
CONFIG_MFD_WM8997=n \
|
||||
CONFIG_MFD_WM8998=n \
|
||||
CONFIG_REGULATOR_ARIZONA \
|
||||
CONFIG_REGULATOR_ARIZONA_LDO1 \
|
||||
CONFIG_REGULATOR_ARIZONA_MICSUPP \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_CIRRUS \
|
||||
CONFIG_SND_SOC_ARIZONA \
|
||||
CONFIG_SND_SOC_WM5102 \
|
||||
CONFIG_SND_SOC_WM8804 \
|
||||
CONFIG_SND_SOC_WM_ADSP
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-cirrus.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-arizona.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm-adsp.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm5102.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8804.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm1794a snd-soc-rpi-cirrus)
|
||||
DEPENDS:= \
|
||||
+kmod-i2c-bcm2835 \
|
||||
kmod-sound-soc-bcm2835-i2s
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-cirrus/description
|
||||
This package contains support for RPi-Cirrus
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-cirrus))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-dac
|
||||
TITLE:=Support for RPi-DAC
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_DAC \
|
||||
CONFIG_SND_SOC_PCM1794A
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm1794a.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm1794a)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-sound-soc-rpi-simple-soundcard \
|
||||
+kmod-i2c-bcm2835
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-dac/description
|
||||
This package contains support for RPi-DAC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-dac))
|
||||
|
||||
|
||||
define KernelPackage/sound-soc-rpi-proto
|
||||
TITLE:=Support for RPi-PROTO
|
||||
KCONFIG:= \
|
||||
CONFIG_SND_BCM2708_SOC_RPI_PROTO \
|
||||
CONFIG_SND_SOC_WM8731
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soc/bcm/snd-soc-rpi-proto.ko \
|
||||
$(LINUX_DIR)/sound/soc/codecs/snd-soc-wm8731.ko
|
||||
AUTOLOAD:=$(call AutoLoad,68,snd-soc-wm8731 snd-soc-rpi-proto)
|
||||
DEPENDS:= \
|
||||
kmod-sound-soc-bcm2835-i2s \
|
||||
+kmod-i2c-bcm2835 \
|
||||
+kmod-regmap-i2c \
|
||||
+kmod-regmap-spi
|
||||
$(call AddDepends/sound)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-soc-rpi-proto/description
|
||||
This package contains support for RPi-PROTO
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,sound-soc-rpi-proto))
|
43
target/linux/brcm2708/modules/spi.mk
Normal file
43
target/linux/brcm2708/modules/spi.mk
Normal file
@ -0,0 +1,43 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/spi-bcm2835
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=BCM2835 SPI controller driver
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI=y \
|
||||
CONFIG_SPI_BCM2835 \
|
||||
CONFIG_SPI_MASTER=y
|
||||
FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835.ko
|
||||
AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-bcm2835/description
|
||||
This package contains the Broadcom 2835 SPI master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/spi-bcm2835-aux
|
||||
SUBMENU:=$(SPI_MENU)
|
||||
TITLE:=BCM2835 Aux SPI controller driver
|
||||
KCONFIG:=\
|
||||
CONFIG_SPI=y \
|
||||
CONFIG_SPI_BCM2835AUX \
|
||||
CONFIG_SPI_MASTER=y
|
||||
FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835aux.ko
|
||||
AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835aux)
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
endef
|
||||
|
||||
define KernelPackage/spi-bcm2835-aux/description
|
||||
This package contains the Broadcom 2835 Aux SPI master controller driver
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,spi-bcm2835-aux))
|
85
target/linux/brcm2708/modules/video.mk
Normal file
85
target/linux/brcm2708/modules/video.mk
Normal file
@ -0,0 +1,85 @@
|
||||
#
|
||||
# Copyright (C) 2019 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
define KernelPackage/camera-bcm2835
|
||||
TITLE:=BCM2835 Camera
|
||||
KCONFIG:= \
|
||||
CONFIG_VIDEO_BCM2835 \
|
||||
CONFIG_VIDEO_BCM2835_MMAL
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko
|
||||
AUTOLOAD:=$(call AutoLoad,65,bcm2835-v4l2)
|
||||
$(call AddDepends/video,@TARGET_brcm2708 +kmod-vchiq-mmal-bcm2835 +kmod-video-videobuf2)
|
||||
endef
|
||||
|
||||
define KernelPackage/camera-bcm2835/description
|
||||
Camera host interface devices for Broadcom BCM2835 SoC.
|
||||
This operates over the VCHIQ interface to a service running on VideoCore.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,camera-bcm2835))
|
||||
|
||||
|
||||
define KernelPackage/drm-vc4
|
||||
SUBMENU:=$(VIDEO_MENU)
|
||||
TITLE:=Broadcom VC4 Graphics
|
||||
DEPENDS:= \
|
||||
@TARGET_brcm2708 +kmod-drm \
|
||||
+kmod-sound-core \
|
||||
+kmod-sound-soc-core
|
||||
KCONFIG:= \
|
||||
CONFIG_DRM_VC4 \
|
||||
CONFIG_DRM_VC4_HDMI_CEC=n \
|
||||
CONFIG_DRM_V3D=n \
|
||||
CONFIG_DRM_TVE200=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/vc4/vc4.ko \
|
||||
$(LINUX_DIR)/drivers/gpu/drm/drm_kms_helper.ko
|
||||
AUTOLOAD:=$(call AutoProbe,vc4)
|
||||
endef
|
||||
|
||||
define KernelPackage/drm-vc4/description
|
||||
Direct Rendering Manager (DRM) support for Broadcom VideoCore IV GPU
|
||||
used in BCM2835, BCM2836 and BCM2837 SoCs (e.g. Raspberry Pi).
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,drm-vc4))
|
||||
|
||||
|
||||
define KernelPackage/vc-sm-cma
|
||||
TITLE:=VideoCore Shared Memory (CMA) driver
|
||||
KCONFIG:= \
|
||||
CONFIG_BCM_VC_SM_CMA
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/vc-sm-cma/vc-sm-cma.ko
|
||||
$(call AddDepends/video,@TARGET_brcm2708)
|
||||
endef
|
||||
|
||||
define KernelPackage/vc-sm-cma/description
|
||||
Shared memory interface that supports sharing dmabufs with VideoCore.
|
||||
This operates over the VCHIQ interface to a service running on VideoCore.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vc-sm-cma))
|
||||
|
||||
|
||||
define KernelPackage/vchiq-mmal-bcm2835
|
||||
TITLE:=BCM2835 MMAL VCHIQ service
|
||||
KCONFIG:= \
|
||||
CONFIG_BCM2835_VCHIQ_MMAL \
|
||||
CONFIG_VIDEO_CODEC_BCM2835=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/staging/vc04_services/vchiq-mmal/bcm2835-mmal-vchiq.ko
|
||||
$(call AddDepends/video,@TARGET_brcm2708 +kmod-vc-sm-cma)
|
||||
endef
|
||||
|
||||
define KernelPackage/vchiq-mmal-bcm2835/description
|
||||
Enables the MMAL API over VCHIQ as used for the
|
||||
majority of the multimedia services on VideoCore.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,vchiq-mmal-bcm2835))
|
@ -0,0 +1,99 @@
|
||||
From d76972193fe88bb13028ba8277736a6aec4b8c8a Mon Sep 17 00:00:00 2001
|
||||
From: Dan Pasanen <dan.pasanen@gmail.com>
|
||||
Date: Thu, 21 Sep 2017 09:55:42 -0500
|
||||
Subject: [PATCH 001/703] arm: partially revert
|
||||
702b94bff3c50542a6e4ab9a4f4cef093262fe65
|
||||
|
||||
* Re-expose some dmi APIs for use in VCSM
|
||||
---
|
||||
arch/arm/include/asm/cacheflush.h | 21 +++++++++++++++++++++
|
||||
arch/arm/include/asm/glue-cache.h | 2 ++
|
||||
arch/arm/mm/proc-macros.S | 2 ++
|
||||
arch/arm/mm/proc-syms.c | 3 +++
|
||||
4 files changed, 28 insertions(+)
|
||||
|
||||
--- a/arch/arm/include/asm/cacheflush.h
|
||||
+++ b/arch/arm/include/asm/cacheflush.h
|
||||
@@ -94,6 +94,21 @@
|
||||
* DMA Cache Coherency
|
||||
* ===================
|
||||
*
|
||||
+ * dma_inv_range(start, end)
|
||||
+ *
|
||||
+ * Invalidate (discard) the specified virtual address range.
|
||||
+ * May not write back any entries. If 'start' or 'end'
|
||||
+ * are not cache line aligned, those lines must be written
|
||||
+ * back.
|
||||
+ * - start - virtual start address
|
||||
+ * - end - virtual end address
|
||||
+ *
|
||||
+ * dma_clean_range(start, end)
|
||||
+ *
|
||||
+ * Clean (write back) the specified virtual address range.
|
||||
+ * - start - virtual start address
|
||||
+ * - end - virtual end address
|
||||
+ *
|
||||
* dma_flush_range(start, end)
|
||||
*
|
||||
* Clean and invalidate the specified virtual address range.
|
||||
@@ -115,6 +130,8 @@ struct cpu_cache_fns {
|
||||
void (*dma_map_area)(const void *, size_t, int);
|
||||
void (*dma_unmap_area)(const void *, size_t, int);
|
||||
|
||||
+ void (*dma_inv_range)(const void *, const void *);
|
||||
+ void (*dma_clean_range)(const void *, const void *);
|
||||
void (*dma_flush_range)(const void *, const void *);
|
||||
} __no_randomize_layout;
|
||||
|
||||
@@ -140,6 +157,8 @@ extern struct cpu_cache_fns cpu_cache;
|
||||
* is visible to DMA, or data written by DMA to system memory is
|
||||
* visible to the CPU.
|
||||
*/
|
||||
+#define dmac_inv_range cpu_cache.dma_inv_range
|
||||
+#define dmac_clean_range cpu_cache.dma_clean_range
|
||||
#define dmac_flush_range cpu_cache.dma_flush_range
|
||||
|
||||
#else
|
||||
@@ -159,6 +178,8 @@ extern void __cpuc_flush_dcache_area(voi
|
||||
* is visible to DMA, or data written by DMA to system memory is
|
||||
* visible to the CPU.
|
||||
*/
|
||||
+extern void dmac_inv_range(const void *, const void *);
|
||||
+extern void dmac_clean_range(const void *, const void *);
|
||||
extern void dmac_flush_range(const void *, const void *);
|
||||
|
||||
#endif
|
||||
--- a/arch/arm/include/asm/glue-cache.h
|
||||
+++ b/arch/arm/include/asm/glue-cache.h
|
||||
@@ -158,6 +158,8 @@ static inline void nop_dma_unmap_area(co
|
||||
#define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range)
|
||||
#define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area)
|
||||
|
||||
+#define dmac_inv_range __glue(_CACHE,_dma_inv_range)
|
||||
+#define dmac_clean_range __glue(_CACHE,_dma_clean_range)
|
||||
#define dmac_flush_range __glue(_CACHE,_dma_flush_range)
|
||||
#endif
|
||||
|
||||
--- a/arch/arm/mm/proc-macros.S
|
||||
+++ b/arch/arm/mm/proc-macros.S
|
||||
@@ -335,6 +335,8 @@ ENTRY(\name\()_cache_fns)
|
||||
.long \name\()_flush_kern_dcache_area
|
||||
.long \name\()_dma_map_area
|
||||
.long \name\()_dma_unmap_area
|
||||
+ .long \name\()_dma_inv_range
|
||||
+ .long \name\()_dma_clean_range
|
||||
.long \name\()_dma_flush_range
|
||||
.size \name\()_cache_fns, . - \name\()_cache_fns
|
||||
.endm
|
||||
--- a/arch/arm/mm/proc-syms.c
|
||||
+++ b/arch/arm/mm/proc-syms.c
|
||||
@@ -30,6 +30,9 @@ EXPORT_SYMBOL(__cpuc_flush_user_all);
|
||||
EXPORT_SYMBOL(__cpuc_flush_user_range);
|
||||
EXPORT_SYMBOL(__cpuc_coherent_kern_range);
|
||||
EXPORT_SYMBOL(__cpuc_flush_dcache_area);
|
||||
+EXPORT_SYMBOL(dmac_inv_range);
|
||||
+EXPORT_SYMBOL(dmac_clean_range);
|
||||
+EXPORT_SYMBOL(dmac_flush_range);
|
||||
#else
|
||||
EXPORT_SYMBOL(cpu_cache);
|
||||
#endif
|
@ -1,7 +1,7 @@
|
||||
From c01a3230d8cdd396dcec2619646f6cf2753481d8 Mon Sep 17 00:00:00 2001
|
||||
From 8f4948a1503a76cbeb5823d8b17990bf3a3c57a6 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
Date: Thu, 19 Feb 2015 18:47:12 +0000
|
||||
Subject: [PATCH] smsx95xx: fix crimes against truesize
|
||||
Subject: [PATCH 002/703] smsx95xx: fix crimes against truesize
|
||||
|
||||
smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
|
||||
u32 *data, int in_pm)
|
||||
{
|
||||
@@ -1961,7 +1965,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
@@ -1972,7 +1976,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(skb);
|
||||
skb_trim(skb, skb->len - 4); /* remove fcs */
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1979,7 +1984,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
@@ -1990,7 +1995,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(ax_skb);
|
||||
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
|
@ -1,8 +1,8 @@
|
||||
From 8272cd893c3bca2f047dcf06ae11d9ada6d26f33 Mon Sep 17 00:00:00 2001
|
||||
From 623b0f5e0a439af4beef58317b224d4d3d2a969c Mon Sep 17 00:00:00 2001
|
||||
From: Sam Nazarko <email@samnazarko.co.uk>
|
||||
Date: Fri, 1 Apr 2016 17:27:21 +0100
|
||||
Subject: [PATCH] smsc95xx: Experimental: Enable turbo_mode and packetsize=2560
|
||||
by default
|
||||
Subject: [PATCH 003/703] smsc95xx: Experimental: Enable turbo_mode and
|
||||
packetsize=2560 by default
|
||||
|
||||
See: http://forum.kodi.tv/showthread.php?tid=285288
|
||||
---
|
@ -1,11 +1,11 @@
|
||||
From 2e70eba32ed21b1a909b9ae6a06b3384a33fc5a4 Mon Sep 17 00:00:00 2001
|
||||
From 80592905099a4f0fa5d166d58785eacef968ba4e Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Tue, 26 Mar 2013 17:26:38 +0000
|
||||
Subject: [PATCH] Allow mac address to be set in smsc95xx
|
||||
Subject: [PATCH 004/703] Allow mac address to be set in smsc95xx
|
||||
|
||||
Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
---
|
||||
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 56 insertions(+)
|
||||
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
@ -1,7 +1,8 @@
|
||||
From 3115fe312a2c751954f1ab0f0ba07aea1c1c7d1b Mon Sep 17 00:00:00 2001
|
||||
From b5e65f6a5a75c72d56d98c9543ff549710aa2d72 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 13 Mar 2015 12:43:36 +0000
|
||||
Subject: [PATCH] Protect __release_resource against resources without parents
|
||||
Subject: [PATCH 005/703] Protect __release_resource against resources without
|
||||
parents
|
||||
|
||||
Without this patch, removing a device tree overlay can crash here.
|
||||
|
||||
@ -12,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/kernel/resource.c
|
||||
+++ b/kernel/resource.c
|
||||
@@ -246,6 +246,12 @@ static int __release_resource(struct res
|
||||
@@ -213,6 +213,12 @@ static int __release_resource(struct res
|
||||
{
|
||||
struct resource *tmp, **p, *chd;
|
||||
|
@ -1,7 +1,8 @@
|
||||
From 0badcb291f4fb5c3477c37b4ad4a0e27dd863272 Mon Sep 17 00:00:00 2001
|
||||
From da00086d33452442af1009580f8e40164fc4e97f Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 4 Dec 2015 17:41:50 +0000
|
||||
Subject: [PATCH] irq-bcm2836: Prevent spurious interrupts, and trap them early
|
||||
Subject: [PATCH 006/703] irq-bcm2836: Prevent spurious interrupts, and trap
|
||||
them early
|
||||
|
||||
The old arch-specific IRQ macros included a dsb to ensure the
|
||||
write to clear the mailbox interrupt completed before returning
|
||||
@ -16,7 +17,7 @@ though, so trap them early.
|
||||
|
||||
--- a/drivers/irqchip/irq-bcm2836.c
|
||||
+++ b/drivers/irqchip/irq-bcm2836.c
|
||||
@@ -175,6 +175,7 @@ __exception_irq_entry bcm2836_arm_irqchi
|
||||
@@ -144,6 +144,7 @@ __exception_irq_entry bcm2836_arm_irqchi
|
||||
u32 ipi = ffs(mbox_val) - 1;
|
||||
|
||||
writel(1 << ipi, mailbox0);
|
@ -1,7 +1,7 @@
|
||||
From 4a849cef15885cf5dd901fafe45d3fa51b2b2a09 Mon Sep 17 00:00:00 2001
|
||||
From 23f28161eadbc84b976b1a6ff4c8e4fdfa38aa93 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Thu, 9 Feb 2017 14:33:30 +0000
|
||||
Subject: [PATCH] irq-bcm2836: Avoid "Invalid trigger warning"
|
||||
Subject: [PATCH 007/703] irq-bcm2836: Avoid "Invalid trigger warning"
|
||||
|
||||
Initialise the level for each IRQ to avoid a warning from the
|
||||
arm arch timer code.
|
||||
@ -13,12 +13,12 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/irqchip/irq-bcm2836.c
|
||||
+++ b/drivers/irqchip/irq-bcm2836.c
|
||||
@@ -178,7 +178,7 @@ static void bcm2836_arm_irqchip_register
|
||||
|
||||
@@ -124,7 +124,7 @@ static int bcm2836_map(struct irq_domain
|
||||
irq_set_percpu_devid(irq);
|
||||
irq_set_chip_and_handler(irq, chip, handle_percpu_devid_irq);
|
||||
irq_domain_set_info(d, irq, hw, chip, d->host_data,
|
||||
handle_percpu_devid_irq, NULL, NULL);
|
||||
- irq_set_status_flags(irq, IRQ_NOAUTOEN);
|
||||
+ irq_set_status_flags(irq, IRQ_NOAUTOEN | IRQ_TYPE_LEVEL_LOW);
|
||||
}
|
||||
|
||||
static void
|
||||
return 0;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
From 697bdb968798a2bb37c767582ba54fc6486c5de8 Mon Sep 17 00:00:00 2001
|
||||
From 06cc1d14e061ef7169947f09f1e356cec9e0a790 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Fri, 12 Jun 2015 19:01:05 +0200
|
||||
Subject: [PATCH] irqchip: bcm2835: Add FIQ support
|
||||
Subject: [PATCH 008/703] irqchip: bcm2835: Add FIQ support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -15,14 +15,14 @@ Reviewed-by: Eric Anholt <eric@anholt.net>
|
||||
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
|
||||
---
|
||||
arch/arm/mach-bcm/Kconfig | 1 +
|
||||
drivers/irqchip/irq-bcm2835.c | 51 ++++++++++++++++++++++++++++++++++++++-----
|
||||
drivers/irqchip/irq-bcm2835.c | 51 +++++++++++++++++++++++++++++++----
|
||||
2 files changed, 47 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/arch/arm/mach-bcm/Kconfig
|
||||
+++ b/arch/arm/mach-bcm/Kconfig
|
||||
@@ -152,6 +152,7 @@ config ARCH_BCM2835
|
||||
@@ -165,6 +165,7 @@ config ARCH_BCM2835
|
||||
select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7
|
||||
select CLKSRC_OF
|
||||
select TIMER_OF
|
||||
select BCM2835_TIMER
|
||||
+ select FIQ
|
||||
select PINCTRL
|
||||
@ -94,9 +94,9 @@ Acked-by: Stephen Warren <swarren@wwwdotorg.org>
|
||||
}
|
||||
|
||||
static struct irq_chip armctrl_chip = {
|
||||
@@ -150,8 +178,9 @@ static int __init armctrl_of_init(struct
|
||||
panic("%s: unable to map IC registers\n",
|
||||
node->full_name);
|
||||
@@ -149,8 +177,9 @@ static int __init armctrl_of_init(struct
|
||||
if (!base)
|
||||
panic("%pOF: unable to map IC registers\n", node);
|
||||
|
||||
- intc.domain = irq_domain_add_linear(node, MAKE_HWIRQ(NR_BANKS, 0),
|
||||
- &armctrl_ops, NULL);
|
||||
@ -104,9 +104,9 @@ Acked-by: Stephen Warren <swarren@wwwdotorg.org>
|
||||
+ intc.domain = irq_domain_add_linear(node, NUMBER_IRQS * 2,
|
||||
+ &armctrl_ops, NULL);
|
||||
if (!intc.domain)
|
||||
panic("%s: unable to create IRQ domain\n", node->full_name);
|
||||
panic("%pOF: unable to create IRQ domain\n", node);
|
||||
|
||||
@@ -181,6 +210,18 @@ static int __init armctrl_of_init(struct
|
||||
@@ -180,6 +209,18 @@ static int __init armctrl_of_init(struct
|
||||
set_handle_irq(bcm2835_handle_irq);
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
From 78b53021ae0715792fb6a89bd9e7c02fc254be5c Mon Sep 17 00:00:00 2001
|
||||
From 9c8894afe627b270aad44c64f4e70c659468d7ed Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Fri, 23 Oct 2015 16:26:55 +0200
|
||||
Subject: [PATCH] irqchip: irq-bcm2835: Add 2836 FIQ support
|
||||
Subject: [PATCH 009/703] irqchip: irq-bcm2835: Add 2836 FIQ support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
---
|
||||
drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++++++++++--
|
||||
drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 41 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/irqchip/irq-bcm2835.c
|
||||
@ -81,7 +81,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
}
|
||||
|
||||
static struct irq_chip armctrl_chip = {
|
||||
@@ -210,6 +240,15 @@ static int __init armctrl_of_init(struct
|
||||
@@ -209,6 +239,15 @@ static int __init armctrl_of_init(struct
|
||||
set_handle_irq(bcm2835_handle_irq);
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
From 21a313f8517a1be2b0962710ffe9ad94e7334ba1 Mon Sep 17 00:00:00 2001
|
||||
From 97e88641862862585d6ae8aaae034946ceab8ceb Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 14 Jul 2015 10:26:09 +0100
|
||||
Subject: [PATCH] spidev: Add "spidev" compatible string to silence warning
|
||||
Subject: [PATCH 010/703] spidev: Add "spidev" compatible string to silence
|
||||
warning
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1054
|
||||
---
|
||||
@ -10,9 +11,9 @@ See: https://github.com/raspberrypi/linux/issues/1054
|
||||
|
||||
--- a/drivers/spi/spidev.c
|
||||
+++ b/drivers/spi/spidev.c
|
||||
@@ -697,6 +697,7 @@ static const struct of_device_id spidev_
|
||||
{ .compatible = "rohm,dh2228fv" },
|
||||
{ .compatible = "lineartechnology,ltc2488" },
|
||||
@@ -670,6 +670,7 @@ static const struct of_device_id spidev_
|
||||
{ .compatible = "ge,achc" },
|
||||
{ .compatible = "semtech,sx1301" },
|
||||
{ .compatible = "siliconlabs,si3210" },
|
||||
+ { .compatible = "spidev" },
|
||||
{},
|
@ -1,7 +1,7 @@
|
||||
From 6603973d0897c1a9b3b1a813c8ab1204efe98fe0 Mon Sep 17 00:00:00 2001
|
||||
From 5d9d6d510a0e7d2e3eee1ed663f0157c719c90ec Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 24 Jun 2015 14:10:44 +0100
|
||||
Subject: [PATCH] spi-bcm2835: Support pin groups other than 7-11
|
||||
Subject: [PATCH 011/703] spi-bcm2835: Support pin groups other than 7-11
|
||||
|
||||
The spi-bcm2835 driver automatically uses GPIO chip-selects due to
|
||||
some unreliability of the native ones. In doing so it chooses the
|
||||
@ -14,7 +14,7 @@ selects.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/spi/spi-bcm2835.c | 45 +++++++++++++++++++++++++++++++++++++--------
|
||||
drivers/spi/spi-bcm2835.c | 45 ++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 37 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
@ -1,7 +1,7 @@
|
||||
From c0aaf0d4213bfc9df85c397cd974f7a6f15255f2 Mon Sep 17 00:00:00 2001
|
||||
From 8d654c03c8e0730e67fc4e7d6435da05ddf4e284 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 1 Jul 2016 22:09:24 +0100
|
||||
Subject: [PATCH] spi-bcm2835: Disable forced software CS
|
||||
Subject: [PATCH 012/703] spi-bcm2835: Disable forced software CS
|
||||
|
||||
Select software CS in bcm2708_common.dtsi, and disable the automatic
|
||||
conversion in the driver to allow hardware CS to be re-enabled with an
|
@ -1,10 +1,10 @@
|
||||
From 21f7f9d8146dd9e5a860198781febf78aafee3d1 Mon Sep 17 00:00:00 2001
|
||||
From 5a6dcccb576167d1e50c922bfb7bf6cffbdaa671 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 8 Nov 2016 21:35:38 +0000
|
||||
Subject: [PATCH] spi-bcm2835: Remove unused code
|
||||
Subject: [PATCH 013/703] spi-bcm2835: Remove unused code
|
||||
|
||||
---
|
||||
drivers/spi/spi-bcm2835.c | 61 -----------------------------------------------
|
||||
drivers/spi/spi-bcm2835.c | 61 ---------------------------------------
|
||||
1 file changed, 61 deletions(-)
|
||||
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
@ -1,7 +1,8 @@
|
||||
From e4f0f7daebca7005c67bf7ae3f6f59df587e91d5 Mon Sep 17 00:00:00 2001
|
||||
From abbc7f81bb68293439c0a325b5a590d28b91b819 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Sat, 3 Oct 2015 22:22:55 +0200
|
||||
Subject: [PATCH] dmaengine: bcm2835: Load driver early and support legacy API
|
||||
Subject: [PATCH 014/703] dmaengine: bcm2835: Load driver early and support
|
||||
legacy API
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -19,7 +20,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
--- a/drivers/dma/Kconfig
|
||||
+++ b/drivers/dma/Kconfig
|
||||
@@ -108,7 +108,7 @@ config COH901318
|
||||
@@ -131,7 +131,7 @@ config COH901318
|
||||
|
||||
config DMA_BCM2835
|
||||
tristate "BCM2835 DMA engine support"
|
||||
@ -46,7 +47,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
struct bcm2835_dmadev {
|
||||
struct dma_device ddev;
|
||||
@@ -925,6 +927,9 @@ static int bcm2835_dma_probe(struct plat
|
||||
@@ -912,6 +914,9 @@ static int bcm2835_dma_probe(struct plat
|
||||
base = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
@ -56,7 +57,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
od->base = base;
|
||||
|
||||
@@ -962,6 +967,9 @@ static int bcm2835_dma_probe(struct plat
|
||||
@@ -950,6 +955,9 @@ static int bcm2835_dma_probe(struct plat
|
||||
goto err_no_dma;
|
||||
}
|
||||
|
||||
@ -66,7 +67,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
/* get irqs for each channel that we support */
|
||||
for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) {
|
||||
/* skip masked out channels */
|
||||
@@ -1036,6 +1044,7 @@ static int bcm2835_dma_remove(struct pla
|
||||
@@ -1024,6 +1032,7 @@ static int bcm2835_dma_remove(struct pla
|
||||
{
|
||||
struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
|
||||
|
||||
@ -74,7 +75,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
dma_async_device_unregister(&od->ddev);
|
||||
bcm2835_dma_free(od);
|
||||
|
||||
@@ -1051,7 +1060,22 @@ static struct platform_driver bcm2835_dm
|
||||
@@ -1039,7 +1048,22 @@ static struct platform_driver bcm2835_dm
|
||||
},
|
||||
};
|
||||
|
@ -0,0 +1,36 @@
|
||||
From 8d00375a0645102bc58fc5c8e4c05efbcfbbbd71 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Mon, 25 Jan 2016 17:25:12 +0000
|
||||
Subject: [PATCH 015/703] firmware: Updated mailbox header
|
||||
|
||||
---
|
||||
include/soc/bcm2835/raspberrypi-firmware.h | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
+#define RPI_FIRMWARE_CHAN_FB 1
|
||||
+
|
||||
struct rpi_firmware;
|
||||
|
||||
enum rpi_firmware_property_status {
|
||||
@@ -76,6 +78,8 @@ enum rpi_firmware_property_tag {
|
||||
RPI_FIRMWARE_GET_CUSTOMER_OTP = 0x00030021,
|
||||
RPI_FIRMWARE_GET_DOMAIN_STATE = 0x00030030,
|
||||
RPI_FIRMWARE_GET_THROTTLED = 0x00030046,
|
||||
+ RPI_FIRMWARE_GET_CLOCK_MEASURED = 0x00030047,
|
||||
+ RPI_FIRMWARE_NOTIFY_REBOOT = 0x00030048,
|
||||
RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001,
|
||||
RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002,
|
||||
RPI_FIRMWARE_SET_VOLTAGE = 0x00038003,
|
||||
@@ -158,5 +162,6 @@ static inline struct rpi_firmware *rpi_f
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
+int rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data);
|
||||
|
||||
#endif /* __SOC_RASPBERRY_FIRMWARE_H__ */
|
@ -1,7 +1,7 @@
|
||||
From ffa1e97926ba3e22f7e41e2b5e16737461bf31ae Mon Sep 17 00:00:00 2001
|
||||
From afbee813c2e801c74c1732eb4511e5fd32027245 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 15 Jun 2016 16:48:41 +0100
|
||||
Subject: [PATCH] rtc: Add SPI alias for pcf2123 driver
|
||||
Subject: [PATCH 016/703] rtc: Add SPI alias for pcf2123 driver
|
||||
|
||||
Without this alias, Device Tree won't cause the driver
|
||||
to be loaded.
|
@ -1,7 +1,7 @@
|
||||
From 0e690096e05c3b4e806381ff38124dbdae3ba877 Mon Sep 17 00:00:00 2001
|
||||
From 3091f3a65590ab446e9c637377efa55dc3b8996f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Fri, 7 Oct 2016 16:50:59 +0200
|
||||
Subject: [PATCH] watchdog: bcm2835: Support setting reboot partition
|
||||
Subject: [PATCH 017/703] watchdog: bcm2835: Support setting reboot partition
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -16,42 +16,39 @@ If the partition doesn't exist, the firmware falls back to partition 0.
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
---
|
||||
drivers/watchdog/bcm2835_wdt.c | 61 +++++++++++++++++++++++++-----------------
|
||||
1 file changed, 36 insertions(+), 25 deletions(-)
|
||||
drivers/watchdog/bcm2835_wdt.c | 49 +++++++++++++++++++---------------
|
||||
1 file changed, 27 insertions(+), 22 deletions(-)
|
||||
|
||||
--- a/drivers/watchdog/bcm2835_wdt.c
|
||||
+++ b/drivers/watchdog/bcm2835_wdt.c
|
||||
@@ -35,13 +35,7 @@
|
||||
@@ -31,13 +31,7 @@
|
||||
#define PM_RSTC_WRCFG_SET 0x00000030
|
||||
#define PM_RSTC_WRCFG_FULL_RESET 0x00000020
|
||||
#define PM_RSTC_RESET 0x00000102
|
||||
-
|
||||
-/*
|
||||
- * The Raspberry Pi firmware uses the RSTS register to know which partiton
|
||||
- * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10.
|
||||
- * Partiton 63 is a special partition used by the firmware to indicate halt.
|
||||
- * The Raspberry Pi firmware uses the RSTS register to know which partition
|
||||
- * to boot from. The partition value is spread into bits 0, 2, 4, 6, 8, 10.
|
||||
- * Partition 63 is a special partition used by the firmware to indicate halt.
|
||||
- */
|
||||
-#define PM_RSTS_RASPBERRYPI_HALT 0x555
|
||||
+#define PM_RSTS_PARTITION_CLR 0xfffffaaa
|
||||
+#define PM_RSTS_PARTITION_CLR 0xfffffaaa
|
||||
|
||||
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
|
||||
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
|
||||
@@ -111,15 +105,28 @@ static struct watchdog_device bcm2835_wd
|
||||
.timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET),
|
||||
};
|
||||
@@ -94,9 +88,24 @@ static unsigned int bcm2835_wdt_get_time
|
||||
return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET);
|
||||
}
|
||||
|
||||
-static int
|
||||
-bcm2835_restart(struct notifier_block *this, unsigned long mode, void *cmd)
|
||||
-static void __bcm2835_restart(struct bcm2835_wdt *wdt)
|
||||
+/*
|
||||
+ * The Raspberry Pi firmware uses the RSTS register to know which partiton
|
||||
+ * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10.
|
||||
+ * Partiton 63 is a special partition used by the firmware to indicate halt.
|
||||
+ */
|
||||
+
|
||||
+static void bcm2835_restart(struct bcm2835_wdt *wdt, u8 partition)
|
||||
+static void __bcm2835_restart(struct bcm2835_wdt *wdt, u8 partition)
|
||||
{
|
||||
- struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt,
|
||||
- restart_handler);
|
||||
- u32 val;
|
||||
+ u32 val, rsts;
|
||||
+
|
||||
@ -66,32 +63,22 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
/* use a timeout of 10 ticks (~150us) */
|
||||
writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG);
|
||||
+
|
||||
val = readl_relaxed(wdt->base + PM_RSTC);
|
||||
val &= PM_RSTC_WRCFG_CLR;
|
||||
val |= PM_PASSWORD | PM_RSTC_WRCFG_FULL_RESET;
|
||||
@@ -127,6 +134,20 @@ bcm2835_restart(struct notifier_block *t
|
||||
@@ -114,7 +123,13 @@ static int bcm2835_restart(struct watchd
|
||||
{
|
||||
struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
|
||||
|
||||
/* No sleeping, possibly atomic. */
|
||||
mdelay(1);
|
||||
+}
|
||||
+
|
||||
+static int bcm2835_restart_notifier_call(struct notifier_block *this,
|
||||
+ unsigned long mode, void *cmd)
|
||||
+{
|
||||
+ struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt,
|
||||
+ restart_handler);
|
||||
- __bcm2835_restart(wdt);
|
||||
+ unsigned long long val;
|
||||
+ u8 partition = 0;
|
||||
+
|
||||
+ if (cmd && !kstrtoull(cmd, 0, &val) && val <= 63)
|
||||
+ if (data && !kstrtoull(data, 0, &val) && val <= 63)
|
||||
+ partition = val;
|
||||
+
|
||||
+ bcm2835_restart(wdt, partition);
|
||||
+ __bcm2835_restart(wdt, partition);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -142,19 +163,9 @@ static void bcm2835_power_off(void)
|
||||
@@ -152,19 +167,9 @@ static void bcm2835_power_off(void)
|
||||
of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt");
|
||||
struct platform_device *pdev = of_find_device_by_node(np);
|
||||
struct bcm2835_wdt *wdt = platform_get_drvdata(pdev);
|
||||
@ -107,18 +94,9 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
- writel_relaxed(val, wdt->base + PM_RSTS);
|
||||
|
||||
- /* Continue with normal reset mechanism */
|
||||
- bcm2835_restart(&wdt->restart_handler, REBOOT_HARD, NULL);
|
||||
- __bcm2835_restart(wdt);
|
||||
+ /* Partition 63 tells the firmware that this is a halt */
|
||||
+ bcm2835_restart(wdt, 63);
|
||||
+ __bcm2835_restart(wdt, 63);
|
||||
}
|
||||
|
||||
static int bcm2835_wdt_probe(struct platform_device *pdev)
|
||||
@@ -188,7 +199,7 @@ static int bcm2835_wdt_probe(struct plat
|
||||
return err;
|
||||
}
|
||||
|
||||
- wdt->restart_handler.notifier_call = bcm2835_restart;
|
||||
+ wdt->restart_handler.notifier_call = bcm2835_restart_notifier_call;
|
||||
wdt->restart_handler.priority = 128;
|
||||
register_restart_handler(&wdt->restart_handler);
|
||||
if (pm_power_off == NULL)
|
@ -1,8 +1,8 @@
|
||||
From 527f4308ee55e8727c486528879b7945b6404a72 Mon Sep 17 00:00:00 2001
|
||||
From 49dc030939b6332a4d1dca0c2b12ea9f559dcf2f Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Tue, 5 Apr 2016 19:40:12 +0100
|
||||
Subject: [PATCH] reboot: Use power off rather than busy spinning when halt is
|
||||
requested
|
||||
Subject: [PATCH 018/703] reboot: Use power off rather than busy spinning when
|
||||
halt is requested
|
||||
|
||||
---
|
||||
arch/arm/kernel/reboot.c | 4 +---
|
||||
@ -10,7 +10,7 @@ Subject: [PATCH] reboot: Use power off rather than busy spinning when halt is
|
||||
|
||||
--- a/arch/arm/kernel/reboot.c
|
||||
+++ b/arch/arm/kernel/reboot.c
|
||||
@@ -102,9 +102,7 @@ void machine_shutdown(void)
|
||||
@@ -105,9 +105,7 @@ void machine_shutdown(void)
|
||||
*/
|
||||
void machine_halt(void)
|
||||
{
|
@ -1,7 +1,7 @@
|
||||
From d63e8989dc891121464a86cec95952f104edf383 Mon Sep 17 00:00:00 2001
|
||||
From 9fdc1aa7e5d82029afb4e14c3ef3613264f6eca0 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 9 Nov 2016 13:02:52 +0000
|
||||
Subject: [PATCH] bcm: Make RASPBERRYPI_POWER depend on PM
|
||||
Subject: [PATCH 019/703] bcm: Make RASPBERRYPI_POWER depend on PM
|
||||
|
||||
---
|
||||
drivers/soc/bcm/Kconfig | 1 +
|
@ -1,10 +1,10 @@
|
||||
From 492d6b9c3f1f8cc1eb890dc0eafacae51d6ba2f0 Mon Sep 17 00:00:00 2001
|
||||
From 4900c14f9c0f514162496e6a3f71c51a50e7b376 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sperl <kernel@martin.sperl.org>
|
||||
Date: Fri, 2 Sep 2016 16:45:27 +0100
|
||||
Subject: [PATCH] Register the clocks early during the boot process, so that
|
||||
special/critical clocks can get enabled early on in the boot process avoiding
|
||||
the risk of disabling a clock, pll_divider or pll when a claiming driver
|
||||
fails to install propperly - maybe it needs to defer.
|
||||
Subject: [PATCH 020/703] Register the clocks early during the boot process, so
|
||||
that special/critical clocks can get enabled early on in the boot process
|
||||
avoiding the risk of disabling a clock, pll_divider or pll when a claiming
|
||||
driver fails to install propperly - maybe it needs to defer.
|
||||
|
||||
Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||
---
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -1909,8 +1909,15 @@ static int bcm2835_clk_probe(struct plat
|
||||
@@ -2184,8 +2184,15 @@ static int bcm2835_clk_probe(struct plat
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||
}
|
||||
|
||||
static const struct of_device_id bcm2835_clk_of_match[] = {
|
||||
@@ -1927,7 +1934,11 @@ static struct platform_driver bcm2835_cl
|
||||
@@ -2202,7 +2209,11 @@ static struct platform_driver bcm2835_cl
|
||||
.probe = bcm2835_clk_probe,
|
||||
};
|
||||
|
@ -0,0 +1,25 @@
|
||||
From bc5b619aa9eaa634e49483c95b3681171cb4d900 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Tue, 6 Dec 2016 17:05:39 +0000
|
||||
Subject: [PATCH 021/703] bcm2835-rng: Avoid initialising if already enabled
|
||||
|
||||
Avoids the 0x40000 cycles of warmup again if firmware has already used it
|
||||
---
|
||||
drivers/char/hw_random/bcm2835-rng.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/char/hw_random/bcm2835-rng.c
|
||||
+++ b/drivers/char/hw_random/bcm2835-rng.c
|
||||
@@ -105,8 +105,10 @@ static int bcm2835_rng_init(struct hwrng
|
||||
}
|
||||
|
||||
/* set warm-up count & enable */
|
||||
- rng_writel(priv, RNG_WARMUP_COUNT, RNG_STATUS);
|
||||
- rng_writel(priv, RNG_RBGEN, RNG_CTRL);
|
||||
+ if (!(rng_readl(priv, RNG_CTRL) & RNG_RBGEN)) {
|
||||
+ rng_writel(priv, RNG_WARMUP_COUNT, RNG_STATUS);
|
||||
+ rng_writel(priv, RNG_RBGEN, RNG_CTRL);
|
||||
+ }
|
||||
|
||||
return ret;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
From d438958d741a4edbb641791461ee8f6c34495a89 Mon Sep 17 00:00:00 2001
|
||||
From 30a4c0ff154b3ce8fd0df9054d03cee55dacc8d0 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 24 Aug 2016 16:28:44 +0100
|
||||
Subject: [PATCH] kbuild: Ignore dtco targets when filtering symbols
|
||||
Subject: [PATCH 022/703] kbuild: Ignore dtco targets when filtering symbols
|
||||
|
||||
---
|
||||
scripts/Kbuild.include | 2 +-
|
||||
@ -9,12 +9,12 @@ Subject: [PATCH] kbuild: Ignore dtco targets when filtering symbols
|
||||
|
||||
--- a/scripts/Kbuild.include
|
||||
+++ b/scripts/Kbuild.include
|
||||
@@ -296,7 +296,7 @@ ksym_dep_filter =
|
||||
@@ -287,7 +287,7 @@ ksym_dep_filter =
|
||||
$(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;; \
|
||||
as_*_S|cpp_s_S) \
|
||||
$(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \
|
||||
- boot*|build*|*cpp_lds_S|dtc|host*|vdso*) : ;; \
|
||||
+ boot*|build*|*cpp_lds_S|dtc*|host*|vdso*) : ;; \
|
||||
- boot*|build*|cpp_its_S|*cpp_lds_S|dtc|host*|vdso*) : ;; \
|
||||
+ boot*|build*|cpp_its_S|*cpp_lds_S|dtc*|host*|vdso*) : ;; \
|
||||
*) echo "Don't know how to preprocess $(1)" >&2; false ;; \
|
||||
esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p'
|
||||
esac | tr ";" "\n" | sed -n 's/^.*=== __KSYM_\(.*\) ===.*$$/_\1/p'
|
||||
|
@ -1,7 +1,7 @@
|
||||
From a2ca8b47db0d08735e1c0ebeaf34e88522091662 Mon Sep 17 00:00:00 2001
|
||||
From 06ad042c1d3b3471c478fee39a7539ac39b752ff Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 13 Feb 2017 17:20:08 +0000
|
||||
Subject: [PATCH] clk-bcm2835: Mark used PLLs and dividers CRITICAL
|
||||
Subject: [PATCH 023/703] clk-bcm2835: Mark used PLLs and dividers CRITICAL
|
||||
|
||||
The VPU configures and relies on several PLLs and dividers. Mark all
|
||||
enabled dividers and their PLLs as CRITICAL to prevent the kernel from
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -1372,6 +1372,11 @@ bcm2835_register_pll_divider(struct bcm2
|
||||
@@ -1362,6 +1362,11 @@ bcm2835_register_pll_divider(struct bcm2
|
||||
divider->div.hw.init = &init;
|
||||
divider->div.table = NULL;
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5c1128ebe6c7a4af3f1784a640df7f3698233e9d Mon Sep 17 00:00:00 2001
|
||||
From 14e1d51f1737da7b2bf59df95db6f977179e0497 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 13 Feb 2017 17:20:08 +0000
|
||||
Subject: [PATCH] clk-bcm2835: Add claim-clocks property
|
||||
Subject: [PATCH 024/703] clk-bcm2835: Add claim-clocks property
|
||||
|
||||
The claim-clocks property can be used to prevent PLLs and dividers
|
||||
from being marked as critical. It contains a vector of clock IDs,
|
||||
@ -12,43 +12,12 @@ PLLH_PIX for the vc4_kms_v3d driver.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 14 +++++++++
|
||||
drivers/clk/bcm/clk-bcm2835.c | 34 ++++++++++++++++++++--
|
||||
2 files changed, 46 insertions(+), 2 deletions(-)
|
||||
drivers/clk/bcm/clk-bcm2835.c | 34 ++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 32 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
|
||||
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
|
||||
@@ -5,6 +5,8 @@
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
+#include <dt-bindings/clock/bcm2835.h>
|
||||
+
|
||||
/ {
|
||||
compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
|
||||
|
||||
@@ -155,6 +157,18 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ fragment@19 {
|
||||
+ target = <&clocks>;
|
||||
+ __overlay__ {
|
||||
+ claim-clocks = <
|
||||
+ BCM2835_PLLD_DSI0
|
||||
+ BCM2835_PLLD_DSI1
|
||||
+ BCM2835_PLLH_AUX
|
||||
+ BCM2835_PLLH_PIX
|
||||
+ >;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
__overrides__ {
|
||||
cma-256 = <0>,"+0-1-2-3-4";
|
||||
cma-192 = <0>,"-0+1-2-3-4";
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -1304,6 +1304,8 @@ static const struct clk_ops bcm2835_vpu_
|
||||
@@ -1294,6 +1294,8 @@ static const struct clk_ops bcm2835_vpu_
|
||||
.debug_init = bcm2835_clock_debug_init,
|
||||
};
|
||||
|
||||
@ -57,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
|
||||
const struct bcm2835_pll_data *data)
|
||||
{
|
||||
@@ -1320,6 +1322,9 @@ static struct clk_hw *bcm2835_register_p
|
||||
@@ -1310,6 +1312,9 @@ static struct clk_hw *bcm2835_register_p
|
||||
init.ops = &bcm2835_pll_clk_ops;
|
||||
init.flags = CLK_IGNORE_UNUSED;
|
||||
|
||||
@ -67,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
|
||||
if (!pll)
|
||||
return NULL;
|
||||
@@ -1373,8 +1378,10 @@ bcm2835_register_pll_divider(struct bcm2
|
||||
@@ -1363,8 +1368,10 @@ bcm2835_register_pll_divider(struct bcm2
|
||||
divider->div.table = NULL;
|
||||
|
||||
if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
|
||||
@ -80,7 +49,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
}
|
||||
|
||||
divider->cprman = cprman;
|
||||
@@ -2110,6 +2117,8 @@ static const struct bcm2835_clk_desc clk
|
||||
@@ -2116,6 +2123,8 @@ static const struct bcm2835_clk_desc clk
|
||||
.ctl_reg = CM_PERIICTL),
|
||||
};
|
||||
|
||||
@ -89,7 +58,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/*
|
||||
* Permanently take a reference on the parent of the SDRAM clock.
|
||||
*
|
||||
@@ -2129,6 +2138,19 @@ static int bcm2835_mark_sdc_parent_criti
|
||||
@@ -2135,6 +2144,19 @@ static int bcm2835_mark_sdc_parent_criti
|
||||
return clk_prepare_enable(parent);
|
||||
}
|
||||
|
||||
@ -109,15 +78,15 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int bcm2835_clk_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -2138,6 +2160,7 @@ static int bcm2835_clk_probe(struct plat
|
||||
@@ -2144,6 +2166,7 @@ static int bcm2835_clk_probe(struct plat
|
||||
const struct bcm2835_clk_desc *desc;
|
||||
const size_t asize = ARRAY_SIZE(clk_desc_array);
|
||||
size_t i;
|
||||
+ u32 clk_id;
|
||||
int ret;
|
||||
|
||||
cprman = devm_kzalloc(dev, sizeof(*cprman) +
|
||||
@@ -2153,6 +2176,13 @@ static int bcm2835_clk_probe(struct plat
|
||||
cprman = devm_kzalloc(dev,
|
||||
@@ -2159,6 +2182,13 @@ static int bcm2835_clk_probe(struct plat
|
||||
if (IS_ERR(cprman->regs))
|
||||
return PTR_ERR(cprman->regs);
|
||||
|
@ -0,0 +1,115 @@
|
||||
From 9e24627b07ac0553c9fc00a069fcc10c22a3cb6f Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 6 Mar 2017 09:06:18 +0000
|
||||
Subject: [PATCH 025/703] clk-bcm2835: Read max core clock from firmware
|
||||
|
||||
The VPU is responsible for managing the core clock, usually under
|
||||
direction from the bcm2835-cpufreq driver but not via the clk-bcm2835
|
||||
driver. Since the core frequency can change without warning, it is
|
||||
safer to report the maximum clock rate to users of the core clock -
|
||||
I2C, SPI and the mini UART - to err on the safe side when calculating
|
||||
clock divisors.
|
||||
|
||||
If the DT node for the clock driver includes a reference to the
|
||||
firmware node, use the firmware API to query the maximum core clock
|
||||
instead of reading the divider registers.
|
||||
|
||||
Prior to this patch, a "100KHz" I2C bus was sometimes clocked at about
|
||||
160KHz. In particular, switching to the 4.9 kernel was likely to break
|
||||
SenseHAT usage on a Pi3.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/clk/bcm/clk-bcm2835.c | 39 ++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 38 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -44,6 +44,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <dt-bindings/clock/bcm2835.h>
|
||||
+#include <soc/bcm2835/raspberrypi-firmware.h>
|
||||
|
||||
#define CM_PASSWORD 0x5a000000
|
||||
|
||||
@@ -298,6 +299,8 @@
|
||||
#define LOCK_TIMEOUT_NS 100000000
|
||||
#define BCM2835_MAX_FB_RATE 1750000000u
|
||||
|
||||
+#define VCMSG_ID_CORE_CLOCK 4
|
||||
+
|
||||
/*
|
||||
* Names of clocks used within the driver that need to be replaced
|
||||
* with an external parent's name. This array is in the order that
|
||||
@@ -316,6 +319,7 @@ static const char *const cprman_parent_n
|
||||
struct bcm2835_cprman {
|
||||
struct device *dev;
|
||||
void __iomem *regs;
|
||||
+ struct rpi_firmware *fw;
|
||||
spinlock_t regs_lock; /* spinlock for all clocks */
|
||||
|
||||
/*
|
||||
@@ -998,6 +1002,30 @@ static unsigned long bcm2835_clock_get_r
|
||||
return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
|
||||
}
|
||||
|
||||
+static unsigned long bcm2835_clock_get_rate_vpu(struct clk_hw *hw,
|
||||
+ unsigned long parent_rate)
|
||||
+{
|
||||
+ struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
|
||||
+ struct bcm2835_cprman *cprman = clock->cprman;
|
||||
+
|
||||
+ if (cprman->fw) {
|
||||
+ struct {
|
||||
+ u32 id;
|
||||
+ u32 val;
|
||||
+ } packet;
|
||||
+
|
||||
+ packet.id = VCMSG_ID_CORE_CLOCK;
|
||||
+ packet.val = 0;
|
||||
+
|
||||
+ if (!rpi_firmware_property(cprman->fw,
|
||||
+ RPI_FIRMWARE_GET_MAX_CLOCK_RATE,
|
||||
+ &packet, sizeof(packet)))
|
||||
+ return packet.val;
|
||||
+ }
|
||||
+
|
||||
+ return bcm2835_clock_get_rate(hw, parent_rate);
|
||||
+}
|
||||
+
|
||||
static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock)
|
||||
{
|
||||
struct bcm2835_cprman *cprman = clock->cprman;
|
||||
@@ -1286,7 +1314,7 @@ static int bcm2835_vpu_clock_is_on(struc
|
||||
*/
|
||||
static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
|
||||
.is_prepared = bcm2835_vpu_clock_is_on,
|
||||
- .recalc_rate = bcm2835_clock_get_rate,
|
||||
+ .recalc_rate = bcm2835_clock_get_rate_vpu,
|
||||
.set_rate = bcm2835_clock_set_rate,
|
||||
.determine_rate = bcm2835_clock_determine_rate,
|
||||
.set_parent = bcm2835_clock_set_parent,
|
||||
@@ -2165,6 +2193,7 @@ static int bcm2835_clk_probe(struct plat
|
||||
struct resource *res;
|
||||
const struct bcm2835_clk_desc *desc;
|
||||
const size_t asize = ARRAY_SIZE(clk_desc_array);
|
||||
+ struct device_node *fw_node;
|
||||
size_t i;
|
||||
u32 clk_id;
|
||||
int ret;
|
||||
@@ -2182,6 +2211,14 @@ static int bcm2835_clk_probe(struct plat
|
||||
if (IS_ERR(cprman->regs))
|
||||
return PTR_ERR(cprman->regs);
|
||||
|
||||
+ fw_node = of_parse_phandle(dev->of_node, "firmware", 0);
|
||||
+ if (fw_node) {
|
||||
+ struct rpi_firmware *fw = rpi_firmware_get(NULL);
|
||||
+ if (!fw)
|
||||
+ return -EPROBE_DEFER;
|
||||
+ cprman->fw = fw;
|
||||
+ }
|
||||
+
|
||||
memset(bcm2835_clk_claimed, 0, sizeof(bcm2835_clk_claimed));
|
||||
for (i = 0;
|
||||
!of_property_read_u32_index(pdev->dev.of_node, "claim-clocks",
|
@ -1,7 +1,8 @@
|
||||
From 599e7165ec6477139dae4f32a12e8d49d5dd8859 Mon Sep 17 00:00:00 2001
|
||||
From fabb3595bd356f058329ff94a3c5e31df5d84217 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Mon, 9 May 2016 17:28:18 -0700
|
||||
Subject: [PATCH] clk: bcm2835: Mark GPIO clocks enabled at boot as critical.
|
||||
Subject: [PATCH 026/703] clk: bcm2835: Mark GPIO clocks enabled at boot as
|
||||
critical.
|
||||
|
||||
These divide off of PLLD_PER and are used for the ethernet and wifi
|
||||
PHYs source PLLs. Neither of them is currently represented by a phy
|
||||
@ -19,11 +20,10 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
|
||||
--- a/drivers/clk/bcm/clk-bcm2835.c
|
||||
+++ b/drivers/clk/bcm/clk-bcm2835.c
|
||||
@@ -1268,6 +1268,15 @@ static struct clk_hw *bcm2835_register_c
|
||||
init.name = data->name;
|
||||
@@ -1454,6 +1454,15 @@ static struct clk_hw *bcm2835_register_c
|
||||
init.flags = data->flags | CLK_IGNORE_UNUSED;
|
||||
|
||||
+ /*
|
||||
/*
|
||||
+ * Some GPIO clocks for ethernet/wifi PLLs are marked as
|
||||
+ * critical (since some platforms use them), but if the
|
||||
+ * firmware didn't have them turned on then they clearly
|
||||
@ -32,6 +32,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
+ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0)
|
||||
+ init.flags &= ~CLK_IS_CRITICAL;
|
||||
+
|
||||
if (data->is_vpu_clock) {
|
||||
init.ops = &bcm2835_vpu_clock_clk_ops;
|
||||
} else {
|
||||
+ /*
|
||||
* Pass the CLK_SET_RATE_PARENT flag if we are allowed to propagate
|
||||
* rate changes on at least of the parents.
|
||||
*/
|
@ -1,7 +1,7 @@
|
||||
From b78e78fa375e3aa1e91b35030e8dfc930ba425f2 Mon Sep 17 00:00:00 2001
|
||||
From 34dfe2b3ea493bc57c2b85280c28dbe0b3c1d1dc Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Thu, 9 Feb 2017 14:36:44 +0000
|
||||
Subject: [PATCH] sound: Demote deferral errors to INFO level
|
||||
Subject: [PATCH 027/703] sound: Demote deferral errors to INFO level
|
||||
|
||||
At present there is no mechanism to specify driver load order,
|
||||
which can lead to deferrals and repeated retries until successful.
|
||||
@ -10,21 +10,23 @@ INFO and mention that the operation will be retried.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
sound/soc/soc-core.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
sound/soc/soc-core.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/sound/soc/soc-core.c
|
||||
+++ b/sound/soc/soc-core.c
|
||||
@@ -1013,7 +1013,7 @@ static int soc_bind_dai_link(struct snd_
|
||||
@@ -868,8 +868,8 @@ static int soc_bind_dai_link(struct snd_
|
||||
cpu_dai_component.dai_name = dai_link->cpu_dai_name;
|
||||
rtd->cpu_dai = snd_soc_find_dai(&cpu_dai_component);
|
||||
if (!rtd->cpu_dai) {
|
||||
- dev_err(card->dev, "ASoC: CPU DAI %s not registered\n",
|
||||
- dev_info(card->dev, "ASoC: CPU DAI %s not registered\n",
|
||||
- dai_link->cpu_dai_name);
|
||||
+ dev_info(card->dev, "ASoC: CPU DAI %s not registered - will retry\n",
|
||||
dai_link->cpu_dai_name);
|
||||
+ dai_link->cpu_dai_name);
|
||||
goto _err_defer;
|
||||
}
|
||||
@@ -1025,7 +1025,7 @@ static int soc_bind_dai_link(struct snd_
|
||||
snd_soc_rtdcom_add(rtd, rtd->cpu_dai->component);
|
||||
@@ -881,7 +881,7 @@ static int soc_bind_dai_link(struct snd_
|
||||
for (i = 0; i < rtd->num_codecs; i++) {
|
||||
codec_dais[i] = snd_soc_find_dai(&codecs[i]);
|
||||
if (!codec_dais[i]) {
|
@ -1,7 +1,7 @@
|
||||
From aa00ca3b0296c40a6b5a1ad32258d5b655a28c70 Mon Sep 17 00:00:00 2001
|
||||
From dae5f48d60cccc2214a09c11b84373988e57e2f5 Mon Sep 17 00:00:00 2001
|
||||
From: Claggy3 <stephen.maclagan@hotmail.com>
|
||||
Date: Sat, 11 Feb 2017 14:00:30 +0000
|
||||
Subject: [PATCH] Update vfpmodule.c
|
||||
Subject: [PATCH 028/703] Update vfpmodule.c
|
||||
|
||||
Christopher Alexander Tobias Schulze - May 2, 2015, 11:57 a.m.
|
||||
This patch fixes a problem with VFP state save and restore related
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -463,13 +466,16 @@ static int vfp_pm_suspend(void)
|
||||
@@ -462,13 +465,16 @@ static int vfp_pm_suspend(void)
|
||||
/* if vfp is on, then save state for resumption */
|
||||
if (fpexc & FPEXC_EN) {
|
||||
pr_debug("%s: saving vfp state\n", __func__);
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
|
||||
vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc);
|
||||
fmxr(FPEXC, fpexc);
|
||||
#endif
|
||||
@@ -532,7 +538,8 @@ void vfp_sync_hwstate(struct thread_info
|
||||
@@ -531,7 +537,8 @@ void vfp_sync_hwstate(struct thread_info
|
||||
/*
|
||||
* Save the last VFP state on this CPU.
|
||||
*/
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
|
||||
vfp_save_state(&thread->vfpstate, fpexc | FPEXC_EN);
|
||||
fmxr(FPEXC, fpexc);
|
||||
}
|
||||
@@ -602,6 +609,7 @@ int vfp_restore_user_hwstate(struct user
|
||||
@@ -597,6 +604,7 @@ int vfp_restore_user_hwstate(struct user
|
||||
struct thread_info *thread = current_thread_info();
|
||||
struct vfp_hard_struct *hwstate = &thread->vfpstate.hard;
|
||||
unsigned long fpexc;
|
||||
@ -110,7 +110,7 @@ Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
|
||||
|
||||
/* Disable VFP to avoid corrupting the new thread state. */
|
||||
vfp_flush_hwstate(thread);
|
||||
@@ -624,8 +632,12 @@ int vfp_restore_user_hwstate(struct user
|
||||
@@ -619,8 +627,12 @@ int vfp_restore_user_hwstate(struct user
|
||||
/* Ensure the VFP is enabled. */
|
||||
fpexc |= FPEXC_EN;
|
||||
|
||||
@ -125,7 +125,7 @@ Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
|
||||
hwstate->fpexc = fpexc;
|
||||
|
||||
hwstate->fpinst = ufp_exc->fpinst;
|
||||
@@ -695,7 +707,8 @@ void kernel_neon_begin(void)
|
||||
@@ -690,7 +702,8 @@ void kernel_neon_begin(void)
|
||||
cpu = get_cpu();
|
||||
|
||||
fpexc = fmrx(FPEXC) | FPEXC_EN;
|
@ -1,7 +1,7 @@
|
||||
From 98629f09f3ceb7f2a559b48b4a70028485583f5e Mon Sep 17 00:00:00 2001
|
||||
From c7e79d0b9906e274e220f568ed49e5f00ee5187f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Tue, 1 Nov 2016 15:15:41 +0100
|
||||
Subject: [PATCH] i2c: bcm2835: Add debug support
|
||||
Subject: [PATCH 029/703] i2c: bcm2835: Add debug support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -32,12 +32,12 @@ Example output, debug=3:
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
---
|
||||
drivers/i2c/busses/i2c-bcm2835.c | 99 +++++++++++++++++++++++++++++++++++++++-
|
||||
drivers/i2c/busses/i2c-bcm2835.c | 99 +++++++++++++++++++++++++++++++-
|
||||
1 file changed, 98 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-bcm2835.c
|
||||
+++ b/drivers/i2c/busses/i2c-bcm2835.c
|
||||
@@ -53,6 +53,18 @@
|
||||
@@ -56,6 +56,18 @@
|
||||
#define BCM2835_I2C_CDIV_MIN 0x0002
|
||||
#define BCM2835_I2C_CDIV_MAX 0xFFFE
|
||||
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
struct bcm2835_i2c_dev {
|
||||
struct device *dev;
|
||||
void __iomem *regs;
|
||||
@@ -66,8 +78,78 @@ struct bcm2835_i2c_dev {
|
||||
@@ -69,8 +81,78 @@ struct bcm2835_i2c_dev {
|
||||
u32 msg_err;
|
||||
u8 *msg_buf;
|
||||
size_t msg_buf_remaining;
|
||||
@ -135,15 +135,15 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev,
|
||||
u32 reg, u32 val)
|
||||
{
|
||||
@@ -170,6 +252,7 @@ static void bcm2835_i2c_start_transfer(s
|
||||
@@ -189,6 +271,7 @@ static void bcm2835_i2c_start_transfer(s
|
||||
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr);
|
||||
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len);
|
||||
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c);
|
||||
+ bcm2835_debug_add(i2c_dev, ~0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -187,6 +270,7 @@ static irqreturn_t bcm2835_i2c_isr(int t
|
||||
static void bcm2835_i2c_finish_transfer(struct bcm2835_i2c_dev *i2c_dev)
|
||||
@@ -215,6 +298,7 @@ static irqreturn_t bcm2835_i2c_isr(int t
|
||||
u32 val, err;
|
||||
|
||||
val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
|
||||
@ -151,7 +151,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
err = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR);
|
||||
if (err) {
|
||||
@@ -253,6 +337,13 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
@@ -281,6 +365,13 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
unsigned long time_left;
|
||||
int i, ret;
|
||||
|
||||
@ -165,10 +165,10 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
for (i = 0; i < (num - 1); i++)
|
||||
if (msgs[i].flags & I2C_M_RD) {
|
||||
dev_warn_once(i2c_dev->dev,
|
||||
@@ -272,6 +363,10 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
@@ -303,6 +394,10 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
|
||||
bcm2835_i2c_finish_transfer(i2c_dev);
|
||||
|
||||
time_left = wait_for_completion_timeout(&i2c_dev->completion,
|
||||
adap->timeout);
|
||||
+ if (debug > 1 || (debug && (!time_left || i2c_dev->msg_err)))
|
||||
+ bcm2835_debug_print(i2c_dev);
|
||||
+ i2c_dev->debug_num_msgs = 0;
|
||||
@ -176,7 +176,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
if (!time_left) {
|
||||
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C,
|
||||
BCM2835_I2C_C_CLEAR);
|
||||
@@ -282,7 +377,9 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
@@ -313,7 +408,9 @@ static int bcm2835_i2c_xfer(struct i2c_a
|
||||
if (!i2c_dev->msg_err)
|
||||
return num;
|
||||
|
@ -0,0 +1,25 @@
|
||||
From 72ed3b77a672a8a94dab5d08739fac5b4df488d2 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Anholt <eric@anholt.net>
|
||||
Date: Thu, 18 Dec 2014 16:07:15 -0800
|
||||
Subject: [PATCH 030/703] mm: Remove the PFN busy warning
|
||||
|
||||
See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is
|
||||
expected sometimes when using CMA. However, that commit still spams
|
||||
my kernel log with these warnings.
|
||||
|
||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
||||
---
|
||||
mm/page_alloc.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -7972,8 +7972,6 @@ int alloc_contig_range(unsigned long sta
|
||||
|
||||
/* Make sure the range is really isolated. */
|
||||
if (test_pages_isolated(outer_start, end, false)) {
|
||||
- pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
|
||||
- __func__, outer_start, end);
|
||||
ret = -EBUSY;
|
||||
goto done;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
From 14e894cf24f588a4066b171b846934ebe44afc5d Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Thu, 23 Mar 2017 10:06:56 +0000
|
||||
Subject: [PATCH 031/703] ASoC: Add prompt for ICS43432 codec
|
||||
|
||||
Without a prompt string, a config setting can't be included in a
|
||||
defconfig. Give CONFIG_SND_SOC_ICS43432 a prompt so that Pi soundcards
|
||||
can use the driver.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
sound/soc/codecs/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/sound/soc/codecs/Kconfig
|
||||
+++ b/sound/soc/codecs/Kconfig
|
||||
@@ -616,7 +616,7 @@ config SND_SOC_HDAC_HDMI
|
||||
select HDMI
|
||||
|
||||
config SND_SOC_ICS43432
|
||||
- tristate
|
||||
+ tristate "InvenSense ICS43432 I2S microphone codec"
|
||||
|
||||
config SND_SOC_INNO_RK3036
|
||||
tristate "Inno codec driver for RK3036 SoC"
|
@ -0,0 +1,112 @@
|
||||
From a580882d64f92ec0b025f6ddcfcea985412eb430 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 23 Jan 2018 16:52:45 +0000
|
||||
Subject: [PATCH 032/703] irqchip: irq-bcm2836: Remove regmap and syscon use
|
||||
|
||||
The syscon node defines a register range that duplicates that used by
|
||||
the local_intc node on bcm2836/7. Since irq-bcm2835 and irq-bcm2836 are
|
||||
built in and always present together (both drivers are enabled by
|
||||
CONFIG_ARCH_BCM2835), it is possible to replace the syscon usage with a
|
||||
global variable that simplifies the code. Doing so does lose the
|
||||
locking provided by regmap, but as only one side is using the regmap
|
||||
interface (irq-bcm2835 uses readl and write) there is no loss of
|
||||
atomicity.
|
||||
|
||||
See: https://github.com/raspberrypi/firmware/issues/926
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/irqchip/irq-bcm2835.c | 32 ++++++++++++--------------------
|
||||
drivers/irqchip/irq-bcm2836.c | 5 +++++
|
||||
2 files changed, 17 insertions(+), 20 deletions(-)
|
||||
|
||||
--- a/drivers/irqchip/irq-bcm2835.c
|
||||
+++ b/drivers/irqchip/irq-bcm2835.c
|
||||
@@ -50,8 +50,6 @@
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/irqdomain.h>
|
||||
-#include <linux/mfd/syscon.h>
|
||||
-#include <linux/regmap.h>
|
||||
|
||||
#include <asm/exception.h>
|
||||
#include <asm/mach/irq.h>
|
||||
@@ -100,7 +98,7 @@ struct armctrl_ic {
|
||||
void __iomem *enable[NR_BANKS];
|
||||
void __iomem *disable[NR_BANKS];
|
||||
struct irq_domain *domain;
|
||||
- struct regmap *local_regmap;
|
||||
+ void __iomem *local_base;
|
||||
};
|
||||
|
||||
static struct armctrl_ic intc __read_mostly;
|
||||
@@ -137,24 +135,20 @@ static void armctrl_unmask_irq(struct ir
|
||||
if (d->hwirq >= NUMBER_IRQS) {
|
||||
if (num_online_cpus() > 1) {
|
||||
unsigned int data;
|
||||
- int ret;
|
||||
|
||||
- if (!intc.local_regmap) {
|
||||
- pr_err("FIQ is disabled due to missing regmap\n");
|
||||
+ if (!intc.local_base) {
|
||||
+ pr_err("FIQ is disabled due to missing arm_local_intc\n");
|
||||
return;
|
||||
}
|
||||
|
||||
- ret = regmap_read(intc.local_regmap,
|
||||
- ARM_LOCAL_GPU_INT_ROUTING, &data);
|
||||
- if (ret) {
|
||||
- pr_err("Failed to read int routing %d\n", ret);
|
||||
- return;
|
||||
- }
|
||||
+ data = readl_relaxed(intc.local_base +
|
||||
+ ARM_LOCAL_GPU_INT_ROUTING);
|
||||
|
||||
data &= ~0xc;
|
||||
data |= (1 << 2);
|
||||
- regmap_write(intc.local_regmap,
|
||||
- ARM_LOCAL_GPU_INT_ROUTING, data);
|
||||
+ writel_relaxed(data,
|
||||
+ intc.local_base +
|
||||
+ ARM_LOCAL_GPU_INT_ROUTING);
|
||||
}
|
||||
|
||||
writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq),
|
||||
@@ -240,12 +234,10 @@ static int __init armctrl_of_init(struct
|
||||
}
|
||||
|
||||
if (is_2836) {
|
||||
- intc.local_regmap =
|
||||
- syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local");
|
||||
- if (IS_ERR(intc.local_regmap)) {
|
||||
- pr_err("Failed to get local register map. FIQ is disabled for cpus > 1\n");
|
||||
- intc.local_regmap = NULL;
|
||||
- }
|
||||
+ extern void __iomem * __attribute__((weak)) arm_local_intc;
|
||||
+ intc.local_base = arm_local_intc;
|
||||
+ if (!intc.local_base)
|
||||
+ pr_err("Failed to get local intc base. FIQ is disabled for cpus > 1\n");
|
||||
}
|
||||
|
||||
/* Make a duplicate irq range which is used to enable FIQ */
|
||||
--- a/drivers/irqchip/irq-bcm2836.c
|
||||
+++ b/drivers/irqchip/irq-bcm2836.c
|
||||
@@ -30,6 +30,9 @@ struct bcm2836_arm_irqchip_intc {
|
||||
|
||||
static struct bcm2836_arm_irqchip_intc intc __read_mostly;
|
||||
|
||||
+void __iomem *arm_local_intc;
|
||||
+EXPORT_SYMBOL_GPL(arm_local_intc);
|
||||
+
|
||||
static void bcm2836_arm_irqchip_mask_per_cpu_irq(unsigned int reg_offset,
|
||||
unsigned int bit,
|
||||
int cpu)
|
||||
@@ -234,6 +237,8 @@ static int __init bcm2836_arm_irqchip_l1
|
||||
panic("%pOF: unable to map local interrupt registers\n", node);
|
||||
}
|
||||
|
||||
+ arm_local_intc = intc.base;
|
||||
+
|
||||
bcm2835_init_local_timer_frequency();
|
||||
|
||||
intc.domain = irq_domain_add_linear(node, LAST_IRQ + 1,
|
@ -0,0 +1,48 @@
|
||||
From a3d3dea9ca36f4f5adbf741f36b06ce05b70c2bb Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 17 Oct 2017 15:04:29 +0100
|
||||
Subject: [PATCH 033/703] lan78xx: Enable LEDs and auto-negotiation
|
||||
|
||||
For applications of the LAN78xx that don't have valid programmed
|
||||
EEPROMs or OTPs, enabling both LEDs and auto-negotiation by default
|
||||
seems reasonable.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/net/usb/lan78xx.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2472,6 +2472,11 @@ static int lan78xx_reset(struct lan78xx_
|
||||
int ret = 0;
|
||||
unsigned long timeout;
|
||||
u8 sig;
|
||||
+ bool has_eeprom;
|
||||
+ bool has_otp;
|
||||
+
|
||||
+ has_eeprom = !lan78xx_read_eeprom(dev, 0, 0, NULL);
|
||||
+ has_otp = !lan78xx_read_otp(dev, 0, 0, NULL);
|
||||
|
||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||
buf |= HW_CFG_LRST_;
|
||||
@@ -2525,6 +2530,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||
|
||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||
buf |= HW_CFG_MEF_;
|
||||
+ /* If no valid EEPROM and no valid OTP, enable the LEDs by default */
|
||||
+ if (!has_eeprom && !has_otp)
|
||||
+ buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_;
|
||||
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
||||
|
||||
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
|
||||
@@ -2580,6 +2588,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
|
||||
}
|
||||
}
|
||||
+ /* If no valid EEPROM and no valid OTP, enable AUTO negotiation */
|
||||
+ if (!has_eeprom && !has_otp)
|
||||
+ buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
|
||||
ret = lan78xx_write_reg(dev, MAC_CR, buf);
|
||||
|
||||
ret = lan78xx_read_reg(dev, MAC_TX, &buf);
|
@ -1,7 +1,7 @@
|
||||
From b34475b447c7e97fa9c4a854849f6e856fe59931 Mon Sep 17 00:00:00 2001
|
||||
From 3ff31acbe9b371f1b9247cc50e7751eaf98b4cef Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Tue, 23 Feb 2016 17:26:48 +0000
|
||||
Subject: [PATCH] amba_pl011: Don't use DT aliases for numbering
|
||||
Subject: [PATCH 034/703] amba_pl011: Don't use DT aliases for numbering
|
||||
|
||||
The pl011 driver looks for DT aliases of the form "serial<n>",
|
||||
and if found uses <n> as the device ID. This can cause
|
||||
@ -14,7 +14,7 @@ use the same logic.
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -2517,7 +2517,12 @@ static int pl011_setup_port(struct devic
|
||||
@@ -2578,7 +2578,12 @@ static int pl011_setup_port(struct devic
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0360d687752df3c5546dd1534904a6e0168b6360 Mon Sep 17 00:00:00 2001
|
||||
From 5f626b06eb9efa01ca364a60378b3998d12e2f99 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 1 Mar 2017 16:07:39 +0000
|
||||
Subject: [PATCH] amba_pl011: Round input clock up
|
||||
Subject: [PATCH 035/703] amba_pl011: Round input clock up
|
||||
|
||||
The UART clock is initialised to be as close to the requested
|
||||
frequency as possible without exceeding it. Now that there is a
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1651,6 +1651,23 @@ static void pl011_put_poll_char(struct u
|
||||
@@ -1652,6 +1652,23 @@ static void pl011_put_poll_char(struct u
|
||||
|
||||
#endif /* CONFIG_CONSOLE_POLL */
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_hwinit(struct uart_port *port)
|
||||
{
|
||||
struct uart_amba_port *uap =
|
||||
@@ -1667,7 +1684,7 @@ static int pl011_hwinit(struct uart_port
|
||||
@@ -1668,7 +1685,7 @@ static int pl011_hwinit(struct uart_port
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
/* Clear pending error and receive interrupts */
|
||||
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
|
||||
@@ -2321,7 +2338,7 @@ static int __init pl011_console_setup(st
|
||||
@@ -2324,7 +2341,7 @@ static int __init pl011_console_setup(st
|
||||
plat->init();
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
if (uap->vendor->fixed_options) {
|
||||
baud = uap->fixed_baud;
|
||||
@@ -2448,6 +2465,7 @@ static struct uart_driver amba_reg = {
|
||||
@@ -2509,6 +2526,7 @@ static struct uart_driver amba_reg = {
|
||||
.cons = AMBA_CONSOLE,
|
||||
};
|
||||
|
||||
@ -76,7 +76,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static int pl011_probe_dt_alias(int index, struct device *dev)
|
||||
{
|
||||
struct device_node *np;
|
||||
@@ -2479,6 +2497,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
@@ -2540,6 +2558,7 @@ static int pl011_probe_dt_alias(int inde
|
||||
|
||||
return ret;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
From 0ebd5e2c627c3c41a1081f6c1b7e7caa13e5b12e Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 29 Sep 2017 10:32:19 +0100
|
||||
Subject: [PATCH 036/703] amba_pl011: Insert mb() for correct FIFO handling
|
||||
|
||||
The pl011 register accessor functions use the _relaxed versions of the
|
||||
standard readl() and writel() functions, meaning that there are no
|
||||
automatic memory barriers. When polling a FIFO status register to check
|
||||
for fullness, it is necessary to ensure that any outstanding writes have
|
||||
completed; otherwise the flags are effectively stale, making it possible
|
||||
that the next write is to a full FIFO.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/tty/serial/amba-pl011.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -1385,6 +1385,7 @@ static bool pl011_tx_char(struct uart_am
|
||||
return false; /* unable to transmit character */
|
||||
|
||||
pl011_write(c, uap, REG_DR);
|
||||
+ mb();
|
||||
uap->port.icount.tx++;
|
||||
|
||||
return true;
|
@ -0,0 +1,47 @@
|
||||
From 9106531665bc17788096fcbc00dac3dd8a4ba2e8 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 29 Sep 2017 10:32:19 +0100
|
||||
Subject: [PATCH 037/703] amba_pl011: Add cts-event-workaround DT property
|
||||
|
||||
The BCM2835 PL011 implementation seems to have a bug that can lead to a
|
||||
transmission lockup if CTS changes frequently. A workaround was added to
|
||||
the driver with a vendor-specific flag to enable it, but this flag is
|
||||
currently not set for ARM implementations.
|
||||
|
||||
Add a "cts-event-workaround" property to Pi DTBs and use the presence
|
||||
of that property to force the flag to be enabled in the driver.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1280
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
Documentation/devicetree/bindings/serial/pl011.txt | 3 +++
|
||||
drivers/tty/serial/amba-pl011.c | 5 +++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
--- a/Documentation/devicetree/bindings/serial/pl011.txt
|
||||
+++ b/Documentation/devicetree/bindings/serial/pl011.txt
|
||||
@@ -35,6 +35,9 @@ Optional properties:
|
||||
- poll-timeout-ms:
|
||||
Poll timeout when auto-poll is set, default
|
||||
3000ms.
|
||||
+- cts-event-workaround:
|
||||
+ Enables the (otherwise vendor-specific) workaround for the
|
||||
+ CTS-induced TX lockup.
|
||||
|
||||
See also bindings/arm/primecell.txt
|
||||
|
||||
--- a/drivers/tty/serial/amba-pl011.c
|
||||
+++ b/drivers/tty/serial/amba-pl011.c
|
||||
@@ -2661,6 +2661,11 @@ static int pl011_probe(struct amba_devic
|
||||
if (IS_ERR(uap->clk))
|
||||
return PTR_ERR(uap->clk);
|
||||
|
||||
+ if (of_property_read_bool(dev->dev.of_node, "cts-event-workaround")) {
|
||||
+ vendor->cts_event_workaround = true;
|
||||
+ dev_info(&dev->dev, "cts_event_workaround enabled\n");
|
||||
+ }
|
||||
+
|
||||
uap->reg_offset = vendor->reg_offset;
|
||||
uap->vendor = vendor;
|
||||
uap->fifosize = vendor->get_fifosize(dev);
|
@ -1,7 +1,8 @@
|
||||
From ea9188a48450ddab740fe5ffe6733fb2362ea5c8 Mon Sep 17 00:00:00 2001
|
||||
From d52da4747de6ca008f86a73fbf153526c164c0ee Mon Sep 17 00:00:00 2001
|
||||
From: notro <notro@tronnes.org>
|
||||
Date: Thu, 10 Jul 2014 13:59:47 +0200
|
||||
Subject: [PATCH] pinctrl-bcm2835: Set base to 0 give expected gpio numbering
|
||||
Subject: [PATCH 038/703] pinctrl-bcm2835: Set base to 0 give expected gpio
|
||||
numbering
|
||||
|
||||
Signed-off-by: Noralf Tronnes <notro@tronnes.org>
|
||||
---
|
||||
@ -10,10 +11,10 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
|
||||
|
||||
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
|
||||
@@ -380,7 +380,7 @@ static struct gpio_chip bcm2835_gpio_chi
|
||||
@@ -352,7 +352,7 @@ static const struct gpio_chip bcm2835_gp
|
||||
.get_direction = bcm2835_gpio_get_direction,
|
||||
.get = bcm2835_gpio_get,
|
||||
.set = bcm2835_gpio_set,
|
||||
.to_irq = bcm2835_gpio_to_irq,
|
||||
- .base = -1,
|
||||
+ .base = 0,
|
||||
.ngpio = BCM2835_NUM_GPIOS,
|
@ -1,7 +1,7 @@
|
||||
From 9874eb6473865b9d975a7c3756099955e7454e21 Mon Sep 17 00:00:00 2001
|
||||
From 712b8ef1f284c70fc5612894c1a793c7d6b96eae Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Sun, 12 May 2013 12:24:19 +0100
|
||||
Subject: [PATCH] Main bcm2708/bcm2709 linux port
|
||||
Subject: [PATCH 039/703] Main bcm2708/bcm2709 linux port
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -23,17 +23,18 @@ The watchdog driver already has support for reboot/poweroff.
|
||||
Make use of this and remove the code from the platform files.
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
board_bcm2835: Remove coherent dma pool increase - API has gone
|
||||
---
|
||||
arch/arm/mach-bcm/Kconfig | 1 +
|
||||
arch/arm/mach-bcm/board_bcm2835.c | 17 +++++++++++++++++
|
||||
arch/arm/mm/proc-v6.S | 15 ++++++++++++---
|
||||
drivers/irqchip/irq-bcm2835.c | 7 ++++++-
|
||||
drivers/mailbox/bcm2835-mailbox.c | 18 ++++++++++++++++--
|
||||
5 files changed, 52 insertions(+), 6 deletions(-)
|
||||
4 files changed, 35 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/arch/arm/mach-bcm/Kconfig
|
||||
+++ b/arch/arm/mach-bcm/Kconfig
|
||||
@@ -155,6 +155,7 @@ config ARCH_BCM2835
|
||||
@@ -168,6 +168,7 @@ config ARCH_BCM2835
|
||||
select FIQ
|
||||
select PINCTRL
|
||||
select PINCTRL_BCM2835
|
||||
@ -41,56 +42,6 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
help
|
||||
This enables support for the Broadcom BCM2835 and BCM2836 SoCs.
|
||||
This SoC is used in the Raspberry Pi and Roku 2 devices.
|
||||
--- a/arch/arm/mach-bcm/board_bcm2835.c
|
||||
+++ b/arch/arm/mach-bcm/board_bcm2835.c
|
||||
@@ -16,17 +16,21 @@
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/clk/bcm2835.h>
|
||||
+#include <linux/broadcom/vc_cma.h>
|
||||
#include <asm/system_info.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
+#include <linux/dma-mapping.h>
|
||||
+
|
||||
static void __init bcm2835_init(void)
|
||||
{
|
||||
struct device_node *np = of_find_node_by_path("/system");
|
||||
u32 val;
|
||||
u64 val64;
|
||||
|
||||
+ vc_cma_early_init();
|
||||
bcm2835_init_clocks();
|
||||
|
||||
if (!of_property_read_u32(np, "linux,revision", &val))
|
||||
@@ -35,6 +39,17 @@ static void __init bcm2835_init(void)
|
||||
system_serial_low = val64;
|
||||
}
|
||||
|
||||
+static void __init bcm2835_init_early(void)
|
||||
+{
|
||||
+ /* dwc_otg needs this for bounce buffers on non-aligned transfers */
|
||||
+ init_dma_coherent_pool_size(SZ_1M);
|
||||
+}
|
||||
+
|
||||
+static void __init bcm2835_board_reserve(void)
|
||||
+{
|
||||
+ vc_cma_reserve();
|
||||
+}
|
||||
+
|
||||
static const char * const bcm2835_compat[] = {
|
||||
#ifdef CONFIG_ARCH_MULTI_V6
|
||||
"brcm,bcm2835",
|
||||
@@ -47,5 +62,7 @@ static const char * const bcm2835_compat
|
||||
|
||||
DT_MACHINE_START(BCM2835, "BCM2835")
|
||||
.init_machine = bcm2835_init,
|
||||
+ .reserve = bcm2835_board_reserve,
|
||||
+ .init_early = bcm2835_init_early,
|
||||
.dt_compat = bcm2835_compat
|
||||
MACHINE_END
|
||||
--- a/arch/arm/mm/proc-v6.S
|
||||
+++ b/arch/arm/mm/proc-v6.S
|
||||
@@ -73,10 +73,19 @@ ENDPROC(cpu_v6_reset)
|
||||
@ -118,8 +69,8 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
ENTRY(cpu_v6_dcache_clean_area)
|
||||
--- a/drivers/irqchip/irq-bcm2835.c
|
||||
+++ b/drivers/irqchip/irq-bcm2835.c
|
||||
@@ -54,7 +54,9 @@
|
||||
#include <linux/regmap.h>
|
||||
@@ -52,7 +52,9 @@
|
||||
#include <linux/irqdomain.h>
|
||||
|
||||
#include <asm/exception.h>
|
||||
+#ifndef CONFIG_ARM64
|
||||
@ -128,7 +79,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
/* Put the bank and irq (32 bits) into the hwirq */
|
||||
#define MAKE_HWIRQ(b, n) (((b) << 5) | (n))
|
||||
@@ -82,6 +84,7 @@
|
||||
@@ -80,6 +82,7 @@
|
||||
#define NR_BANKS 3
|
||||
#define IRQS_PER_BANK 32
|
||||
#define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0)
|
||||
@ -136,7 +87,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
#define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0))
|
||||
|
||||
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
|
||||
@@ -256,10 +259,12 @@ static int __init armctrl_of_init(struct
|
||||
@@ -247,10 +250,12 @@ static int __init armctrl_of_init(struct
|
||||
MAKE_HWIRQ(b, i) + NUMBER_IRQS);
|
||||
BUG_ON(irq <= 0);
|
||||
irq_set_chip(irq, &armctrl_chip);
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
From cca69d888eb770c496cca83d37accb62a22e84c7 Mon Sep 17 00:00:00 2001
|
||||
From a79eeea4c9cecd4770ee03ba8444c01cea34b3c1 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 17 Jun 2015 17:06:34 +0100
|
||||
Subject: [PATCH] bcm2708 framebuffer driver
|
||||
Subject: [PATCH 041/703] bcm2708 framebuffer driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -74,17 +74,26 @@ Add bcm2708-fb to Device Tree and don't add the
|
||||
platform device when booting in DT mode.
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
Cleanup of bcm2708_fb file to kernel coding standards
|
||||
|
||||
Some minor change to function - remove a use of
|
||||
in_atomic, plus replacing various debug messages
|
||||
that manually specify the function name with
|
||||
("%s",.__func__)
|
||||
|
||||
Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
|
||||
---
|
||||
drivers/video/fbdev/Kconfig | 14 +
|
||||
drivers/video/fbdev/Makefile | 1 +
|
||||
drivers/video/fbdev/bcm2708_fb.c | 844 ++++++++++
|
||||
drivers/video/logo/logo_linux_clut224.ppm | 2483 ++++++++++-------------------
|
||||
4 files changed, 1740 insertions(+), 1602 deletions(-)
|
||||
drivers/video/fbdev/bcm2708_fb.c | 864 +++++++
|
||||
drivers/video/logo/logo_linux_clut224.ppm | 2483 ++++++++-------------
|
||||
4 files changed, 1760 insertions(+), 1602 deletions(-)
|
||||
create mode 100644 drivers/video/fbdev/bcm2708_fb.c
|
||||
|
||||
--- a/drivers/video/fbdev/Kconfig
|
||||
+++ b/drivers/video/fbdev/Kconfig
|
||||
@@ -228,6 +228,20 @@ config FB_TILEBLITTING
|
||||
@@ -236,6 +236,20 @@ config FB_TILEBLITTING
|
||||
comment "Frame buffer hardware drivers"
|
||||
depends on FB
|
||||
|
||||
@ -107,7 +116,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
depends on FB && SPARC
|
||||
--- a/drivers/video/fbdev/Makefile
|
||||
+++ b/drivers/video/fbdev/Makefile
|
||||
@@ -10,6 +10,7 @@ obj-$(CONFIG_FB_MACMODES) += macmod
|
||||
@@ -11,6 +11,7 @@ obj-$(CONFIG_FB_MACMODES) += macmod
|
||||
obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o
|
||||
|
||||
# Hardware specific drivers go first
|
||||
@ -117,7 +126,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/video/fbdev/bcm2708_fb.c
|
||||
@@ -0,0 +1,844 @@
|
||||
@@ -0,0 +1,864 @@
|
||||
+/*
|
||||
+ * linux/drivers/video/bcm2708_fb.c
|
||||
+ *
|
||||
@ -159,9 +168,10 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+#define MODULE_NAME "bcm2708_fb"
|
||||
+
|
||||
+#ifdef BCM2708_FB_DEBUG
|
||||
+#define print_debug(fmt,...) pr_debug("%s:%s:%d: "fmt, MODULE_NAME, __func__, __LINE__, ##__VA_ARGS__)
|
||||
+#define print_debug(fmt, ...) pr_debug("%s:%s:%d: "fmt, \
|
||||
+ MODULE_NAME, __func__, __LINE__, ##__VA_ARGS__)
|
||||
+#else
|
||||
+#define print_debug(fmt,...)
|
||||
+#define print_debug(fmt, ...)
|
||||
+#endif
|
||||
+
|
||||
+/* This is limited to 16 characters when displayed by X startup */
|
||||
@ -169,10 +179,10 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+
|
||||
+#define DRIVER_NAME "bcm2708_fb"
|
||||
+
|
||||
+static int fbwidth = 800; /* module parameter */
|
||||
+static int fbheight = 480; /* module parameter */
|
||||
+static int fbdepth = 32; /* module parameter */
|
||||
+static int fbswap = 0; /* module parameter */
|
||||
+static int fbwidth = 800; /* module parameter */
|
||||
+static int fbheight = 480; /* module parameter */
|
||||
+static int fbdepth = 32; /* module parameter */
|
||||
+static int fbswap; /* module parameter */
|
||||
+
|
||||
+static u32 dma_busy_wait_threshold = 1<<15;
|
||||
+module_param(dma_busy_wait_threshold, int, 0644);
|
||||
@ -338,11 +348,13 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ struct fb_info *info)
|
||||
+{
|
||||
+ /* info input, var output */
|
||||
+ print_debug("bcm2708_fb_check_var info(%p) %dx%d (%dx%d), %d, %d\n", info,
|
||||
+ print_debug("%s(%p) %dx%d (%dx%d), %d, %d\n",
|
||||
+ __func__,
|
||||
+ info,
|
||||
+ info->var.xres, info->var.yres, info->var.xres_virtual,
|
||||
+ info->var.yres_virtual, (int)info->screen_size,
|
||||
+ info->var.bits_per_pixel);
|
||||
+ print_debug("bcm2708_fb_check_var var(%p) %dx%d (%dx%d), %d\n", var,
|
||||
+ print_debug("%s(%p) %dx%d (%dx%d), %d\n", __func__, var,
|
||||
+ var->xres, var->yres, var->xres_virtual, var->yres_virtual,
|
||||
+ var->bits_per_pixel);
|
||||
+
|
||||
@ -350,7 +362,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ var->bits_per_pixel = 16;
|
||||
+
|
||||
+ if (bcm2708_fb_set_bitfields(var) != 0) {
|
||||
+ pr_err("bcm2708_fb_check_var: invalid bits_per_pixel %d\n",
|
||||
+ pr_err("%s: invalid bits_per_pixel %d\n", __func__,
|
||||
+ var->bits_per_pixel);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
@ -362,9 +374,8 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ if (var->yres_virtual == -1) {
|
||||
+ var->yres_virtual = 480;
|
||||
+
|
||||
+ pr_err
|
||||
+ ("bcm2708_fb_check_var: virtual resolution set to maximum of %dx%d\n",
|
||||
+ var->xres_virtual, var->yres_virtual);
|
||||
+ pr_err("%s: virtual resolution set to maximum of %dx%d\n",
|
||||
+ __func__, var->xres_virtual, var->yres_virtual);
|
||||
+ }
|
||||
+ if (var->yres_virtual < var->yres)
|
||||
+ var->yres_virtual = var->yres;
|
||||
@ -408,7 +419,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ };
|
||||
+ int ret;
|
||||
+
|
||||
+ print_debug("bcm2708_fb_set_par info(%p) %dx%d (%dx%d), %d, %d\n", info,
|
||||
+ print_debug("%s(%p) %dx%d (%dx%d), %d, %d\n", __func__, info,
|
||||
+ info->var.xres, info->var.yres, info->var.xres_virtual,
|
||||
+ info->var.yres_virtual, (int)info->screen_size,
|
||||
+ info->var.bits_per_pixel);
|
||||
@ -443,11 +454,12 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ print_debug
|
||||
+ ("BCM2708FB: start = %p,%p width=%d, height=%d, bpp=%d, pitch=%d size=%d\n",
|
||||
+ (void *)fb->fb.screen_base, (void *)fb->fb_bus_address,
|
||||
+ fbinfo.xres, fbinfo.yres, fbinfo.bpp,
|
||||
+ fbinfo.pitch, (int)fb->fb.screen_size);
|
||||
+ print_debug(
|
||||
+ "%s: start = %p,%p width=%d, height=%d, bpp=%d, pitch=%d size=%d\n",
|
||||
+ __func__,
|
||||
+ (void *)fb->fb.screen_base, (void *)fb->fb_bus_address,
|
||||
+ fbinfo.xres, fbinfo.yres, fbinfo.bpp,
|
||||
+ fbinfo.pitch, (int)fb->fb.screen_size);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
@ -466,7 +478,6 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+{
|
||||
+ struct bcm2708_fb *fb = to_bcm2708(info);
|
||||
+
|
||||
+ /*print_debug("BCM2708FB: setcolreg %d:(%02x,%02x,%02x,%02x) %x\n", regno, red, green, blue, transp, fb->fb.fix.visual);*/
|
||||
+ if (fb->fb.var.bits_per_pixel <= 8) {
|
||||
+ if (regno < 256) {
|
||||
+ /* blue [23:16], green [15:8], red [7:0] */
|
||||
@ -474,8 +485,12 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ ((green >> 8) & 0xff) << 8 |
|
||||
+ ((blue >> 8) & 0xff) << 16;
|
||||
+ }
|
||||
+ /* Hack: we need to tell GPU the palette has changed, but currently bcm2708_fb_set_par takes noticable time when called for every (256) colour */
|
||||
+ /* So just call it for what looks like the last colour in a list for now. */
|
||||
+ /* Hack: we need to tell GPU the palette has changed, but
|
||||
+ * currently bcm2708_fb_set_par takes noticeable time when
|
||||
+ * called for every (256) colour
|
||||
+ * So just call it for what looks like the last colour in a
|
||||
+ * list for now.
|
||||
+ */
|
||||
+ if (regno == 15 || regno == 255) {
|
||||
+ struct packet {
|
||||
+ u32 offset;
|
||||
@ -489,19 +504,23 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ return -ENOMEM;
|
||||
+ packet->offset = 0;
|
||||
+ packet->length = regno + 1;
|
||||
+ memcpy(packet->cmap, fb->gpu_cmap, sizeof(packet->cmap));
|
||||
+ ret = rpi_firmware_property(fb->fw, RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE,
|
||||
+ packet, (2 + packet->length) * sizeof(u32));
|
||||
+ memcpy(packet->cmap, fb->gpu_cmap,
|
||||
+ sizeof(packet->cmap));
|
||||
+ ret = rpi_firmware_property(fb->fw,
|
||||
+ RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE,
|
||||
+ packet,
|
||||
+ (2 + packet->length) * sizeof(u32));
|
||||
+ if (ret || packet->offset)
|
||||
+ dev_err(info->device, "Failed to set palette (%d,%u)\n",
|
||||
+ dev_err(info->device,
|
||||
+ "Failed to set palette (%d,%u)\n",
|
||||
+ ret, packet->offset);
|
||||
+ kfree(packet);
|
||||
+ }
|
||||
+ } else if (regno < 16) {
|
||||
+ } else if (regno < 16) {
|
||||
+ fb->cmap[regno] = convert_bitfield(transp, &fb->fb.var.transp) |
|
||||
+ convert_bitfield(blue, &fb->fb.var.blue) |
|
||||
+ convert_bitfield(green, &fb->fb.var.green) |
|
||||
+ convert_bitfield(red, &fb->fb.var.red);
|
||||
+ convert_bitfield(blue, &fb->fb.var.blue) |
|
||||
+ convert_bitfield(green, &fb->fb.var.green) |
|
||||
+ convert_bitfield(red, &fb->fb.var.red);
|
||||
+ }
|
||||
+ return regno > 255;
|
||||
+}
|
||||
@ -529,20 +548,23 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ ret = rpi_firmware_property(fb->fw, RPI_FIRMWARE_FRAMEBUFFER_BLANK,
|
||||
+ &value, sizeof(value));
|
||||
+ if (ret)
|
||||
+ dev_err(info->device, "bcm2708_fb_blank(%d) failed: %d\n",
|
||||
+ dev_err(info->device, "%s(%d) failed: %d\n", __func__,
|
||||
+ blank_mode, ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int bcm2708_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||
+static int bcm2708_fb_pan_display(struct fb_var_screeninfo *var,
|
||||
+ struct fb_info *info)
|
||||
+{
|
||||
+ s32 result;
|
||||
+
|
||||
+ info->var.xoffset = var->xoffset;
|
||||
+ info->var.yoffset = var->yoffset;
|
||||
+ result = bcm2708_fb_set_par(info);
|
||||
+ if (result != 0)
|
||||
+ pr_err("bcm2708_fb_pan_display(%d,%d) returns=%d\n", var->xoffset, var->yoffset, result);
|
||||
+ pr_err("%s(%d,%d) returns=%d\n", __func__,
|
||||
+ var->xoffset, var->yoffset, result);
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
@ -607,13 +629,13 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ struct bcm2708_fb *fb = to_bcm2708(info);
|
||||
+ struct bcm2708_dma_cb *cb = fb->cb_base;
|
||||
+ int bytes_per_pixel = (info->var.bits_per_pixel + 7) >> 3;
|
||||
+
|
||||
+ /* Channel 0 supports larger bursts and is a bit faster */
|
||||
+ int burst_size = (fb->dma_chan == 0) ? 8 : 2;
|
||||
+ int pixels = region->width * region->height;
|
||||
+
|
||||
+ /* Fallback to cfb_copyarea() if we don't like something */
|
||||
+ if (in_atomic() ||
|
||||
+ bytes_per_pixel > 4 ||
|
||||
+ if (bytes_per_pixel > 4 ||
|
||||
+ info->var.xres * info->var.yres > 1920 * 1200 ||
|
||||
+ region->width <= 0 || region->width > info->var.xres ||
|
||||
+ region->height <= 0 || region->height > info->var.yres ||
|
||||
@ -677,6 +699,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ } else {
|
||||
+ /* A single dma control block is enough. */
|
||||
+ int sy, dy, stride;
|
||||
+
|
||||
+ if (region->dy <= region->sy) {
|
||||
+ /* processing from top to bottom */
|
||||
+ dy = region->dy;
|
||||
@ -708,6 +731,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ bcm_dma_wait_idle(fb->dma_chan_base);
|
||||
+ } else {
|
||||
+ void __iomem *dma_chan = fb->dma_chan_base;
|
||||
+
|
||||
+ cb->info |= BCM2708_DMA_INT_EN;
|
||||
+ bcm_dma_start(fb->dma_chan_base, fb->cb_handle);
|
||||
+ while (bcm_dma_is_busy(dma_chan)) {
|
||||
@ -805,8 +829,8 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n", fbwidth,
|
||||
+ fbheight, fbdepth, fbswap);
|
||||
+ print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n",
|
||||
+ fbwidth, fbheight, fbdepth, fbswap);
|
||||
+
|
||||
+ ret = register_framebuffer(&fb->fb);
|
||||
+ print_debug("BCM2708FB: register framebuffer (%d)\n", ret);
|
||||
@ -827,19 +851,17 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+
|
||||
+ fw_np = of_parse_phandle(dev->dev.of_node, "firmware", 0);
|
||||
+/* Remove comment when booting without Device Tree is no longer supported
|
||||
+ if (!fw_np) {
|
||||
+ dev_err(&dev->dev, "Missing firmware node\n");
|
||||
+ return -ENOENT;
|
||||
+ }
|
||||
+*/
|
||||
+ * if (!fw_np) {
|
||||
+ * dev_err(&dev->dev, "Missing firmware node\n");
|
||||
+ * return -ENOENT;
|
||||
+ * }
|
||||
+ */
|
||||
+ fw = rpi_firmware_get(fw_np);
|
||||
+ if (!fw)
|
||||
+ return -EPROBE_DEFER;
|
||||
+
|
||||
+ fb = kzalloc(sizeof(struct bcm2708_fb), GFP_KERNEL);
|
||||
+ if (!fb) {
|
||||
+ dev_err(&dev->dev,
|
||||
+ "could not allocate new bcm2708_fb struct\n");
|
||||
+ ret = -ENOMEM;
|
||||
+ goto free_region;
|
||||
+ }
|
||||
@ -880,6 +902,13 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ fb->dev = dev;
|
||||
+ fb->fb.device = &dev->dev;
|
||||
+
|
||||
+ /* failure here isn't fatal, but we'll fail in vc_mem_copy if
|
||||
+ * fb->gpu is not valid
|
||||
+ */
|
||||
+ rpi_firmware_property(fb->fw,
|
||||
+ RPI_FIRMWARE_GET_VC_MEMORY,
|
||||
+ &fb->gpu, sizeof(fb->gpu));
|
||||
+
|
||||
+ ret = bcm2708_fb_register(fb);
|
||||
+ if (ret == 0) {
|
||||
+ platform_set_drvdata(dev, fb);
|
@ -1,7 +1,7 @@
|
||||
From fead9bc9e55df547b54a9cd55d932b209090cfeb Mon Sep 17 00:00:00 2001
|
||||
From a1e59cb06aaa97771f2d39777017f8de6f237507 Mon Sep 17 00:00:00 2001
|
||||
From: Harm Hanemaaijer <fgenfb@yahoo.com>
|
||||
Date: Thu, 20 Jun 2013 20:21:39 +0200
|
||||
Subject: [PATCH] Speed up console framebuffer imageblit function
|
||||
Subject: [PATCH 042/703] Speed up console framebuffer imageblit function
|
||||
|
||||
Especially on platforms with a slower CPU but a relatively high
|
||||
framebuffer fill bandwidth, like current ARM devices, the existing
|
||||
@ -29,7 +29,7 @@ the greater benefit for 32bpp.
|
||||
|
||||
Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
|
||||
---
|
||||
drivers/video/fbdev/core/cfbimgblt.c | 152 +++++++++++++++++++++++++++++++++--
|
||||
drivers/video/fbdev/core/cfbimgblt.c | 152 ++++++++++++++++++++++++++-
|
||||
1 file changed, 147 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/video/fbdev/core/cfbimgblt.c
|
@ -1,7 +1,7 @@
|
||||
From 33444cee555204ee605e6ec9050b04e874fb0090 Mon Sep 17 00:00:00 2001
|
||||
From 3b7f7192307a3cc84215a42c42065758dd638986 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Meier <florian.meier@koalo.de>
|
||||
Date: Fri, 22 Nov 2013 14:22:53 +0100
|
||||
Subject: [PATCH] dmaengine: Add support for BCM2708
|
||||
Subject: [PATCH 043/703] dmaengine: Add support for BCM2708
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -150,18 +150,35 @@ but we still need the legacy DMA API.
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
bcm2708-dmaengine - Fix arm64 portability/build issues
|
||||
|
||||
dma-bcm2708: Fix module compilation of CONFIG_DMA_BCM2708
|
||||
|
||||
bcm2708-dmaengine.c defines functions like bcm_dma_start which are
|
||||
defined as well in dma-bcm2708.h as inline versions when
|
||||
CONFIG_DMA_BCM2708 is not defined. This works fine when
|
||||
CONFIG_DMA_BCM2708 is built in, but when it is selected as module build
|
||||
fails with redefinition errors because in the build system when
|
||||
CONFIG_DMA_BCM2708 is selected as module, the macro becomes
|
||||
CONFIG_DMA_BCM2708_MODULE.
|
||||
|
||||
This patch makes the header use CONFIG_DMA_BCM2708_MODULE too when
|
||||
available.
|
||||
|
||||
Fixes https://github.com/raspberrypi/linux/issues/2056
|
||||
|
||||
Signed-off-by: Andrei Gherzan <andrei@gherzan.com>
|
||||
---
|
||||
drivers/dma/Kconfig | 6 +-
|
||||
drivers/dma/Makefile | 1 +
|
||||
drivers/dma/bcm2708-dmaengine.c | 281 ++++++++++++++++++++++++++++++
|
||||
include/linux/platform_data/dma-bcm2708.h | 143 +++++++++++++++
|
||||
drivers/dma/bcm2708-dmaengine.c | 281 ++++++++++++++++++++++
|
||||
include/linux/platform_data/dma-bcm2708.h | 143 +++++++++++
|
||||
4 files changed, 430 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/dma/bcm2708-dmaengine.c
|
||||
create mode 100644 include/linux/platform_data/dma-bcm2708.h
|
||||
|
||||
--- a/drivers/dma/Kconfig
|
||||
+++ b/drivers/dma/Kconfig
|
||||
@@ -108,7 +108,7 @@ config COH901318
|
||||
@@ -131,7 +131,7 @@ config COH901318
|
||||
|
||||
config DMA_BCM2835
|
||||
tristate "BCM2835 DMA engine support"
|
||||
@ -170,7 +187,7 @@ bcm2708-dmaengine - Fix arm64 portability/build issues
|
||||
select DMA_ENGINE
|
||||
select DMA_VIRTUAL_CHANNELS
|
||||
|
||||
@@ -499,6 +499,10 @@ config TIMB_DMA
|
||||
@@ -576,6 +576,10 @@ config TIMB_DMA
|
||||
help
|
||||
Enable support for the Timberdale FPGA DMA engine.
|
||||
|
||||
@ -178,14 +195,14 @@ bcm2708-dmaengine - Fix arm64 portability/build issues
|
||||
+ tristate "BCM2708 DMA legacy API support"
|
||||
+ depends on DMA_BCM2835
|
||||
+
|
||||
config TI_CPPI41
|
||||
tristate "AM33xx CPPI41 DMA support"
|
||||
depends on ARCH_OMAP
|
||||
config XGENE_DMA
|
||||
tristate "APM X-Gene DMA support"
|
||||
depends on ARCH_XGENE || COMPILE_TEST
|
||||
--- a/drivers/dma/Makefile
|
||||
+++ b/drivers/dma/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
|
||||
obj-$(CONFIG_AT_XDMAC) += at_xdmac.o
|
||||
@@ -21,6 +21,7 @@ obj-$(CONFIG_AT_XDMAC) += at_xdmac.o
|
||||
obj-$(CONFIG_AXI_DMAC) += dma-axi-dmac.o
|
||||
obj-$(CONFIG_BCM_SBA_RAID) += bcm-sba-raid.o
|
||||
obj-$(CONFIG_COH901318) += coh901318.o coh901318_lli.o
|
||||
+obj-$(CONFIG_DMA_BCM2708) += bcm2708-dmaengine.o
|
||||
obj-$(CONFIG_DMA_BCM2835) += bcm2835-dma.o
|
||||
@ -555,7 +572,7 @@ bcm2708-dmaengine - Fix arm64 portability/build issues
|
||||
+struct scatterlist;
|
||||
+struct platform_device;
|
||||
+
|
||||
+#ifdef CONFIG_DMA_BCM2708
|
||||
+#if defined(CONFIG_DMA_BCM2708) || defined(CONFIG_DMA_BCM2708_MODULE)
|
||||
+
|
||||
+int bcm_sg_suitable_for_dma(struct scatterlist *sg_ptr, int sg_len);
|
||||
+void bcm_dma_start(void __iomem *dma_chan_base, dma_addr_t control_block);
|
||||
@ -618,6 +635,6 @@ bcm2708-dmaengine - Fix arm64 portability/build issues
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#endif /* CONFIG_DMA_BCM2708 */
|
||||
+#endif /* CONFIG_DMA_BCM2708 || CONFIG_DMA_BCM2708_MODULE */
|
||||
+
|
||||
+#endif /* _PLAT_BCM2708_DMA_H */
|
@ -1,7 +1,7 @@
|
||||
From 1620619c5fa6acae1e119d6461b5c9a2a9416e69 Mon Sep 17 00:00:00 2001
|
||||
From c34520567bf3dbca64cb871dacab7230c61726f6 Mon Sep 17 00:00:00 2001
|
||||
From: gellert <gellert@raspberrypi.org>
|
||||
Date: Fri, 15 Aug 2014 16:35:06 +0100
|
||||
Subject: [PATCH] MMC: added alternative MMC driver
|
||||
Subject: [PATCH 044/703] MMC: added alternative MMC driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -82,47 +82,162 @@ doesn't need to claim two channels.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1327
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
bcm2835-mmc: New timer API
|
||||
|
||||
mmc: bcm2835-mmc: Support underclocking
|
||||
|
||||
Support underclocking of the SD bus using the max-frequency DT property
|
||||
(which currently has no DT parameter). The sd_overclock parameter
|
||||
already provides another way to achieve the same thing which should be
|
||||
equivalent in end result, but it is a bug not to support max-frequency
|
||||
as well.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/2350
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/mmc/core/quirks.c | 10 +
|
||||
drivers/mmc/core/block.c | 28 +-
|
||||
drivers/mmc/core/core.c | 3 +-
|
||||
drivers/mmc/core/host.c | 17 +-
|
||||
drivers/mmc/core/quirks.h | 8 +
|
||||
drivers/mmc/host/Kconfig | 29 +
|
||||
drivers/mmc/host/Makefile | 1 +
|
||||
drivers/mmc/host/bcm2835-mmc.c | 1574 ++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 1614 insertions(+)
|
||||
drivers/mmc/host/bcm2835-mmc.c | 1582 ++++++++++++++++++++++++++++++++
|
||||
include/linux/mmc/card.h | 2 +
|
||||
8 files changed, 1665 insertions(+), 5 deletions(-)
|
||||
create mode 100644 drivers/mmc/host/bcm2835-mmc.c
|
||||
|
||||
--- a/drivers/mmc/core/quirks.c
|
||||
+++ b/drivers/mmc/core/quirks.c
|
||||
@@ -53,6 +53,9 @@ static const struct mmc_fixup mmc_fixup_
|
||||
--- a/drivers/mmc/core/block.c
|
||||
+++ b/drivers/mmc/core/block.c
|
||||
@@ -167,6 +167,13 @@ static DEFINE_MUTEX(open_lock);
|
||||
module_param(perdev_minors, int, 0444);
|
||||
MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device");
|
||||
|
||||
void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table)
|
||||
+/*
|
||||
+ * Allow quirks to be overridden for the current card
|
||||
+ */
|
||||
+static char *card_quirks;
|
||||
+module_param(card_quirks, charp, 0644);
|
||||
+MODULE_PARM_DESC(card_quirks, "Force the use of the indicated quirks (a bitfield)");
|
||||
+
|
||||
static inline int mmc_blk_part_switch(struct mmc_card *card,
|
||||
unsigned int part_type);
|
||||
|
||||
@@ -2919,6 +2926,7 @@ static int mmc_blk_probe(struct mmc_card
|
||||
{
|
||||
+#ifdef CONFIG_MMC_BCM2835
|
||||
+ extern unsigned mmc_debug;
|
||||
+#endif
|
||||
const struct mmc_fixup *f;
|
||||
u64 rev = cid_rev_card(card);
|
||||
struct mmc_blk_data *md, *part_md;
|
||||
char cap_str[10];
|
||||
+ char quirk_str[24];
|
||||
|
||||
@@ -79,5 +82,12 @@ void mmc_fixup_device(struct mmc_card *c
|
||||
f->vendor_fixup(card, f->data);
|
||||
}
|
||||
}
|
||||
+ /* SDHCI on BCM2708 - bug causes a certain sequence of CMD23 operations to fail.
|
||||
+ * Disable this flag for all cards (fall-back to CMD25/CMD18 multi-block transfers).
|
||||
+ */
|
||||
+#ifdef CONFIG_MMC_BCM2835
|
||||
+ if (mmc_debug & (1<<13))
|
||||
+ card->quirks |= MMC_QUIRK_BLK_NO_CMD23;
|
||||
+#endif
|
||||
/*
|
||||
* Check that the card supports the command class(es) we need.
|
||||
@@ -2926,7 +2934,16 @@ static int mmc_blk_probe(struct mmc_card
|
||||
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||
return -ENODEV;
|
||||
|
||||
- mmc_fixup_device(card, mmc_blk_fixups);
|
||||
+ if (card_quirks) {
|
||||
+ unsigned long quirks;
|
||||
+ if (kstrtoul(card_quirks, 0, &quirks) == 0)
|
||||
+ card->quirks = (unsigned int)quirks;
|
||||
+ else
|
||||
+ pr_err("mmc_block: Invalid card_quirks parameter '%s'\n",
|
||||
+ card_quirks);
|
||||
+ }
|
||||
+ else
|
||||
+ mmc_fixup_device(card, mmc_blk_fixups);
|
||||
|
||||
card->complete_wq = alloc_workqueue("mmc_complete",
|
||||
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
|
||||
@@ -2941,9 +2958,14 @@ static int mmc_blk_probe(struct mmc_card
|
||||
|
||||
string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2,
|
||||
cap_str, sizeof(cap_str));
|
||||
- pr_info("%s: %s %s %s %s\n",
|
||||
+ if (card->quirks)
|
||||
+ snprintf(quirk_str, sizeof(quirk_str),
|
||||
+ " (quirks 0x%08x)", card->quirks);
|
||||
+ else
|
||||
+ quirk_str[0] = '\0';
|
||||
+ pr_info("%s: %s %s %s%s%s\n",
|
||||
md->disk->disk_name, mmc_card_id(card), mmc_card_name(card),
|
||||
- cap_str, md->read_only ? "(ro)" : "");
|
||||
+ cap_str, md->read_only ? " (ro)" : "", quirk_str);
|
||||
|
||||
if (mmc_blk_alloc_parts(card, md))
|
||||
goto out;
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -2230,7 +2230,8 @@ EXPORT_SYMBOL(mmc_erase);
|
||||
int mmc_can_erase(struct mmc_card *card)
|
||||
{
|
||||
if ((card->host->caps & MMC_CAP_ERASE) &&
|
||||
- (card->csd.cmdclass & CCC_ERASE) && card->erase_size)
|
||||
+ (card->csd.cmdclass & CCC_ERASE) && card->erase_size &&
|
||||
+ !(card->quirks & MMC_QUIRK_ERASE_BROKEN))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(mmc_fixup_device);
|
||||
--- a/drivers/mmc/core/host.c
|
||||
+++ b/drivers/mmc/core/host.c
|
||||
@@ -359,15 +359,30 @@ struct mmc_host *mmc_alloc_host(int extr
|
||||
{
|
||||
int err;
|
||||
struct mmc_host *host;
|
||||
+ int id;
|
||||
|
||||
host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL);
|
||||
if (!host)
|
||||
return NULL;
|
||||
|
||||
+ /* If OF aliases exist, start dynamic assignment after highest */
|
||||
+ id = of_alias_get_highest_id("mmc");
|
||||
+ id = (id < 0) ? 0 : id + 1;
|
||||
+
|
||||
+ /* If this devices has OF node, maybe it has an alias */
|
||||
+ if (dev->of_node) {
|
||||
+ int of_id = of_alias_get_id(dev->of_node, "mmc");
|
||||
+
|
||||
+ if (of_id < 0)
|
||||
+ dev_warn(dev, "/aliases ID not available\n");
|
||||
+ else
|
||||
+ id = of_id;
|
||||
+ }
|
||||
+
|
||||
/* scanning will be enabled when we're ready */
|
||||
host->rescan_disable = 1;
|
||||
|
||||
- err = ida_simple_get(&mmc_host_ida, 0, 0, GFP_KERNEL);
|
||||
+ err = ida_simple_get(&mmc_host_ida, id, 0, GFP_KERNEL);
|
||||
if (err < 0) {
|
||||
kfree(host);
|
||||
return NULL;
|
||||
--- a/drivers/mmc/core/quirks.h
|
||||
+++ b/drivers/mmc/core/quirks.h
|
||||
@@ -99,6 +99,14 @@ static const struct mmc_fixup mmc_blk_fi
|
||||
MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
|
||||
MMC_QUIRK_TRIM_BROKEN),
|
||||
|
||||
+ /*
|
||||
+ * On some Kingston SD cards, multiple erases of less than 64
|
||||
+ * sectors can cause corruption.
|
||||
+ */
|
||||
+ MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
|
||||
+ MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
|
||||
+ MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
|
||||
+
|
||||
END_FIXUP
|
||||
};
|
||||
|
||||
--- a/drivers/mmc/host/Kconfig
|
||||
+++ b/drivers/mmc/host/Kconfig
|
||||
@@ -4,6 +4,35 @@
|
||||
|
||||
comment "MMC/SD/SDIO Host Controller Drivers"
|
||||
|
||||
+config MMC_BCM2835
|
||||
+config MMC_BCM2835_MMC
|
||||
+ tristate "MMC support on BCM2835"
|
||||
+ depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835
|
||||
+ help
|
||||
@ -134,7 +249,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+config MMC_BCM2835_DMA
|
||||
+ bool "DMA support on BCM2835 Arasan controller"
|
||||
+ depends on MMC_BCM2835
|
||||
+ depends on MMC_BCM2835_MMC
|
||||
+ help
|
||||
+ Enable DMA support on the Arasan SDHCI controller in Broadcom 2708
|
||||
+ based chips.
|
||||
@ -143,7 +258,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+config MMC_BCM2835_PIO_DMA_BARRIER
|
||||
+ int "Block count limit for PIO transfers"
|
||||
+ depends on MMC_BCM2835 && MMC_BCM2835_DMA
|
||||
+ depends on MMC_BCM2835_MMC && MMC_BCM2835_DMA
|
||||
+ range 0 256
|
||||
+ default 2
|
||||
+ help
|
||||
@ -151,22 +266,22 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ If unsure, say 2 here.
|
||||
+
|
||||
config MMC_ARMMMCI
|
||||
tristate "ARM AMBA Multimedia Card Interface support"
|
||||
depends on ARM_AMBA
|
||||
config MMC_DEBUG
|
||||
bool "MMC host drivers debugging"
|
||||
depends on MMC != n
|
||||
--- a/drivers/mmc/host/Makefile
|
||||
+++ b/drivers/mmc/host/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c
|
||||
@@ -21,6 +21,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c
|
||||
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
|
||||
obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o
|
||||
obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o
|
||||
+obj-$(CONFIG_MMC_BCM2835) += bcm2835-mmc.o
|
||||
+obj-$(CONFIG_MMC_BCM2835_MMC) += bcm2835-mmc.o
|
||||
obj-$(CONFIG_MMC_WBSD) += wbsd.o
|
||||
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
|
||||
obj-$(CONFIG_MMC_MTK) += mtk-sd.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/mmc/host/bcm2835-mmc.c
|
||||
@@ -0,0 +1,1574 @@
|
||||
@@ -0,0 +1,1582 @@
|
||||
+/*
|
||||
+ * BCM2835 MMC host driver.
|
||||
+ *
|
||||
@ -284,6 +399,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ bool have_dma;
|
||||
+ bool use_dma;
|
||||
+ bool wait_for_dma;
|
||||
+ /*end of DMA part*/
|
||||
+
|
||||
+ int max_delay; /* maximum length of time spent waiting */
|
||||
@ -419,7 +535,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ bcm2835_mmc_readl(host, SDHCI_INT_ENABLE),
|
||||
+ bcm2835_mmc_readl(host, SDHCI_SIGNAL_ENABLE));
|
||||
+ pr_debug(DRIVER_NAME ": AC12 err: 0x%08x | Slot int: 0x%08x\n",
|
||||
+ bcm2835_mmc_readw(host, SDHCI_ACMD12_ERR),
|
||||
+ bcm2835_mmc_readw(host, SDHCI_AUTO_CMD_STATUS),
|
||||
+ bcm2835_mmc_readw(host, SDHCI_SLOT_INT_STATUS));
|
||||
+ pr_debug(DRIVER_NAME ": Caps: 0x%08x | Caps_1: 0x%08x\n",
|
||||
+ bcm2835_mmc_readl(host, SDHCI_CAPABILITIES),
|
||||
@ -510,6 +626,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ spin_lock_irqsave(&host->lock, flags);
|
||||
+
|
||||
+ host->use_dma = false;
|
||||
+
|
||||
+ if (host->data && !(host->data->flags & MMC_DATA_WRITE)) {
|
||||
+ /* otherwise handled in SDHCI IRQ */
|
||||
+ dma_chan = host->dma_chan_rxtx;
|
||||
@ -520,6 +638,9 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ dir_data);
|
||||
+
|
||||
+ bcm2835_mmc_finish_data(host);
|
||||
+ } else if (host->wait_for_dma) {
|
||||
+ host->wait_for_dma = false;
|
||||
+ tasklet_schedule(&host->finish_tasklet);
|
||||
+ }
|
||||
+
|
||||
+ spin_unlock_irqrestore(&host->lock, flags);
|
||||
@ -859,6 +980,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ mod_timer(&host->timer, timeout);
|
||||
+
|
||||
+ host->cmd = cmd;
|
||||
+ host->use_dma = false;
|
||||
+
|
||||
+ bcm2835_mmc_prepare_data(host, cmd);
|
||||
+
|
||||
@ -928,8 +1050,11 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ }
|
||||
+
|
||||
+ bcm2835_mmc_send_command(host, data->stop);
|
||||
+ } else
|
||||
+ } else if (host->use_dma) {
|
||||
+ host->wait_for_dma = true;
|
||||
+ } else {
|
||||
+ tasklet_schedule(&host->finish_tasklet);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void bcm2835_mmc_finish_command(struct bcm2835_host *host)
|
||||
@ -979,13 +1104,11 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void bcm2835_mmc_timeout_timer(unsigned long data)
|
||||
+static void bcm2835_mmc_timeout_timer(struct timer_list *t)
|
||||
+{
|
||||
+ struct bcm2835_host *host;
|
||||
+ struct bcm2835_host *host = from_timer(host, t, timer);
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ host = (struct bcm2835_host *)data;
|
||||
+
|
||||
+ spin_lock_irqsave(&host->lock, flags);
|
||||
+
|
||||
+ if (host->mrq) {
|
||||
@ -1469,8 +1592,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ host->clk_mul = 0;
|
||||
+
|
||||
+ mmc->f_max = host->max_clk;
|
||||
+ mmc->f_max = host->max_clk;
|
||||
+ if (!mmc->f_max || mmc->f_max > host->max_clk)
|
||||
+ mmc->f_max = host->max_clk;
|
||||
+ mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300;
|
||||
+
|
||||
+ /* SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK */
|
||||
@ -1523,14 +1646,14 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ if (ret == 0) {
|
||||
+ host->dma_cfg_rx = cfg;
|
||||
+
|
||||
+ host->use_dma = true;
|
||||
+ host->have_dma = true;
|
||||
+ } else {
|
||||
+ pr_err("%s: unable to configure DMA channel. "
|
||||
+ "Faling back to PIO\n",
|
||||
+ "Falling back to PIO\n",
|
||||
+ mmc_hostname(mmc));
|
||||
+ dma_release_channel(host->dma_chan_rxtx);
|
||||
+ host->dma_chan_rxtx = NULL;
|
||||
+ host->use_dma = false;
|
||||
+ host->have_dma = false;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
@ -1546,7 +1669,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ tasklet_init(&host->finish_tasklet,
|
||||
+ bcm2835_mmc_tasklet_finish, (unsigned long)host);
|
||||
+
|
||||
+ setup_timer(&host->timer, bcm2835_mmc_timeout_timer, (unsigned long)host);
|
||||
+ timer_setup(&host->timer, bcm2835_mmc_timeout_timer, 0);
|
||||
+ init_waitqueue_head(&host->buf_ready_int);
|
||||
+
|
||||
+ bcm2835_mmc_init(host, 0);
|
||||
@ -1741,3 +1864,14 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+MODULE_DESCRIPTION("BCM2835 SDHCI driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
+MODULE_AUTHOR("Gellert Weisz");
|
||||
--- a/include/linux/mmc/card.h
|
||||
+++ b/include/linux/mmc/card.h
|
||||
@@ -271,6 +271,8 @@ struct mmc_card {
|
||||
#define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */
|
||||
#define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */
|
||||
|
||||
+#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
|
||||
+
|
||||
bool reenable_cmdq; /* Re-enable Command Queue */
|
||||
|
||||
unsigned int erase_size; /* erase size in sectors */
|
@ -1,7 +1,8 @@
|
||||
From 5da331581bb2a8d90f6a7a7bdf8c1b30efe3cf64 Mon Sep 17 00:00:00 2001
|
||||
From 878b9058f3939881f570d84e8584f5ff9f79a847 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Wed, 25 Mar 2015 17:49:47 +0000
|
||||
Subject: [PATCH] Adding bcm2835-sdhost driver, and an overlay to enable it
|
||||
Subject: [PATCH 045/703] Adding bcm2835-sdhost driver, and an overlay to
|
||||
enable it
|
||||
|
||||
BCM2835 has two SD card interfaces. This driver uses the other one.
|
||||
|
||||
@ -159,25 +160,49 @@ Also:
|
||||
|
||||
See: https://github.com/raspberrypi/linux/pull/1492
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
bcm2835-sdhost: mmc_card_blockaddr fix
|
||||
|
||||
Get the definition of mmc_card_blockaddr from drivers/mmc/core/card.h.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
bcm2835-sdhost: New timer API
|
||||
|
||||
mmc: bcm2835-sdhost: Support underclocking
|
||||
|
||||
Support underclocking of the SD bus in two ways:
|
||||
1. using the max-frequency DT property (which currently has no DT
|
||||
parameter), and
|
||||
2. using the exiting sd_overclock parameter.
|
||||
|
||||
The two methods differ slightly - in the former the MMC subsystem is
|
||||
aware of the underclocking, while in the latter it isn't - but the
|
||||
end results should be the same.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/2350
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
mmc: bcm2835-sdhost: Add include
|
||||
|
||||
highmem.h (needed for kmap_atomic) is pulled in by one of the other
|
||||
include files, but only with some CONFIG settings. Make the inclusion
|
||||
explicit to cater for cases where the CONFIG setting is absent.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/2366
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
drivers/mmc/host/Kconfig | 12 +-
|
||||
drivers/mmc/host/Kconfig | 10 +
|
||||
drivers/mmc/host/Makefile | 1 +
|
||||
drivers/mmc/host/bcm2835-sdhost.c | 2189 +++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 2201 insertions(+), 1 deletion(-)
|
||||
drivers/mmc/host/bcm2835-sdhost.c | 2191 +++++++++++++++++++++++++++++
|
||||
3 files changed, 2202 insertions(+)
|
||||
create mode 100644 drivers/mmc/host/bcm2835-sdhost.c
|
||||
|
||||
--- a/drivers/mmc/host/Kconfig
|
||||
+++ b/drivers/mmc/host/Kconfig
|
||||
@@ -6,7 +6,7 @@ comment "MMC/SD/SDIO Host Controller Dri
|
||||
|
||||
config MMC_BCM2835
|
||||
tristate "MMC support on BCM2835"
|
||||
- depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835
|
||||
+ depends on ARCH_BCM2835
|
||||
help
|
||||
This selects the MMC Interface on BCM2835.
|
||||
|
||||
@@ -33,6 +33,16 @@ config MMC_BCM2835_PIO_DMA_BARRIER
|
||||
|
||||
If unsure, say 2 here.
|
||||
@ -192,22 +217,22 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ If unsure, say N.
|
||||
+
|
||||
config MMC_ARMMMCI
|
||||
tristate "ARM AMBA Multimedia Card Interface support"
|
||||
depends on ARM_AMBA
|
||||
config MMC_DEBUG
|
||||
bool "MMC host drivers debugging"
|
||||
depends on MMC != n
|
||||
--- a/drivers/mmc/host/Makefile
|
||||
+++ b/drivers/mmc/host/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c
|
||||
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
|
||||
@@ -22,6 +22,7 @@ obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci
|
||||
obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o
|
||||
obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o
|
||||
obj-$(CONFIG_MMC_BCM2835_MMC) += bcm2835-mmc.o
|
||||
+obj-$(CONFIG_MMC_BCM2835_SDHOST) += bcm2835-sdhost.o
|
||||
obj-$(CONFIG_MMC_BCM2835) += bcm2835-mmc.o
|
||||
obj-$(CONFIG_MMC_WBSD) += wbsd.o
|
||||
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
|
||||
obj-$(CONFIG_MMC_MTK) += mtk-sd.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/mmc/host/bcm2835-sdhost.c
|
||||
@@ -0,0 +1,2189 @@
|
||||
@@ -0,0 +1,2191 @@
|
||||
+/*
|
||||
+ * BCM2835 SD host driver.
|
||||
+ *
|
||||
@ -261,8 +286,13 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+#include <linux/of_dma.h>
|
||||
+#include <linux/time.h>
|
||||
+#include <linux/workqueue.h>
|
||||
+#include <linux/interrupt.h>
|
||||
+#include <linux/highmem.h>
|
||||
+#include <soc/bcm2835/raspberrypi-firmware.h>
|
||||
+
|
||||
+/* For mmc_card_blockaddr */
|
||||
+#include "../core/card.h"
|
||||
+
|
||||
+#define DRIVER_NAME "sdhost-bcm2835"
|
||||
+
|
||||
+#define SDCMD 0x00 /* Command to SD card - 16 R/W */
|
||||
@ -1509,13 +1539,11 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ log_event("FCM>", (u32)host->mrq, (u32)host->cmd);
|
||||
+}
|
||||
+
|
||||
+static void bcm2835_sdhost_timeout(unsigned long data)
|
||||
+static void bcm2835_sdhost_timeout(struct timer_list *t)
|
||||
+{
|
||||
+ struct bcm2835_host *host;
|
||||
+ struct bcm2835_host *host = from_timer(host, t, timer);
|
||||
+ unsigned long flags;
|
||||
+
|
||||
+ host = (struct bcm2835_host *)data;
|
||||
+
|
||||
+ spin_lock_irqsave(&host->lock, flags);
|
||||
+ log_event("TIM<", 0, 0);
|
||||
+
|
||||
@ -1725,8 +1753,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ if (host->debug)
|
||||
+ pr_info("%s: set_clock(%d)\n", mmc_hostname(host->mmc), clock);
|
||||
+
|
||||
+ if ((host->overclock_50 > 50) &&
|
||||
+ (clock == 50*MHZ))
|
||||
+ if (host->overclock_50 && (clock == 50*MHZ))
|
||||
+ clock = host->overclock_50 * MHZ + (MHZ - 1);
|
||||
+
|
||||
+ /* The SDCDIV register has 11 bits, and holds (div - 2).
|
||||
@ -2100,7 +2127,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ mmc = host->mmc;
|
||||
+
|
||||
+ mmc->f_max = host->max_clk;
|
||||
+ if (!mmc->f_max || mmc->f_max > host->max_clk)
|
||||
+ mmc->f_max = host->max_clk;
|
||||
+ mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV;
|
||||
+
|
||||
+ mmc->max_busy_timeout = (~(unsigned int)0)/(mmc->f_max/1000);
|
||||
@ -2176,8 +2204,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+
|
||||
+ INIT_WORK(&host->cmd_wait_wq, bcm2835_sdhost_cmd_wait_work);
|
||||
+
|
||||
+ setup_timer(&host->timer, bcm2835_sdhost_timeout,
|
||||
+ (unsigned long)host);
|
||||
+ timer_setup(&host->timer, bcm2835_sdhost_timeout, 0);
|
||||
+
|
||||
+ bcm2835_sdhost_init(host, 0);
|
||||
+
|
@ -1,8 +1,8 @@
|
||||
From 94c0e75bc85ad2a034c501b6d3640b880b9c3bb7 Mon Sep 17 00:00:00 2001
|
||||
From 93e55dab09f9790d4cb547a9ac0a3c4803e682db Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Fri, 28 Oct 2016 15:36:43 +0100
|
||||
Subject: [PATCH] vc_mem: Add vc_mem driver for querying firmware memory
|
||||
addresses
|
||||
Subject: [PATCH 046/703] vc_mem: Add vc_mem driver for querying firmware
|
||||
memory addresses
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -15,29 +15,29 @@ Make the vc_mem module available for ARCH_BCM2835 by moving it.
|
||||
|
||||
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
---
|
||||
drivers/char/broadcom/Kconfig | 12 +-
|
||||
drivers/char/broadcom/Kconfig | 18 ++
|
||||
drivers/char/broadcom/Makefile | 1 +
|
||||
drivers/char/broadcom/vc_mem.c | 422 ++++++++++++++++++++++++++++++++++++++++
|
||||
include/linux/broadcom/vc_mem.h | 35 ++++
|
||||
4 files changed, 469 insertions(+), 1 deletion(-)
|
||||
drivers/char/broadcom/vc_mem.c | 422 ++++++++++++++++++++++++++++++++
|
||||
include/linux/broadcom/vc_mem.h | 35 +++
|
||||
4 files changed, 476 insertions(+)
|
||||
create mode 100644 drivers/char/broadcom/Kconfig
|
||||
create mode 100644 drivers/char/broadcom/Makefile
|
||||
create mode 100644 drivers/char/broadcom/vc_mem.c
|
||||
create mode 100644 include/linux/broadcom/vc_mem.h
|
||||
|
||||
--- a/drivers/char/broadcom/Kconfig
|
||||
--- /dev/null
|
||||
+++ b/drivers/char/broadcom/Kconfig
|
||||
@@ -7,9 +7,19 @@ menuconfig BRCM_CHAR_DRIVERS
|
||||
help
|
||||
Broadcom's char drivers
|
||||
|
||||
+if BRCM_CHAR_DRIVERS
|
||||
@@ -0,0 +1,18 @@
|
||||
+#
|
||||
+# Broadcom char driver config
|
||||
+#
|
||||
+
|
||||
config BCM_VC_CMA
|
||||
bool "Videocore CMA"
|
||||
- depends on CMA && BRCM_CHAR_DRIVERS && BCM2708_VCHIQ
|
||||
+ depends on CMA && BCM2708_VCHIQ
|
||||
default n
|
||||
help
|
||||
Helper for videocore CMA access.
|
||||
+menuconfig BRCM_CHAR_DRIVERS
|
||||
+ bool "Broadcom Char Drivers"
|
||||
+ help
|
||||
+ Broadcom's char drivers
|
||||
+
|
||||
+if BRCM_CHAR_DRIVERS
|
||||
+
|
||||
+config BCM2708_VCMEM
|
||||
+ bool "Videocore Memory"
|
||||
@ -46,10 +46,9 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+ Helper for videocore memory access and total size allocation.
|
||||
+
|
||||
+endif
|
||||
--- a/drivers/char/broadcom/Makefile
|
||||
--- /dev/null
|
||||
+++ b/drivers/char/broadcom/Makefile
|
||||
@@ -1 +1,2 @@
|
||||
obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
|
||||
@@ -0,0 +1 @@
|
||||
+obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/char/broadcom/vc_mem.c
|
||||
@ -76,7 +75,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
+#include <linux/mm.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/debugfs.h>
|
||||
+#include <asm/uaccess.h>
|
||||
+#include <linux/uaccess.h>
|
||||
+#include <linux/dma-mapping.h>
|
||||
+#include <linux/broadcom/vc_mem.h>
|
||||
+
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
From 0f326aa0cf8a16ab7f29606b2eda7186f1fb9367 Mon Sep 17 00:00:00 2001
|
||||
From 1a2c16ef68cbba94eee5d916e77269bca572830d Mon Sep 17 00:00:00 2001
|
||||
From: Luke Wren <luke@raspberrypi.org>
|
||||
Date: Fri, 21 Aug 2015 23:14:48 +0100
|
||||
Subject: [PATCH] Add /dev/gpiomem device for rootless user GPIO access
|
||||
Subject: [PATCH 048/703] Add /dev/gpiomem device for rootless user GPIO access
|
||||
|
||||
Signed-off-by: Luke Wren <luke@raspberrypi.org>
|
||||
|
||||
@ -11,15 +11,15 @@ Build on ARCH_BCM2835, and fail to probe if no IO resource.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1154
|
||||
---
|
||||
drivers/char/broadcom/Kconfig | 9 ++
|
||||
drivers/char/broadcom/Kconfig | 9 +
|
||||
drivers/char/broadcom/Makefile | 3 +
|
||||
drivers/char/broadcom/bcm2835-gpiomem.c | 260 ++++++++++++++++++++++++++++++++
|
||||
3 files changed, 272 insertions(+)
|
||||
drivers/char/broadcom/bcm2835-gpiomem.c | 258 ++++++++++++++++++++++++
|
||||
3 files changed, 270 insertions(+)
|
||||
create mode 100644 drivers/char/broadcom/bcm2835-gpiomem.c
|
||||
|
||||
--- a/drivers/char/broadcom/Kconfig
|
||||
+++ b/drivers/char/broadcom/Kconfig
|
||||
@@ -32,3 +32,12 @@ config BCM_VC_SM
|
||||
@@ -26,3 +26,12 @@ config BCM_VC_SM
|
||||
help
|
||||
Support for the VC shared memory on the Broadcom reference
|
||||
design. Uses the VCHIQ stack.
|
||||
@ -34,8 +34,7 @@ See: https://github.com/raspberrypi/linux/issues/1154
|
||||
+
|
||||
--- a/drivers/char/broadcom/Makefile
|
||||
+++ b/drivers/char/broadcom/Makefile
|
||||
@@ -1,3 +1,6 @@
|
||||
obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
|
||||
@@ -1,2 +1,5 @@
|
||||
obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
|
||||
obj-$(CONFIG_BCM_VC_SM) += vc_sm/
|
||||
+
|
||||
@ -43,7 +42,7 @@ See: https://github.com/raspberrypi/linux/issues/1154
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/drivers/char/broadcom/bcm2835-gpiomem.c
|
||||
@@ -0,0 +1,260 @@
|
||||
@@ -0,0 +1,258 @@
|
||||
+/**
|
||||
+ * GPIO memory device driver
|
||||
+ *
|
||||
@ -122,8 +121,6 @@ See: https://github.com/raspberrypi/linux/issues/1154
|
||||
+ int dev = iminor(inode);
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ dev_info(inst->dev, "gpiomem device opened.");
|
||||
+
|
||||
+ if (dev != DEVICE_MINOR) {
|
||||
+ dev_err(inst->dev, "Unknown minor device: %d", dev);
|
||||
+ ret = -ENXIO;
|
@ -1,19 +1,19 @@
|
||||
From 8b3f935c48ff65dfb8985ce3e6c631530cd1471a Mon Sep 17 00:00:00 2001
|
||||
From edaa95330a802b1bcc26cfcd90404ebadd82965b Mon Sep 17 00:00:00 2001
|
||||
From: Luke Wren <wren6991@gmail.com>
|
||||
Date: Sat, 5 Sep 2015 01:14:45 +0100
|
||||
Subject: [PATCH] Add SMI driver
|
||||
Subject: [PATCH 049/703] Add SMI driver
|
||||
|
||||
Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
---
|
||||
.../bindings/misc/brcm,bcm2835-smi-dev.txt | 17 +
|
||||
.../devicetree/bindings/misc/brcm,bcm2835-smi.txt | 48 +
|
||||
drivers/char/broadcom/Kconfig | 8 +
|
||||
drivers/char/broadcom/Makefile | 2 +-
|
||||
drivers/char/broadcom/bcm2835_smi_dev.c | 402 +++++++++
|
||||
drivers/misc/Kconfig | 8 +
|
||||
drivers/misc/Makefile | 1 +
|
||||
drivers/misc/bcm2835_smi.c | 985 +++++++++++++++++++++
|
||||
include/linux/broadcom/bcm2835_smi.h | 391 ++++++++
|
||||
.../bindings/misc/brcm,bcm2835-smi-dev.txt | 17 +
|
||||
.../bindings/misc/brcm,bcm2835-smi.txt | 48 +
|
||||
drivers/char/broadcom/Kconfig | 8 +
|
||||
drivers/char/broadcom/Makefile | 2 +-
|
||||
drivers/char/broadcom/bcm2835_smi_dev.c | 402 +++++++
|
||||
drivers/misc/Kconfig | 8 +
|
||||
drivers/misc/Makefile | 1 +
|
||||
drivers/misc/bcm2835_smi.c | 985 ++++++++++++++++++
|
||||
include/linux/broadcom/bcm2835_smi.h | 391 +++++++
|
||||
9 files changed, 1861 insertions(+), 1 deletion(-)
|
||||
create mode 100644 Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
|
||||
create mode 100644 Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
+
|
||||
--- a/drivers/char/broadcom/Kconfig
|
||||
+++ b/drivers/char/broadcom/Kconfig
|
||||
@@ -41,3 +41,11 @@ config BCM2835_DEVGPIOMEM
|
||||
@@ -35,3 +35,11 @@ config BCM2835_DEVGPIOMEM
|
||||
on the 2835. Calling mmap(/dev/gpiomem) will map the GPIO
|
||||
register page to the user's pointer.
|
||||
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
+ by the SMI driver itself.
|
||||
--- a/drivers/char/broadcom/Makefile
|
||||
+++ b/drivers/char/broadcom/Makefile
|
||||
@@ -3,4 +3,4 @@ obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
|
||||
@@ -2,4 +2,4 @@ obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
|
||||
obj-$(CONFIG_BCM_VC_SM) += vc_sm/
|
||||
|
||||
obj-$(CONFIG_BCM2835_DEVGPIOMEM)+= bcm2835-gpiomem.o
|
||||
@ -538,14 +538,14 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
depends on (I2C || SPI) && SYSFS
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -9,6 +9,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_
|
||||
@@ -11,6 +11,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_
|
||||
obj-$(CONFIG_INTEL_MID_PTI) += pti.o
|
||||
obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
|
||||
obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o
|
||||
+obj-$(CONFIG_BCM2835_SMI) += bcm2835_smi.o
|
||||
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
|
||||
obj-$(CONFIG_ICS932S401) += ics932s401.o
|
||||
obj-$(CONFIG_LKDTM) += lkdtm.o
|
||||
obj-$(CONFIG_LKDTM) += lkdtm/
|
||||
--- /dev/null
|
||||
+++ b/drivers/misc/bcm2835_smi.c
|
||||
@@ -0,0 +1,985 @@
|
@ -1,7 +1,8 @@
|
||||
From 6bc6d433aaed4d4a5d5be44e70d9de865a850048 Mon Sep 17 00:00:00 2001
|
||||
From 1216c1cccdd7e1eafd6859c9522cdef5c2e4ac8d Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sperl <kernel@martin.sperl.org>
|
||||
Date: Tue, 26 Apr 2016 14:59:21 +0000
|
||||
Subject: [PATCH] MISC: bcm2835: smi: use clock manager and fix reload issues
|
||||
Subject: [PATCH 050/703] MISC: bcm2835: smi: use clock manager and fix reload
|
||||
issues
|
||||
|
||||
Use clock manager instead of self-made clockmanager.
|
||||
|
||||
@ -10,7 +11,7 @@ Also fix some error paths that showd up during development
|
||||
|
||||
Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
|
||||
---
|
||||
drivers/misc/bcm2835_smi.c | 86 +++++++++++++++-------------------------------
|
||||
drivers/misc/bcm2835_smi.c | 86 +++++++++++++-------------------------
|
||||
1 file changed, 28 insertions(+), 58 deletions(-)
|
||||
|
||||
--- a/drivers/misc/bcm2835_smi.c
|
@ -1,17 +1,17 @@
|
||||
From be64c4dbf6be17ce20ee214478509a3738256d46 Mon Sep 17 00:00:00 2001
|
||||
From a3f0263e2d5deb675dfe7fb0c31167e86d762e27 Mon Sep 17 00:00:00 2001
|
||||
From: Luke Wren <wren6991@gmail.com>
|
||||
Date: Sat, 5 Sep 2015 01:16:10 +0100
|
||||
Subject: [PATCH] Add SMI NAND driver
|
||||
Subject: [PATCH 051/703] Add SMI NAND driver
|
||||
|
||||
Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
---
|
||||
.../bindings/mtd/brcm,bcm2835-smi-nand.txt | 42 ++++
|
||||
drivers/mtd/nand/Kconfig | 7 +
|
||||
drivers/mtd/nand/Makefile | 1 +
|
||||
drivers/mtd/nand/bcm2835_smi_nand.c | 267 +++++++++++++++++++++
|
||||
4 files changed, 317 insertions(+)
|
||||
.../bindings/mtd/brcm,bcm2835-smi-nand.txt | 42 +++
|
||||
drivers/mtd/nand/raw/Kconfig | 7 +
|
||||
drivers/mtd/nand/raw/Makefile | 1 +
|
||||
drivers/mtd/nand/raw/bcm2835_smi_nand.c | 258 ++++++++++++++++++
|
||||
4 files changed, 308 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt
|
||||
create mode 100644 drivers/mtd/nand/bcm2835_smi_nand.c
|
||||
create mode 100644 drivers/mtd/nand/raw/bcm2835_smi_nand.c
|
||||
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt
|
||||
@ -59,9 +59,9 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
+ };
|
||||
+};
|
||||
\ No newline at end of file
|
||||
--- a/drivers/mtd/nand/Kconfig
|
||||
+++ b/drivers/mtd/nand/Kconfig
|
||||
@@ -41,6 +41,13 @@ config MTD_SM_COMMON
|
||||
--- a/drivers/mtd/nand/raw/Kconfig
|
||||
+++ b/drivers/mtd/nand/raw/Kconfig
|
||||
@@ -40,6 +40,13 @@ config MTD_SM_COMMON
|
||||
tristate
|
||||
default n
|
||||
|
||||
@ -75,19 +75,19 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
config MTD_NAND_DENALI
|
||||
tristate
|
||||
|
||||
--- a/drivers/mtd/nand/Makefile
|
||||
+++ b/drivers/mtd/nand/Makefile
|
||||
@@ -14,6 +14,7 @@ obj-$(CONFIG_MTD_NAND_DENALI) += denali
|
||||
--- a/drivers/mtd/nand/raw/Makefile
|
||||
+++ b/drivers/mtd/nand/raw/Makefile
|
||||
@@ -11,6 +11,7 @@ obj-$(CONFIG_MTD_NAND_DENALI) += denali
|
||||
obj-$(CONFIG_MTD_NAND_DENALI_PCI) += denali_pci.o
|
||||
obj-$(CONFIG_MTD_NAND_DENALI_DT) += denali_dt.o
|
||||
obj-$(CONFIG_MTD_NAND_AU1550) += au1550nd.o
|
||||
+obj-$(CONFIG_MTD_NAND_BCM2835_SMI) += bcm2835_smi_nand.o
|
||||
obj-$(CONFIG_MTD_NAND_BF5XX) += bf5xx_nand.o
|
||||
obj-$(CONFIG_MTD_NAND_S3C2410) += s3c2410.o
|
||||
obj-$(CONFIG_MTD_NAND_TANGO) += tango_nand.o
|
||||
obj-$(CONFIG_MTD_NAND_DAVINCI) += davinci_nand.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/mtd/nand/bcm2835_smi_nand.c
|
||||
@@ -0,0 +1,267 @@
|
||||
+++ b/drivers/mtd/nand/raw/bcm2835_smi_nand.c
|
||||
@@ -0,0 +1,258 @@
|
||||
+/**
|
||||
+ * NAND flash driver for Broadcom Secondary Memory Interface
|
||||
+ *
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/mtd/nand.h>
|
||||
+#include <linux/mtd/rawnand.h>
|
||||
+#include <linux/mtd/partitions.h>
|
||||
+
|
||||
+#include <linux/broadcom/bcm2835_smi.h>
|
||||
@ -298,20 +298,11 @@ Signed-off-by: Luke Wren <wren6991@gmail.com>
|
||||
+ this->IO_ADDR_R = (void *)0xdeadbeef;
|
||||
+ this->IO_ADDR_W = (void *)0xdeadbeef;
|
||||
+
|
||||
+ /* First scan to find the device and get the page size */
|
||||
+ /* Scan to find the device and get the page size */
|
||||
+
|
||||
+ if (nand_scan_ident(mtd, 1, NULL))
|
||||
+ if (nand_scan(mtd, 1))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ /* Second phase scan */
|
||||
+
|
||||
+ if (nand_scan_tail(mtd))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ ret = mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0);
|
||||
+ if (!ret)
|
||||
+ return 0;
|
||||
+
|
||||
+ nand_release(mtd);
|
||||
+ return -EINVAL;
|
||||
+}
|
@ -1,21 +1,26 @@
|
||||
From 7d4719c360b755637c2e68f9855be282cd0065b6 Mon Sep 17 00:00:00 2001
|
||||
From 6ae7a56fdff2578805c6f17f03b5bc1b1f9d45a8 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 3 Jul 2013 00:49:20 +0100
|
||||
Subject: [PATCH] Add cpufreq driver
|
||||
Subject: [PATCH 052/703] Add cpufreq driver
|
||||
|
||||
Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
|
||||
bcm2835-cpufreq: Change licence to GPLv2
|
||||
|
||||
Signed-off-by: Eben Upton <eben.upton@broadcom.com>
|
||||
Signed-off-by: Dom Cobley <dom@raspberrypi.com>
|
||||
---
|
||||
drivers/cpufreq/Kconfig.arm | 9 ++
|
||||
drivers/cpufreq/Makefile | 1 +
|
||||
drivers/cpufreq/bcm2835-cpufreq.c | 218 ++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 228 insertions(+)
|
||||
drivers/cpufreq/bcm2835-cpufreq.c | 210 ++++++++++++++++++++++++++++++
|
||||
3 files changed, 220 insertions(+)
|
||||
create mode 100644 drivers/cpufreq/bcm2835-cpufreq.c
|
||||
|
||||
--- a/drivers/cpufreq/Kconfig.arm
|
||||
+++ b/drivers/cpufreq/Kconfig.arm
|
||||
@@ -220,6 +220,15 @@ config ARM_STI_CPUFREQ
|
||||
this config option if you wish to add CPUFreq support for STi based
|
||||
SoCs.
|
||||
@@ -260,6 +260,15 @@ config ARM_TANGO_CPUFREQ
|
||||
depends on CPUFREQ_DT && ARCH_TANGO
|
||||
default y
|
||||
|
||||
+config ARM_BCM2835_CPUFREQ
|
||||
+ depends on RASPBERRYPI_FIRMWARE
|
||||
@ -27,43 +32,35 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
+ If in doubt, say N.
|
||||
+
|
||||
config ARM_TEGRA20_CPUFREQ
|
||||
bool "Tegra20 CPUFreq support"
|
||||
tristate "Tegra20 CPUFreq support"
|
||||
depends on ARCH_TEGRA
|
||||
--- a/drivers/cpufreq/Makefile
|
||||
+++ b/drivers/cpufreq/Makefile
|
||||
@@ -75,6 +75,7 @@ obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa11
|
||||
obj-$(CONFIG_ARM_SCPI_CPUFREQ) += scpi-cpufreq.o
|
||||
@@ -80,6 +80,7 @@ obj-$(CONFIG_ARM_SCPI_CPUFREQ) += scpi-
|
||||
obj-$(CONFIG_ARM_SPEAR_CPUFREQ) += spear-cpufreq.o
|
||||
obj-$(CONFIG_ARM_STI_CPUFREQ) += sti-cpufreq.o
|
||||
obj-$(CONFIG_ARM_TANGO_CPUFREQ) += tango-cpufreq.o
|
||||
+obj-$(CONFIG_ARM_BCM2835_CPUFREQ) += bcm2835-cpufreq.o
|
||||
obj-$(CONFIG_ARM_TEGRA20_CPUFREQ) += tegra20-cpufreq.o
|
||||
obj-$(CONFIG_ARM_TEGRA124_CPUFREQ) += tegra124-cpufreq.o
|
||||
obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o
|
||||
obj-$(CONFIG_ARM_TEGRA186_CPUFREQ) += tegra186-cpufreq.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/cpufreq/bcm2835-cpufreq.c
|
||||
@@ -0,0 +1,218 @@
|
||||
+/*****************************************************************************
|
||||
+* Copyright 2011 Broadcom Corporation. All rights reserved.
|
||||
+*
|
||||
+* Unless you and Broadcom execute a separate written software license
|
||||
+* agreement governing use of this software, this software is licensed to you
|
||||
+* under the terms of the GNU General Public License version 2, available at
|
||||
+* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").
|
||||
+*
|
||||
+* Notwithstanding the above, under no circumstances may you combine this
|
||||
+* software in any way with any other Broadcom software provided under a
|
||||
+* license other than the GPL, without Broadcom's express prior written
|
||||
+* consent.
|
||||
+*****************************************************************************/
|
||||
+
|
||||
+/*****************************************************************************
|
||||
+* FILENAME: bcm2835-cpufreq.h
|
||||
+* DESCRIPTION: This driver dynamically manages the CPU Frequency of the ARM
|
||||
+* processor. Messages are sent to Videocore either setting or requesting the
|
||||
+* frequency of the ARM in order to match an appropiate frequency to the current
|
||||
+* usage of the processor. The policy which selects the frequency to use is
|
||||
+* defined in the kernel .config file, but can be changed during runtime.
|
||||
+*****************************************************************************/
|
||||
@@ -0,0 +1,210 @@
|
||||
+/*
|
||||
+ * Copyright 2011 Broadcom Corporation.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * as published by the Free Software Foundation; version 2
|
||||
+ * of the License.
|
||||
+ *
|
||||
+ * This driver dynamically manages the CPU Frequency of the ARM
|
||||
+ * processor. Messages are sent to Videocore either setting or requesting the
|
||||
+ * frequency of the ARM in order to match an appropiate frequency to the current
|
||||
+ * usage of the processor. The policy which selects the frequency to use is
|
||||
+ * defined in the kernel .config file, but can be changed during runtime.
|
||||
+ */
|
||||
+
|
||||
+/* ---------- INCLUDES ---------- */
|
||||
+#include <linux/kernel.h>
|
@ -1,7 +1,7 @@
|
||||
From af4e8a3c7b645480f57ec14ded02fba6976ff2d5 Mon Sep 17 00:00:00 2001
|
||||
From 3ae115e0812cdaaa3404c84354f40f1e1402fadf Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 17 Jun 2015 15:44:08 +0100
|
||||
Subject: [PATCH] Add Chris Boot's i2c driver
|
||||
Subject: [PATCH 053/703] Add Chris Boot's i2c driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -100,7 +100,7 @@ both bcm2708_bsc_fifo_fill and ~drain are changed as well.
|
||||
---
|
||||
drivers/i2c/busses/Kconfig | 19 ++
|
||||
drivers/i2c/busses/Makefile | 2 +
|
||||
drivers/i2c/busses/i2c-bcm2708.c | 512 +++++++++++++++++++++++++++++++++++++++
|
||||
drivers/i2c/busses/i2c-bcm2708.c | 512 +++++++++++++++++++++++++++++++
|
||||
3 files changed, 533 insertions(+)
|
||||
create mode 100644 drivers/i2c/busses/i2c-bcm2708.c
|
||||
|
||||
@ -134,7 +134,7 @@ both bcm2708_bsc_fifo_fill and ~drain are changed as well.
|
||||
depends on PCI
|
||||
--- a/drivers/i2c/busses/Makefile
|
||||
+++ b/drivers/i2c/busses/Makefile
|
||||
@@ -2,6 +2,8 @@
|
||||
@@ -3,6 +3,8 @@
|
||||
# Makefile for the i2c bus drivers.
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2e8101a5e6228109d2cd5b965b6077e63e643d6b Mon Sep 17 00:00:00 2001
|
||||
From 9fc71e9f5ee71c3f91b43c8c94a0db17349b938c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Fri, 26 Jun 2015 14:27:06 +0200
|
||||
Subject: [PATCH] char: broadcom: Add vcio module
|
||||
Subject: [PATCH 054/703] char: broadcom: Add vcio module
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -13,13 +13,13 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
---
|
||||
drivers/char/broadcom/Kconfig | 6 ++
|
||||
drivers/char/broadcom/Makefile | 1 +
|
||||
drivers/char/broadcom/vcio.c | 175 +++++++++++++++++++++++++++++++++++++++++
|
||||
drivers/char/broadcom/vcio.c | 175 +++++++++++++++++++++++++++++++++
|
||||
3 files changed, 182 insertions(+)
|
||||
create mode 100644 drivers/char/broadcom/vcio.c
|
||||
|
||||
--- a/drivers/char/broadcom/Kconfig
|
||||
+++ b/drivers/char/broadcom/Kconfig
|
||||
@@ -22,6 +22,12 @@ config BCM2708_VCMEM
|
||||
@@ -15,6 +15,12 @@ config BCM2708_VCMEM
|
||||
help
|
||||
Helper for videocore memory access and total size allocation.
|
||||
|
||||
@ -34,8 +34,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
config BCM_VC_SM
|
||||
--- a/drivers/char/broadcom/Makefile
|
||||
+++ b/drivers/char/broadcom/Makefile
|
||||
@@ -1,5 +1,6 @@
|
||||
obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
|
||||
@@ -1,4 +1,5 @@
|
||||
obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
|
||||
+obj-$(CONFIG_BCM_VCIO) += vcio.o
|
||||
obj-$(CONFIG_BCM_VC_SM) += vc_sm/
|
@ -1,7 +1,7 @@
|
||||
From f281fd683848cd432f7b73c869676be6362ce1b8 Mon Sep 17 00:00:00 2001
|
||||
From 2df6434c1ff682a80f65bde7a9e026f4e0d20df1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
|
||||
Date: Fri, 26 Jun 2015 14:25:01 +0200
|
||||
Subject: [PATCH] firmware: bcm2835: Support ARCH_BCM270x
|
||||
Subject: [PATCH 055/703] firmware: bcm2835: Support ARCH_BCM270x
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -28,6 +28,8 @@ struct rpi_firmware {
|
||||
@@ -32,6 +32,8 @@ struct rpi_firmware {
|
||||
u32 enabled;
|
||||
};
|
||||
|
||||
@ -36,23 +36,23 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
static DEFINE_MUTEX(transaction_lock);
|
||||
|
||||
static void response_callback(struct mbox_client *cl, void *msg)
|
||||
@@ -207,6 +209,7 @@ static int rpi_firmware_probe(struct pla
|
||||
@@ -229,6 +231,7 @@ static int rpi_firmware_probe(struct pla
|
||||
init_completion(&fw->c);
|
||||
|
||||
platform_set_drvdata(pdev, fw);
|
||||
+ g_pdev = pdev;
|
||||
|
||||
rpi_firmware_print_firmware_revision(fw);
|
||||
|
||||
@@ -218,6 +221,7 @@ static int rpi_firmware_remove(struct pl
|
||||
struct rpi_firmware *fw = platform_get_drvdata(pdev);
|
||||
|
||||
rpi_register_hwmon_driver(dev, fw);
|
||||
@@ -243,6 +246,7 @@ static int rpi_firmware_remove(struct pl
|
||||
platform_device_unregister(rpi_hwmon);
|
||||
rpi_hwmon = NULL;
|
||||
mbox_free_channel(fw->chan);
|
||||
+ g_pdev = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -230,7 +234,7 @@ static int rpi_firmware_remove(struct pl
|
||||
@@ -255,7 +259,7 @@ static int rpi_firmware_remove(struct pl
|
||||
*/
|
||||
struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
|
||||
{
|
||||
@ -61,7 +61,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
if (!pdev)
|
||||
return NULL;
|
||||
@@ -253,7 +257,18 @@ static struct platform_driver rpi_firmwa
|
||||
@@ -278,7 +282,18 @@ static struct platform_driver rpi_firmwa
|
||||
.probe = rpi_firmware_probe,
|
||||
.remove = rpi_firmware_remove,
|
||||
};
|
@ -1,7 +1,8 @@
|
||||
From c1275c733d61290f7477eb7bbaea96d04206eff3 Mon Sep 17 00:00:00 2001
|
||||
From bce7a71e1f399b6dcea8a145cc5fff4653450c50 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 11 May 2015 09:00:42 +0100
|
||||
Subject: [PATCH] scripts: Add mkknlimg and knlinfo scripts from tools repo
|
||||
Subject: [PATCH 056/703] scripts: Add mkknlimg and knlinfo scripts from tools
|
||||
repo
|
||||
|
||||
The Raspberry Pi firmware looks for a trailer on the kernel image to
|
||||
determine whether it was compiled with Device Tree support enabled.
|
||||
@ -65,10 +66,29 @@ With the death of ARCH_BCM2708 and ARCH_BCM2709, a new way is needed to
|
||||
determine if this is a "downstream" build that wants the firmware to
|
||||
load a bcm27xx .dtb. The vc_cma driver is used downstream but not
|
||||
upstream, making vc_cma_init a suitable predicate symbol.
|
||||
|
||||
mkknlimg: Find some more downstream-only strings
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1920
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
scripts: Update mkknlimg, just in case
|
||||
|
||||
With the removal of the vc_cma driver, mkknlimg lost an indication that
|
||||
the user had built a downstream kernel. Update the script, adding a few
|
||||
more key strings, in case it is still being used.
|
||||
|
||||
Note that mkknlimg is now deprecated, except to tag kernels as upstream
|
||||
(283x), and thus requiring upstream DTBs.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/2239
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
scripts/knlinfo | 171 +++++++++++++++++++++++++++++++++++
|
||||
scripts/mkknlimg | 264 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 435 insertions(+)
|
||||
scripts/knlinfo | 171 +++++++++++++++++++++++++++++++
|
||||
scripts/mkknlimg | 262 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 433 insertions(+)
|
||||
create mode 100755 scripts/knlinfo
|
||||
create mode 100755 scripts/mkknlimg
|
||||
|
||||
@ -248,7 +268,7 @@ upstream, making vc_cma_init a suitable predicate symbol.
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/scripts/mkknlimg
|
||||
@@ -0,0 +1,264 @@
|
||||
@@ -0,0 +1,262 @@
|
||||
+#!/usr/bin/env perl
|
||||
+# ----------------------------------------------------------------------
|
||||
+# mkknlimg by Phil Elwell for Raspberry Pi
|
||||
@ -319,17 +339,15 @@ upstream, making vc_cma_init a suitable predicate symbol.
|
||||
+
|
||||
+my $wanted_strings =
|
||||
+{
|
||||
+ 'bcm2708_fb' => FLAG_PI,
|
||||
+ 'brcm,bcm2835-mmc' => FLAG_PI,
|
||||
+ 'brcm,bcm2835-sdhost' => FLAG_PI,
|
||||
+ 'brcm,bcm2708-pinctrl' => FLAG_PI | FLAG_DTOK,
|
||||
+ 'brcm,bcm2835-gpio' => FLAG_PI | FLAG_DTOK,
|
||||
+ 'brcm,bcm2708' => FLAG_PI | FLAG_DTOK | FLAG_270X,
|
||||
+ 'brcm,bcm2709' => FLAG_PI | FLAG_DTOK | FLAG_270X,
|
||||
+ 'brcm,bcm2708-fb' => FLAG_PI | FLAG_DTOK | FLAG_270X,
|
||||
+ 'brcm,bcm2708-usb' => FLAG_PI | FLAG_DTOK | FLAG_270X,
|
||||
+ 'brcm,bcm2835' => FLAG_PI | FLAG_DTOK | FLAG_283X,
|
||||
+ 'brcm,bcm2836' => FLAG_PI | FLAG_DTOK | FLAG_283X,
|
||||
+ 'brcm,bcm2837' => FLAG_PI | FLAG_DTOK | FLAG_283X,
|
||||
+ 'of_cfs_init' => FLAG_DTOK | FLAG_DDTK,
|
||||
+ 'vc_cma_init' => FLAG_PI | FLAG_270X,
|
||||
+};
|
||||
+
|
||||
+my $res = try_extract($kernel_file, $tmpfile1);
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
||||
From 766357a4f8476461035dcfe2c6b43f532366f533 Mon Sep 17 00:00:00 2001
|
||||
From 28644cb31e076ccc6645c692a7ff43414230f361 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Fri, 6 Feb 2015 13:50:57 +0000
|
||||
Subject: [PATCH] BCM270x_DT: Add pwr_led, and the required "input" trigger
|
||||
Subject: [PATCH 058/703] BCM270x_DT: Add pwr_led, and the required "input"
|
||||
trigger
|
||||
|
||||
The "input" trigger makes the associated GPIO an input. This is to support
|
||||
the Raspberry Pi PWR LED, which is driven by external hardware in normal use.
|
||||
@ -21,10 +22,10 @@ recently.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1064
|
||||
---
|
||||
drivers/leds/leds-gpio.c | 18 +++++++++++-
|
||||
drivers/leds/trigger/Kconfig | 7 +++++
|
||||
drivers/leds/leds-gpio.c | 17 ++++++++-
|
||||
drivers/leds/trigger/Kconfig | 7 ++++
|
||||
drivers/leds/trigger/Makefile | 1 +
|
||||
drivers/leds/trigger/ledtrig-input.c | 54 ++++++++++++++++++++++++++++++++++++
|
||||
drivers/leds/trigger/ledtrig-input.c | 55 ++++++++++++++++++++++++++++
|
||||
include/linux/leds.h | 3 ++
|
||||
5 files changed, 82 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/leds/trigger/ledtrig-input.c
|
||||
@ -62,18 +63,17 @@ See: https://github.com/raspberrypi/linux/issues/1064
|
||||
static int gpio_blink_set(struct led_classdev *led_cdev,
|
||||
unsigned long *delay_on, unsigned long *delay_off)
|
||||
{
|
||||
@@ -122,6 +136,8 @@ static int create_gpio_led(const struct
|
||||
@@ -122,6 +136,7 @@ static int create_gpio_led(const struct
|
||||
led_dat->platform_gpio_blink_set = blink_set;
|
||||
led_dat->cdev.blink_set = gpio_blink_set;
|
||||
}
|
||||
+ led_dat->cdev.brightness_set = gpio_led_set;
|
||||
+ led_dat->cdev.brightness_get = gpio_led_get;
|
||||
if (template->default_state == LEDS_GPIO_DEFSTATE_KEEP) {
|
||||
state = gpiod_get_value_cansleep(led_dat->gpiod);
|
||||
if (state < 0)
|
||||
--- a/drivers/leds/trigger/Kconfig
|
||||
+++ b/drivers/leds/trigger/Kconfig
|
||||
@@ -116,6 +116,13 @@ config LEDS_TRIGGER_CAMERA
|
||||
@@ -113,6 +113,13 @@ config LEDS_TRIGGER_CAMERA
|
||||
This enables direct flash/torch on/off by the driver, kernel space.
|
||||
If unsure, say Y.
|
||||
|
||||
@ -86,10 +86,10 @@ See: https://github.com/raspberrypi/linux/issues/1064
|
||||
+
|
||||
config LEDS_TRIGGER_PANIC
|
||||
bool "LED Panic Trigger"
|
||||
depends on LEDS_TRIGGERS
|
||||
help
|
||||
--- a/drivers/leds/trigger/Makefile
|
||||
+++ b/drivers/leds/trigger/Makefile
|
||||
@@ -9,5 +9,6 @@ obj-$(CONFIG_LEDS_TRIGGER_CPU) += ledtr
|
||||
@@ -11,5 +11,6 @@ obj-$(CONFIG_LEDS_TRIGGER_ACTIVITY) += l
|
||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
|
||||
@ -98,7 +98,7 @@ See: https://github.com/raspberrypi/linux/issues/1064
|
||||
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/leds/trigger/ledtrig-input.c
|
||||
@@ -0,0 +1,54 @@
|
||||
@@ -0,0 +1,55 @@
|
||||
+/*
|
||||
+ * Set LED GPIO to Input "Trigger"
|
||||
+ *
|
||||
@ -119,10 +119,11 @@ See: https://github.com/raspberrypi/linux/issues/1064
|
||||
+#include <linux/gpio.h>
|
||||
+#include "../leds.h"
|
||||
+
|
||||
+static void input_trig_activate(struct led_classdev *led_cdev)
|
||||
+static int input_trig_activate(struct led_classdev *led_cdev)
|
||||
+{
|
||||
+ led_cdev->flags |= SET_GPIO_INPUT;
|
||||
+ led_set_brightness(led_cdev, 0);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void input_trig_deactivate(struct led_classdev *led_cdev)
|
||||
@ -155,13 +156,13 @@ See: https://github.com/raspberrypi/linux/issues/1064
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/include/linux/leds.h
|
||||
+++ b/include/linux/leds.h
|
||||
@@ -52,6 +52,9 @@ struct led_classdev {
|
||||
#define LED_DEV_CAP_FLASH (1 << 24)
|
||||
#define LED_HW_PLUGGABLE (1 << 25)
|
||||
#define LED_PANIC_INDICATOR (1 << 26)
|
||||
@@ -50,6 +50,9 @@ struct led_classdev {
|
||||
#define LED_PANIC_INDICATOR BIT(20)
|
||||
#define LED_BRIGHT_HW_CHANGED BIT(21)
|
||||
#define LED_RETAIN_AT_SHUTDOWN BIT(22)
|
||||
+ /* Additions for Raspberry Pi PWR LED */
|
||||
+#define SET_GPIO_INPUT (1 << 30)
|
||||
+#define SET_GPIO_OUTPUT (1 << 31)
|
||||
+#define SET_GPIO_INPUT BIT(30)
|
||||
+#define SET_GPIO_OUTPUT BIT(31)
|
||||
|
||||
/* Set LED brightness level
|
||||
* Must not sleep. Use brightness_set_blocking for drivers
|
||||
/* set_brightness_work / blink_timer flags, atomic, private. */
|
||||
unsigned long work_flags;
|
@ -1,7 +1,7 @@
|
||||
From 65422160b21224e6d26641a4c1fa3082c0281488 Mon Sep 17 00:00:00 2001
|
||||
From cdec439b6dd76c5e1ccbe49636882067971abd0d Mon Sep 17 00:00:00 2001
|
||||
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
Date: Mon, 17 Jun 2013 13:32:11 +0300
|
||||
Subject: [PATCH] fbdev: add FBIOCOPYAREA ioctl
|
||||
Subject: [PATCH 059/703] fbdev: add FBIOCOPYAREA ioctl
|
||||
|
||||
Based on the patch authored by Ali Gholami Rudi at
|
||||
https://lkml.org/lkml/2009/7/13/153
|
||||
@ -13,10 +13,10 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
||||
|
||||
bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
---
|
||||
drivers/video/fbdev/bcm2708_fb.c | 109 +++++++++++++++++++++++++++++++++++++++
|
||||
drivers/video/fbdev/core/fbmem.c | 36 +++++++++++++
|
||||
include/uapi/linux/fb.h | 12 +++++
|
||||
3 files changed, 157 insertions(+)
|
||||
drivers/video/fbdev/bcm2708_fb.c | 119 ++++++++++++++++++++++++++++++-
|
||||
drivers/video/fbdev/core/fbmem.c | 36 ++++++++++
|
||||
include/uapi/linux/fb.h | 12 ++++
|
||||
3 files changed, 166 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/video/fbdev/bcm2708_fb.c
|
||||
+++ b/drivers/video/fbdev/bcm2708_fb.c
|
||||
@ -24,18 +24,28 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
#include <linux/console.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <asm/sizes.h>
|
||||
+#include <asm/uaccess.h>
|
||||
+#include <linux/uaccess.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
+#include <linux/cred.h>
|
||||
#include <soc/bcm2835/raspberrypi-firmware.h>
|
||||
|
||||
//#define BCM2708_FB_DEBUG
|
||||
@@ -426,6 +428,110 @@ static int bcm2708_fb_pan_display(struct
|
||||
@@ -95,6 +97,7 @@ struct bcm2708_fb {
|
||||
wait_queue_head_t dma_waitq;
|
||||
struct bcm2708_fb_stats stats;
|
||||
unsigned long fb_bus_address;
|
||||
+ struct { u32 base, length; } gpu;
|
||||
};
|
||||
|
||||
#define to_bcm2708(info) container_of(info, struct bcm2708_fb, fb)
|
||||
@@ -439,7 +442,118 @@ static int bcm2708_fb_pan_display(struct
|
||||
return result;
|
||||
}
|
||||
|
||||
+static void dma_memcpy(struct bcm2708_fb *fb, dma_addr_t dst, dma_addr_t src, int size)
|
||||
-static int bcm2708_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
|
||||
+static void dma_memcpy(struct bcm2708_fb *fb, dma_addr_t dst, dma_addr_t src,
|
||||
+ int size)
|
||||
+{
|
||||
+ int burst_size = (fb->dma_chan == 0) ? 8 : 2;
|
||||
+ struct bcm2708_dma_cb *cb = fb->cb_base;
|
||||
@ -56,6 +66,7 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ bcm_dma_wait_idle(fb->dma_chan_base);
|
||||
+ } else {
|
||||
+ void __iomem *dma_chan = fb->dma_chan_base;
|
||||
+
|
||||
+ cb->info |= BCM2708_DMA_INT_EN;
|
||||
+ bcm_dma_start(fb->dma_chan_base, fb->cb_handle);
|
||||
+ while (bcm_dma_is_busy(dma_chan)) {
|
||||
@ -68,8 +79,10 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ fb->stats.dma_copies++;
|
||||
+}
|
||||
+
|
||||
+#define INTALIAS_NORMAL(x) ((x)&~0xc0000000) // address with no aliases
|
||||
+#define INTALIAS_L1L2_NONALLOCATING(x) (((x)&~0xc0000000)|0x80000000) // cache coherent but non-allocating in L1 and L2
|
||||
+/* address with no aliases */
|
||||
+#define INTALIAS_NORMAL(x) ((x)&~0xc0000000)
|
||||
+/* cache coherent but non-allocating in L1 and L2 */
|
||||
+#define INTALIAS_L1L2_NONALLOCATING(x) (((x)&~0xc0000000)|0x80000000)
|
||||
+
|
||||
+static long vc_mem_copy(struct bcm2708_fb *fb, unsigned long arg)
|
||||
+{
|
||||
@ -79,11 +92,9 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ dma_addr_t bus_addr;
|
||||
+ long rc = 0;
|
||||
+ size_t offset;
|
||||
+ struct { u32 base, length; } gpu = {};
|
||||
+
|
||||
+ /* restrict this to root user */
|
||||
+ if (!uid_eq(current_euid(), GLOBAL_ROOT_UID))
|
||||
+ {
|
||||
+ if (!uid_eq(current_euid(), GLOBAL_ROOT_UID)) {
|
||||
+ rc = -EFAULT;
|
||||
+ goto out;
|
||||
+ }
|
||||
@ -98,16 +109,17 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ rc = rpi_firmware_property(fb->fw,
|
||||
+ RPI_FIRMWARE_GET_VC_MEMORY,
|
||||
+ &gpu, sizeof(gpu));
|
||||
+ if (rc != 0 || gpu.base == 0 || gpu.length == 0) {
|
||||
+ pr_err("[%s]: Unable to determine gpu memory %ld,%x,%x)\n", __func__, rc, gpu.base, gpu.length);
|
||||
+ if (fb->gpu.base == 0 || fb->gpu.length == 0) {
|
||||
+ pr_err("[%s]: Unable to determine gpu memory (%x,%x)\n",
|
||||
+ __func__, fb->gpu.base, fb->gpu.length);
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ if (INTALIAS_NORMAL(ioparam.src) < gpu.base || INTALIAS_NORMAL(ioparam.src) >= gpu.base + gpu.length) {
|
||||
+ pr_err("[%s]: Invalid memory access %x (%x-%x)", __func__, INTALIAS_NORMAL(ioparam.src), gpu.base, gpu.base + gpu.length);
|
||||
+ if (INTALIAS_NORMAL(ioparam.src) < fb->gpu.base ||
|
||||
+ INTALIAS_NORMAL(ioparam.src) >= fb->gpu.base + fb->gpu.length) {
|
||||
+ pr_err("[%s]: Invalid memory access %x (%x-%x)", __func__,
|
||||
+ INTALIAS_NORMAL(ioparam.src), fb->gpu.base,
|
||||
+ fb->gpu.base + fb->gpu.length);
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
@ -125,7 +137,9 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ size_t s = min(size, remaining);
|
||||
+ unsigned char *p = (unsigned char *)ioparam.src + offset;
|
||||
+ unsigned char *q = (unsigned char *)ioparam.dst + offset;
|
||||
+ dma_memcpy(fb, bus_addr, INTALIAS_L1L2_NONALLOCATING((dma_addr_t)p), size);
|
||||
+
|
||||
+ dma_memcpy(fb, bus_addr,
|
||||
+ INTALIAS_L1L2_NONALLOCATING((dma_addr_t)p), size);
|
||||
+ if (copy_to_user(q, buf, s) != 0) {
|
||||
+ pr_err("[%s]: failed to copy-to-user\n",
|
||||
+ __func__);
|
||||
@ -135,14 +149,17 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
+ }
|
||||
+out:
|
||||
+ if (buf)
|
||||
+ dma_free_coherent(fb->fb.device, PAGE_ALIGN(size), buf, bus_addr);
|
||||
+ dma_free_coherent(fb->fb.device, PAGE_ALIGN(size), buf,
|
||||
+ bus_addr);
|
||||
+ return rc;
|
||||
+}
|
||||
+
|
||||
static int bcm2708_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
|
||||
+static int bcm2708_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
+ unsigned long arg)
|
||||
{
|
||||
struct bcm2708_fb *fb = to_bcm2708(info);
|
||||
@@ -438,6 +544,9 @@ static int bcm2708_ioctl(struct fb_info
|
||||
u32 dummy = 0;
|
||||
@@ -451,6 +565,9 @@ static int bcm2708_ioctl(struct fb_info
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC,
|
||||
&dummy, sizeof(dummy));
|
||||
break;
|
||||
@ -154,7 +171,7 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
return -ENOTTY;
|
||||
--- a/drivers/video/fbdev/core/fbmem.c
|
||||
+++ b/drivers/video/fbdev/core/fbmem.c
|
||||
@@ -1084,6 +1084,31 @@ fb_blank(struct fb_info *info, int blank
|
||||
@@ -1081,6 +1081,31 @@ fb_blank(struct fb_info *info, int blank
|
||||
}
|
||||
EXPORT_SYMBOL(fb_blank);
|
||||
|
||||
@ -186,7 +203,7 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
@@ -1094,6 +1119,7 @@ static long do_fb_ioctl(struct fb_info *
|
||||
@@ -1091,6 +1116,7 @@ static long do_fb_ioctl(struct fb_info *
|
||||
struct fb_cmap cmap_from;
|
||||
struct fb_cmap_user cmap;
|
||||
struct fb_event event;
|
||||
@ -194,7 +211,7 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
void __user *argp = (void __user *)arg;
|
||||
long ret = 0;
|
||||
|
||||
@@ -1211,6 +1237,15 @@ static long do_fb_ioctl(struct fb_info *
|
||||
@@ -1208,6 +1234,15 @@ static long do_fb_ioctl(struct fb_info *
|
||||
unlock_fb_info(info);
|
||||
console_unlock();
|
||||
break;
|
||||
@ -210,17 +227,17 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
default:
|
||||
if (!lock_fb_info(info))
|
||||
return -ENODEV;
|
||||
@@ -1365,6 +1400,7 @@ static long fb_compat_ioctl(struct file
|
||||
@@ -1353,6 +1388,7 @@ static long fb_compat_ioctl(struct file
|
||||
case FBIOPAN_DISPLAY:
|
||||
case FBIOGET_CON2FBMAP:
|
||||
case FBIOPUT_CON2FBMAP:
|
||||
+ case FBIOCOPYAREA:
|
||||
arg = (unsigned long) compat_ptr(arg);
|
||||
/* fall through */
|
||||
case FBIOBLANK:
|
||||
ret = do_fb_ioctl(info, cmd, arg);
|
||||
--- a/include/uapi/linux/fb.h
|
||||
+++ b/include/uapi/linux/fb.h
|
||||
@@ -34,6 +34,12 @@
|
||||
@@ -35,6 +35,12 @@
|
||||
#define FBIOPUT_MODEINFO 0x4617
|
||||
#define FBIOGET_DISPINFO 0x4618
|
||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
|
||||
@ -233,7 +250,7 @@ bcm2708_fb: Add ioctl for reading gpu memory through dma
|
||||
|
||||
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
|
||||
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
|
||||
@@ -346,6 +352,12 @@ struct fb_copyarea {
|
||||
@@ -347,6 +353,12 @@ struct fb_copyarea {
|
||||
__u32 sy;
|
||||
};
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0d3a6a7484390def36773cb4fee0e16d6b8c45d1 Mon Sep 17 00:00:00 2001
|
||||
From 4052b5ba9b502747a6326b43e7f1437be36843b7 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 3 Jul 2013 00:54:08 +0100
|
||||
Subject: [PATCH] Added Device IDs for August DVB-T 205
|
||||
Subject: [PATCH 060/703] Added Device IDs for August DVB-T 205
|
||||
|
||||
---
|
||||
drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++
|
||||
@ -9,7 +9,7 @@ Subject: [PATCH] Added Device IDs for August DVB-T 205
|
||||
|
||||
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
@@ -1916,6 +1916,10 @@ static const struct usb_device_id rtl28x
|
||||
@@ -1917,6 +1917,10 @@ static const struct usb_device_id rtl28x
|
||||
&rtl28xxu_props, "Compro VideoMate U650F", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
|
||||
&rtl28xxu_props, "MaxMedia HU394-T", NULL) },
|
@ -1,7 +1,7 @@
|
||||
From 18c740925ca44b8a2f55ac201acf935f9fa97515 Mon Sep 17 00:00:00 2001
|
||||
From adc948965c7c2c52df7c93acffe5bd1d71dce462 Mon Sep 17 00:00:00 2001
|
||||
From: Gordon Hollingworth <gordon@raspberrypi.org>
|
||||
Date: Tue, 12 May 2015 14:47:56 +0100
|
||||
Subject: [PATCH] rpi-ft5406: Add touchscreen driver for pi LCD display
|
||||
Subject: [PATCH 061/703] rpi-ft5406: Add touchscreen driver for pi LCD display
|
||||
|
||||
Fix driver detection failure Check that the buffer response is non-zero meaning the touchscreen was detected
|
||||
|
||||
@ -11,16 +11,15 @@ RPI-FT5406: Enable aarch64 support through explicit iomem interface
|
||||
|
||||
Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
|
||||
---
|
||||
drivers/input/touchscreen/Kconfig | 7 +
|
||||
drivers/input/touchscreen/Makefile | 1 +
|
||||
drivers/input/touchscreen/rpi-ft5406.c | 292 +++++++++++++++++++++++++++++
|
||||
include/soc/bcm2835/raspberrypi-firmware.h | 1 +
|
||||
4 files changed, 301 insertions(+)
|
||||
drivers/input/touchscreen/Kconfig | 7 +
|
||||
drivers/input/touchscreen/Makefile | 1 +
|
||||
drivers/input/touchscreen/rpi-ft5406.c | 292 +++++++++++++++++++++++++
|
||||
3 files changed, 300 insertions(+)
|
||||
create mode 100644 drivers/input/touchscreen/rpi-ft5406.c
|
||||
|
||||
--- a/drivers/input/touchscreen/Kconfig
|
||||
+++ b/drivers/input/touchscreen/Kconfig
|
||||
@@ -638,6 +638,13 @@ config TOUCHSCREEN_EDT_FT5X06
|
||||
@@ -696,6 +696,13 @@ config TOUCHSCREEN_EDT_FT5X06
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called edt-ft5x06.
|
||||
|
||||
@ -36,7 +35,7 @@ Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
|
||||
depends on (SH_MIGOR || COMPILE_TEST) && I2C
|
||||
--- a/drivers/input/touchscreen/Makefile
|
||||
+++ b/drivers/input/touchscreen/Makefile
|
||||
@@ -29,6 +29,7 @@ obj-$(CONFIG_TOUCHSCREEN_DA9034) += da90
|
||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_TOUCHSCREEN_DA9034) += da90
|
||||
obj-$(CONFIG_TOUCHSCREEN_DA9052) += da9052_tsi.o
|
||||
obj-$(CONFIG_TOUCHSCREEN_DYNAPRO) += dynapro.o
|
||||
obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o
|
||||
@ -339,13 +338,3 @@ Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
|
||||
+MODULE_AUTHOR("Gordon Hollingworth");
|
||||
+MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406");
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
|
||||
@@ -115,6 +115,7 @@ enum rpi_firmware_property_tag {
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET = 0x00048009,
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_OVERSCAN = 0x0004800a,
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE = 0x0004800b,
|
||||
+ RPI_FIRMWARE_FRAMEBUFFER_SET_TOUCHBUF = 0x0004801f,
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC = 0x0004800e,
|
||||
RPI_FIRMWARE_FRAMEBUFFER_SET_BACKLIGHT = 0x0004800f,
|
||||
|
@ -1,7 +1,8 @@
|
||||
From ebd731dd71ec9728a5a87ec1cd695be15828c32c Mon Sep 17 00:00:00 2001
|
||||
From e182f20d9faf1853dde2ab827a228011fa1dbc80 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Mon, 28 Nov 2016 16:50:04 +0000
|
||||
Subject: [PATCH] Improve __copy_to_user and __copy_from_user performance
|
||||
Subject: [PATCH 062/703] Improve __copy_to_user and __copy_from_user
|
||||
performance
|
||||
|
||||
Provide a __copy_from_user that uses memcpy. On BCM2708, use
|
||||
optimised memcpy/memmove/memcmp/memset implementations.
|
||||
@ -21,18 +22,18 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
---
|
||||
arch/arm/include/asm/string.h | 5 +
|
||||
arch/arm/include/asm/uaccess.h | 3 +
|
||||
arch/arm/lib/Makefile | 15 +-
|
||||
arch/arm/lib/arm-mem.h | 159 ++++++++++++
|
||||
arch/arm/lib/Makefile | 14 +-
|
||||
arch/arm/lib/arm-mem.h | 159 +++++++++
|
||||
arch/arm/lib/copy_from_user.S | 4 +-
|
||||
arch/arm/lib/exports_rpi.c | 37 +++
|
||||
arch/arm/lib/memcmp_rpi.S | 285 +++++++++++++++++++++
|
||||
arch/arm/lib/memcpy_rpi.S | 61 +++++
|
||||
arch/arm/lib/memcpymove.h | 506 +++++++++++++++++++++++++++++++++++++
|
||||
arch/arm/lib/memmove_rpi.S | 61 +++++
|
||||
arch/arm/lib/memset_rpi.S | 123 +++++++++
|
||||
arch/arm/lib/uaccess_with_memcpy.c | 120 ++++++++-
|
||||
arch/arm/lib/memcmp_rpi.S | 285 ++++++++++++++++
|
||||
arch/arm/lib/memcpy_rpi.S | 61 ++++
|
||||
arch/arm/lib/memcpymove.h | 506 +++++++++++++++++++++++++++++
|
||||
arch/arm/lib/memmove_rpi.S | 61 ++++
|
||||
arch/arm/lib/memset_rpi.S | 128 ++++++++
|
||||
arch/arm/lib/uaccess_with_memcpy.c | 120 ++++++-
|
||||
arch/arm/mach-bcm/Kconfig | 7 +
|
||||
13 files changed, 1380 insertions(+), 6 deletions(-)
|
||||
13 files changed, 1385 insertions(+), 5 deletions(-)
|
||||
create mode 100644 arch/arm/lib/arm-mem.h
|
||||
create mode 100644 arch/arm/lib/exports_rpi.c
|
||||
create mode 100644 arch/arm/lib/memcmp_rpi.S
|
||||
@ -43,21 +44,19 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/arch/arm/include/asm/string.h
|
||||
+++ b/arch/arm/include/asm/string.h
|
||||
@@ -24,6 +24,11 @@ extern void * memchr(const void *, int,
|
||||
#define __HAVE_ARCH_MEMSET
|
||||
extern void * memset(void *, int, __kernel_size_t);
|
||||
@@ -39,4 +39,9 @@ static inline void *memset64(uint64_t *p
|
||||
return __memset64(p, v, n * 8, v >> 32);
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_BCM2835_FAST_MEMCPY
|
||||
+#define __HAVE_ARCH_MEMCMP
|
||||
+extern int memcmp(const void *, const void *, size_t);
|
||||
+#endif
|
||||
+
|
||||
extern void __memzero(void *ptr, __kernel_size_t n);
|
||||
|
||||
#define memset(p,v,n) \
|
||||
#endif
|
||||
--- a/arch/arm/include/asm/uaccess.h
|
||||
+++ b/arch/arm/include/asm/uaccess.h
|
||||
@@ -489,6 +489,9 @@ do { \
|
||||
@@ -496,6 +496,9 @@ do { \
|
||||
extern unsigned long __must_check
|
||||
arm_copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
|
||||
@ -65,23 +64,22 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+__copy_from_user_std(void *to, const void __user *from, unsigned long n);
|
||||
+
|
||||
static inline unsigned long __must_check
|
||||
__arch_copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
raw_copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
--- a/arch/arm/lib/Makefile
|
||||
+++ b/arch/arm/lib/Makefile
|
||||
@@ -6,9 +6,8 @@
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
|
||||
csumpartialcopy.o csumpartialcopyuser.o clearbit.o \
|
||||
- delay.o delay-loop.o findbit.o memchr.o memcpy.o \
|
||||
- memmove.o memset.o memzero.o setbit.o \
|
||||
- strchr.o strrchr.o \
|
||||
+ delay.o delay-loop.o findbit.o memchr.o memzero.o \
|
||||
+ setbit.o strchr.o strrchr.o \
|
||||
- memmove.o memset.o setbit.o \
|
||||
+ delay.o delay-loop.o findbit.o memchr.o \
|
||||
+ setbit.o \
|
||||
strchr.o strrchr.o \
|
||||
testchangebit.o testclearbit.o testsetbit.o \
|
||||
ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \
|
||||
ucmpdi2.o lib1funcs.o div64.o \
|
||||
@@ -18,6 +17,16 @@ lib-y := backtrace.o changebit.o csumip
|
||||
@@ -19,6 +19,16 @@ lib-y := backtrace.o changebit.o csumip
|
||||
mmu-y := clear_user.o copy_page.o getuser.o putuser.o \
|
||||
copy_from_user.o copy_to_user.o
|
||||
|
||||
@ -272,11 +270,10 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
#ifdef CONFIG_CPU_SPECTRE
|
||||
get_thread_info r3
|
||||
ldr r3, [r3, #TI_ADDR_LIMIT]
|
||||
@@ -102,7 +103,7 @@ ENTRY(arm_copy_from_user)
|
||||
|
||||
@@ -99,6 +100,7 @@ ENTRY(arm_copy_from_user)
|
||||
#include "copy_template.S"
|
||||
|
||||
-ENDPROC(arm_copy_from_user)
|
||||
ENDPROC(arm_copy_from_user)
|
||||
+ENDPROC(__copy_from_user_std)
|
||||
|
||||
.pushsection .fixup,"ax"
|
||||
@ -1248,7 +1245,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ENDPROC(memmove)
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/lib/memset_rpi.S
|
||||
@@ -0,0 +1,123 @@
|
||||
@@ -0,0 +1,128 @@
|
||||
+/*
|
||||
+Copyright (c) 2013, Raspberry Pi Foundation
|
||||
+Copyright (c) 2013, RISC OS Open Ltd
|
||||
@ -1303,6 +1300,9 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ */
|
||||
+ENTRY(mmioset)
|
||||
+ENTRY(memset)
|
||||
+ENTRY(__memset32)
|
||||
+ENTRY(__memset64)
|
||||
+
|
||||
+ S .req a1
|
||||
+ DAT0 .req a2
|
||||
+ N .req a3
|
||||
@ -1310,9 +1310,9 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ DAT2 .req ip
|
||||
+ DAT3 .req lr
|
||||
+
|
||||
+ orr DAT0, DAT0, lsl #8
|
||||
+ orr DAT0, DAT0, DAT0, lsl #8
|
||||
+ push {S, lr}
|
||||
+ orr DAT0, DAT0, lsl #16
|
||||
+ orr DAT0, DAT0, DAT0, lsl #16
|
||||
+ mov DAT1, DAT0
|
||||
+
|
||||
+ /* See if we're guaranteed to have at least one 16-byte aligned 16-byte write */
|
||||
@ -1370,6 +1370,8 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ .unreq DAT1
|
||||
+ .unreq DAT2
|
||||
+ .unreq DAT3
|
||||
+ENDPROC(__memset64)
|
||||
+ENDPROC(__memset32)
|
||||
+ENDPROC(memset)
|
||||
+ENDPROC(mmioset)
|
||||
--- a/arch/arm/lib/uaccess_with_memcpy.c
|
||||
@ -1502,7 +1504,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
unsigned long ua_flags = uaccess_save_and_enable();
|
||||
n = __copy_to_user_std(to, from, n);
|
||||
uaccess_restore(ua_flags);
|
||||
@@ -156,6 +252,26 @@ arm_copy_to_user(void __user *to, const
|
||||
@@ -157,6 +253,26 @@ arm_copy_to_user(void __user *to, const
|
||||
}
|
||||
return n;
|
||||
}
|
||||
@ -1531,7 +1533,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
__clear_user_memset(void __user *addr, unsigned long n)
|
||||
--- a/arch/arm/mach-bcm/Kconfig
|
||||
+++ b/arch/arm/mach-bcm/Kconfig
|
||||
@@ -174,6 +174,13 @@ config ARCH_BCM_53573
|
||||
@@ -187,6 +187,13 @@ config ARCH_BCM_53573
|
||||
The base chip is BCM53573 and there are some packaging modifications
|
||||
like BCM47189 and BCM47452.
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7e8bb86739df17e38a0ebe6e17b7a9056ab421e9 Mon Sep 17 00:00:00 2001
|
||||
From 985bdee303c68ce16a6ad0b0e317c86b9669ab1a Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Thu, 25 Jun 2015 12:16:11 +0100
|
||||
Subject: [PATCH] gpio-poweroff: Allow it to work on Raspberry Pi
|
||||
Subject: [PATCH 063/703] gpio-poweroff: Allow it to work on Raspberry Pi
|
||||
|
||||
The Raspberry Pi firmware manages the power-down and reboot
|
||||
process. To do this it installs a pm_power_off handler, causing
|
||||
@ -20,7 +20,7 @@ of the trigger signal may be preferable.
|
||||
|
||||
--- a/drivers/power/reset/gpio-poweroff.c
|
||||
+++ b/drivers/power/reset/gpio-poweroff.c
|
||||
@@ -49,9 +49,11 @@ static int gpio_poweroff_probe(struct pl
|
||||
@@ -51,9 +51,11 @@ static int gpio_poweroff_probe(struct pl
|
||||
{
|
||||
bool input = false;
|
||||
enum gpiod_flags flags;
|
@ -1,22 +1,22 @@
|
||||
From 157f59328885549a0f2c1fe35e9ec3aff0f0b52e Mon Sep 17 00:00:00 2001
|
||||
From cc60f52641f8debefb1c37b59379ccdc84e1938f Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <pelwell@users.noreply.github.com>
|
||||
Date: Tue, 14 Jul 2015 14:32:47 +0100
|
||||
Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
Subject: [PATCH 064/703] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
|
||||
---
|
||||
drivers/input/joystick/Kconfig | 8 +
|
||||
drivers/input/joystick/Makefile | 1 +
|
||||
drivers/input/joystick/rpisense-js.c | 153 ++++++++++++++++
|
||||
drivers/input/joystick/rpisense-js.c | 153 ++++++++++++
|
||||
drivers/mfd/Kconfig | 8 +
|
||||
drivers/mfd/Makefile | 1 +
|
||||
drivers/mfd/rpisense-core.c | 157 +++++++++++++++++
|
||||
drivers/video/fbdev/Kconfig | 13 ++
|
||||
drivers/mfd/Makefile | 2 +-
|
||||
drivers/mfd/rpisense-core.c | 157 ++++++++++++
|
||||
drivers/video/fbdev/Kconfig | 13 +
|
||||
drivers/video/fbdev/Makefile | 1 +
|
||||
drivers/video/fbdev/rpisense-fb.c | 293 +++++++++++++++++++++++++++++++
|
||||
include/linux/mfd/rpisense/core.h | 47 +++++
|
||||
include/linux/mfd/rpisense/framebuffer.h | 32 ++++
|
||||
include/linux/mfd/rpisense/joystick.h | 35 ++++
|
||||
12 files changed, 749 insertions(+)
|
||||
drivers/video/fbdev/rpisense-fb.c | 293 +++++++++++++++++++++++
|
||||
include/linux/mfd/rpisense/core.h | 47 ++++
|
||||
include/linux/mfd/rpisense/framebuffer.h | 32 +++
|
||||
include/linux/mfd/rpisense/joystick.h | 35 +++
|
||||
12 files changed, 749 insertions(+), 1 deletion(-)
|
||||
create mode 100644 drivers/input/joystick/rpisense-js.c
|
||||
create mode 100644 drivers/mfd/rpisense-core.c
|
||||
create mode 100644 drivers/video/fbdev/rpisense-fb.c
|
||||
@ -26,9 +26,9 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
|
||||
--- a/drivers/input/joystick/Kconfig
|
||||
+++ b/drivers/input/joystick/Kconfig
|
||||
@@ -330,4 +330,12 @@ config JOYSTICK_MAPLE
|
||||
To compile this as a module choose M here: the module will be called
|
||||
maplecontrol.
|
||||
@@ -361,4 +361,12 @@ config JOYSTICK_PXRC
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called pxrc.
|
||||
|
||||
+config JOYSTICK_RPISENSE
|
||||
+ tristate "Raspberry Pi Sense HAT joystick"
|
||||
@ -41,7 +41,7 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
endif
|
||||
--- a/drivers/input/joystick/Makefile
|
||||
+++ b/drivers/input/joystick/Makefile
|
||||
@@ -32,4 +32,5 @@ obj-$(CONFIG_JOYSTICK_WARRIOR) += warri
|
||||
@@ -35,4 +35,5 @@ obj-$(CONFIG_JOYSTICK_WARRIOR) += warri
|
||||
obj-$(CONFIG_JOYSTICK_XPAD) += xpad.o
|
||||
obj-$(CONFIG_JOYSTICK_ZHENHUA) += zhenhua.o
|
||||
obj-$(CONFIG_JOYSTICK_WALKERA0701) += walkera0701.o
|
||||
@ -222,10 +222,11 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
select MFD_CORE
|
||||
--- a/drivers/mfd/Makefile
|
||||
+++ b/drivers/mfd/Makefile
|
||||
@@ -211,3 +211,4 @@ obj-$(CONFIG_INTEL_SOC_PMIC) += intel-so
|
||||
obj-$(CONFIG_MFD_MT6397) += mt6397-core.o
|
||||
|
||||
obj-$(CONFIG_MFD_ALTERA_A10SR) += altera-a10sr.o
|
||||
@@ -240,4 +240,4 @@ obj-$(CONFIG_MFD_MXS_LRADC) += mxs-l
|
||||
obj-$(CONFIG_MFD_SC27XX_PMIC) += sprd-sc27xx-spi.o
|
||||
obj-$(CONFIG_RAVE_SP_CORE) += rave-sp.o
|
||||
obj-$(CONFIG_MFD_ROHM_BD718XX) += rohm-bd718x7.o
|
||||
-
|
||||
+obj-$(CONFIG_MFD_RPISENSE_CORE) += rpisense-core.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/mfd/rpisense-core.c
|
||||
@ -389,7 +390,7 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
+
|
||||
--- a/drivers/video/fbdev/Kconfig
|
||||
+++ b/drivers/video/fbdev/Kconfig
|
||||
@@ -2504,3 +2504,16 @@ config FB_SM712
|
||||
@@ -2355,3 +2355,16 @@ config FB_SM712
|
||||
This driver is also available as a module. The module will be
|
||||
called sm712fb. If you want to compile it as a module, say M
|
||||
here and read <file:Documentation/kbuild/modules.txt>.
|
||||
@ -408,7 +409,7 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
|
||||
+ This is the framebuffer driver for the Raspberry Pi Sense HAT
|
||||
--- a/drivers/video/fbdev/Makefile
|
||||
+++ b/drivers/video/fbdev/Makefile
|
||||
@@ -147,6 +147,7 @@ obj-$(CONFIG_FB_DA8XX) += da8xx-fb.o
|
||||
@@ -138,6 +138,7 @@ obj-$(CONFIG_FB_DA8XX) += da8xx-fb.o
|
||||
obj-$(CONFIG_FB_MXS) += mxsfb.o
|
||||
obj-$(CONFIG_FB_SSD1307) += ssd1307fb.o
|
||||
obj-$(CONFIG_FB_SIMPLE) += simplefb.o
|
@ -0,0 +1,80 @@
|
||||
From 099cc7ff40bca5c9203100aaca2ab69bc7b669ac Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Thu, 22 Feb 2018 11:55:06 +0100
|
||||
Subject: [PATCH 065/703] ASoC: pcm512x: implement set_tdm_slot interface
|
||||
|
||||
PCM512x can accept data padded with additional BCLK cycles
|
||||
but the driver currently lacks an interface to configure this.
|
||||
|
||||
This leads to the problem that S24_LE format in master mode
|
||||
can result in non-integer clock divisors and pcm512x running
|
||||
at a rather off rate.
|
||||
|
||||
For example 48kHz with 48fs BCLK and SCLK at 24.576MHz uses
|
||||
a divisor of 10 (rounded down from 10.6666) and results in a
|
||||
51.2kHz LRCLK. With 64fs BCLK a divisor of 8 is used and
|
||||
LRCLK runs at exactly 48kHz.
|
||||
|
||||
Fix this by providing a minimal set_tdm_slot implementation
|
||||
so machine drivers can optionally configure custom BCLK ratios.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
sound/soc/codecs/pcm512x.c | 28 +++++++++++++++++++++++++++-
|
||||
1 file changed, 27 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/sound/soc/codecs/pcm512x.c
|
||||
+++ b/sound/soc/codecs/pcm512x.c
|
||||
@@ -53,6 +53,7 @@ struct pcm512x_priv {
|
||||
unsigned long overclock_pll;
|
||||
unsigned long overclock_dac;
|
||||
unsigned long overclock_dsp;
|
||||
+ int lrclk_div;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -851,7 +852,10 @@ static int pcm512x_set_dividers(struct s
|
||||
int fssp;
|
||||
int gpio;
|
||||
|
||||
- lrclk_div = snd_soc_params_to_frame_size(params);
|
||||
+ if (pcm512x->lrclk_div)
|
||||
+ lrclk_div = pcm512x->lrclk_div;
|
||||
+ else
|
||||
+ lrclk_div = snd_soc_params_to_frame_size(params);
|
||||
if (lrclk_div == 0) {
|
||||
dev_err(dev, "No LRCLK?\n");
|
||||
return -EINVAL;
|
||||
@@ -1319,10 +1323,32 @@ static int pcm512x_set_fmt(struct snd_so
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int pcm512x_set_tdm_slot(struct snd_soc_dai *dai,
|
||||
+ unsigned int tx_mask, unsigned int rx_mask,
|
||||
+ int slots, int width)
|
||||
+{
|
||||
+ struct snd_soc_component *component = dai->component;
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ switch (slots) {
|
||||
+ case 0:
|
||||
+ pcm512x->lrclk_div = 0;
|
||||
+ return 0;
|
||||
+ case 2:
|
||||
+ if (tx_mask != 0x03 || rx_mask != 0x03)
|
||||
+ return -EINVAL;
|
||||
+ pcm512x->lrclk_div = slots * width;
|
||||
+ return 0;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static const struct snd_soc_dai_ops pcm512x_dai_ops = {
|
||||
.startup = pcm512x_dai_startup,
|
||||
.hw_params = pcm512x_hw_params,
|
||||
.set_fmt = pcm512x_set_fmt,
|
||||
+ .set_tdm_slot = pcm512x_set_tdm_slot,
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_driver pcm512x_dai = {
|
@ -0,0 +1,123 @@
|
||||
From 2112d06f09c1ecd601de065351bc60b08fc53bca Mon Sep 17 00:00:00 2001
|
||||
From: Florian Meier <florian.meier@koalo.de>
|
||||
Date: Mon, 25 Jan 2016 15:48:59 +0000
|
||||
Subject: [PATCH 066/703] ASoC: Add support for Rpi-DAC
|
||||
|
||||
---
|
||||
sound/soc/codecs/Kconfig | 5 +++
|
||||
sound/soc/codecs/Makefile | 2 ++
|
||||
sound/soc/codecs/pcm1794a.c | 69 +++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 76 insertions(+)
|
||||
create mode 100644 sound/soc/codecs/pcm1794a.c
|
||||
|
||||
--- a/sound/soc/codecs/Kconfig
|
||||
+++ b/sound/soc/codecs/Kconfig
|
||||
@@ -118,6 +118,7 @@ config SND_SOC_ALL_CODECS
|
||||
select SND_SOC_PCM179X_SPI if SPI_MASTER
|
||||
select SND_SOC_PCM186X_I2C if I2C
|
||||
select SND_SOC_PCM186X_SPI if SPI_MASTER
|
||||
+ select SND_SOC_PCM1794A if I2C
|
||||
select SND_SOC_PCM3008
|
||||
select SND_SOC_PCM3168A_I2C if I2C
|
||||
select SND_SOC_PCM3168A_SPI if SPI_MASTER
|
||||
@@ -834,6 +835,10 @@ config SND_SOC_RT5616
|
||||
tristate "Realtek RT5616 CODEC"
|
||||
depends on I2C
|
||||
|
||||
+config SND_SOC_PCM1794A
|
||||
+ tristate
|
||||
+ depends on I2C
|
||||
+
|
||||
config SND_SOC_RT5631
|
||||
tristate "Realtek ALC5631/RT5631 CODEC"
|
||||
depends on I2C
|
||||
--- a/sound/soc/codecs/Makefile
|
||||
+++ b/sound/soc/codecs/Makefile
|
||||
@@ -118,6 +118,7 @@ snd-soc-pcm179x-spi-objs := pcm179x-spi.
|
||||
snd-soc-pcm186x-objs := pcm186x.o
|
||||
snd-soc-pcm186x-i2c-objs := pcm186x-i2c.o
|
||||
snd-soc-pcm186x-spi-objs := pcm186x-spi.o
|
||||
+snd-soc-pcm1794a-objs := pcm1794a.o
|
||||
snd-soc-pcm3008-objs := pcm3008.o
|
||||
snd-soc-pcm3168a-objs := pcm3168a.o
|
||||
snd-soc-pcm3168a-i2c-objs := pcm3168a-i2c.o
|
||||
@@ -386,6 +387,7 @@ obj-$(CONFIG_SND_SOC_PCM5102A) += snd-so
|
||||
obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o
|
||||
obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o
|
||||
obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o
|
||||
+obj-$(CONFIG_SND_SOC_PCM1794A) += snd-soc-pcm1794a.o
|
||||
obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o
|
||||
obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o
|
||||
obj-$(CONFIG_SND_SOC_RT1305) += snd-soc-rt1305.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/codecs/pcm1794a.c
|
||||
@@ -0,0 +1,69 @@
|
||||
+/*
|
||||
+ * Driver for the PCM1794A codec
|
||||
+ *
|
||||
+ * Author: Florian Meier <florian.meier@koalo.de>
|
||||
+ * Copyright 2013
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+
|
||||
+#include <sound/soc.h>
|
||||
+
|
||||
+static struct snd_soc_dai_driver pcm1794a_dai = {
|
||||
+ .name = "pcm1794a-hifi",
|
||||
+ .playback = {
|
||||
+ .channels_min = 2,
|
||||
+ .channels_max = 2,
|
||||
+ .rates = SNDRV_PCM_RATE_8000_192000,
|
||||
+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
|
||||
+ SNDRV_PCM_FMTBIT_S24_LE
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_component_driver soc_component_dev_pcm1794a;
|
||||
+
|
||||
+static int pcm1794a_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_register_component(&pdev->dev, &soc_component_dev_pcm1794a,
|
||||
+ &pcm1794a_dai, 1);
|
||||
+}
|
||||
+
|
||||
+static int pcm1794a_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ snd_soc_unregister_component(&pdev->dev);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id pcm1794a_of_match[] = {
|
||||
+ { .compatible = "ti,pcm1794a", },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, pcm1794a_of_match);
|
||||
+
|
||||
+static struct platform_driver pcm1794a_component_driver = {
|
||||
+ .probe = pcm1794a_probe,
|
||||
+ .remove = pcm1794a_remove,
|
||||
+ .driver = {
|
||||
+ .name = "pcm1794a-codec",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = of_match_ptr(pcm1794a_of_match),
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(pcm1794a_component_driver);
|
||||
+
|
||||
+MODULE_DESCRIPTION("ASoC PCM1794A codec driver");
|
||||
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
|
||||
+MODULE_LICENSE("GPL v2");
|
@ -1,7 +1,7 @@
|
||||
From fcfe9087b79176b5d8afd0ecc4c66013866ef239 Mon Sep 17 00:00:00 2001
|
||||
From c8aa8a71618c103d09ae7fa05d5f65c111581194 Mon Sep 17 00:00:00 2001
|
||||
From: Gordon Garrity <gordon@iqaudio.com>
|
||||
Date: Sat, 8 Mar 2014 16:56:57 +0000
|
||||
Subject: [PATCH] Add IQaudIO Sound Card support for Raspberry Pi
|
||||
Subject: [PATCH 067/703] Add IQaudIO Sound Card support for Raspberry Pi
|
||||
|
||||
Set a limit of 0dB on Digital Volume Control
|
||||
|
||||
@ -54,41 +54,21 @@ Revision 6, don't attempt to "one-shot" unmute amp, unless card is
|
||||
successfully registered.
|
||||
|
||||
Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
|
||||
ASoC: iqaudio-dac: fix S24_LE format
|
||||
|
||||
Remove set_bclk_ratio call so 24-bit data is transmitted in
|
||||
24 bclk cycles.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 ++
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/iqaudio-dac.c | 234 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 243 insertions(+)
|
||||
sound/soc/bcm/iqaudio-dac.c | 221 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 221 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/iqaudio-dac.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -37,3 +37,10 @@ config SND_BCM2708_SOC_RPI_DAC
|
||||
select SND_SOC_PCM1794A
|
||||
help
|
||||
Say Y or M if you want to add support for RPi-DAC.
|
||||
+
|
||||
+config SND_BCM2708_SOC_IQAUDIO_DAC
|
||||
+ tristate "Support for IQaudIO-DAC"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_PCM512x_I2C
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for IQaudIO-DAC.
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -12,7 +12,9 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-
|
||||
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
|
||||
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
|
||||
snd-soc-rpi-dac-objs := rpi-dac.o
|
||||
+snd-soc-iqaudio-dac-objs := iqaudio-dac.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/iqaudio-dac.c
|
||||
@@ -0,0 +1,234 @@
|
||||
@@ -0,0 +1,221 @@
|
||||
+/*
|
||||
+ * ASoC Driver for IQaudIO DAC
|
||||
+ *
|
||||
@ -134,18 +114,6 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_iqaudio_dac_hw_params(struct snd_pcm_substream *substream,
|
||||
+ struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+
|
||||
+ unsigned int sample_bits =
|
||||
+ snd_pcm_format_physical_width(params_format(params));
|
||||
+
|
||||
+ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2);
|
||||
+}
|
||||
+
|
||||
+static void snd_rpi_iqaudio_gpio_mute(struct snd_soc_card *card)
|
||||
+{
|
||||
+ if (mute_gpio) {
|
||||
@ -167,7 +135,11 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+static int snd_rpi_iqaudio_set_bias_level(struct snd_soc_card *card,
|
||||
+ struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level)
|
||||
+{
|
||||
+ struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai;
|
||||
+ struct snd_soc_pcm_runtime *rtd;
|
||||
+ struct snd_soc_dai *codec_dai;
|
||||
+
|
||||
+ rtd = snd_soc_get_pcm_runtime(card, card->dai_link[0].name);
|
||||
+ codec_dai = rtd->codec_dai;
|
||||
+
|
||||
+ if (dapm->dev != codec_dai->dev)
|
||||
+ return 0;
|
||||
@ -196,11 +168,6 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* machine stream operations */
|
||||
+static struct snd_soc_ops snd_rpi_iqaudio_dac_ops = {
|
||||
+ .hw_params = snd_rpi_iqaudio_dac_hw_params,
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_rpi_iqaudio_dac_dai[] = {
|
||||
+{
|
||||
+ .cpu_dai_name = "bcm2708-i2s.0",
|
||||
@ -209,7 +176,6 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ .codec_name = "pcm512x.1-004c",
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .ops = &snd_rpi_iqaudio_dac_ops,
|
||||
+ .init = snd_rpi_iqaudio_dac_init,
|
||||
+},
|
||||
+};
|
||||
@ -284,8 +250,9 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_rpi_iqaudio_dac);
|
||||
+ if (ret) {
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+ if (ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
@ -1,7 +1,7 @@
|
||||
From 9c6b8bd0db7564a2124290e3bc30215906371fa9 Mon Sep 17 00:00:00 2001
|
||||
From c383086fd519fcf61f3c5a35e937685f6f34832e Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Matuschek <info@crazy-audio.com>
|
||||
Date: Mon, 4 Aug 2014 10:06:56 +0200
|
||||
Subject: [PATCH] Added support for HiFiBerry DAC+
|
||||
Subject: [PATCH 068/703] Added support for HiFiBerry DAC+
|
||||
|
||||
The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses
|
||||
a different codec chip (PCM5122), therefore a new driver is necessary.
|
||||
@ -26,26 +26,54 @@ Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
|
||||
with Pi as master for bit and frame clock.
|
||||
|
||||
Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
|
||||
Fixed a bug when using 352.8kHz sample rate
|
||||
|
||||
Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
|
||||
|
||||
ASoC: pcm512x: revert downstream changes
|
||||
|
||||
This partially reverts commit 185ea05465aac8bf02a0d2b2f4289d42c72870b7
|
||||
which was added by https://github.com/raspberrypi/linux/pull/1152
|
||||
|
||||
The downstream pcm512x changes caused a regression, it broke normal
|
||||
use of the 24bit format with the codec, eg when using simple-audio-card.
|
||||
|
||||
The actual bug with 24bit playback is the incorrect usage
|
||||
of physical_width in various drivers in the downstream tree
|
||||
which causes 24bit data to be transmitted with 32 clock
|
||||
cycles. So it's not the pcm512x that needs fixing, it's the
|
||||
soundcard drivers.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
ASoC: hifiberry_dacplus: fix S24_LE format
|
||||
|
||||
Remove set_bclk_ratio call so 24-bit data is transmitted in
|
||||
24 bclk cycles.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
ASoC: hifiberry_dacplus: transmit S24_LE with 64 BCLK cycles
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/clk/Makefile | 1 +
|
||||
drivers/clk/clk-hifiberry-dacpro.c | 160 +++++++++++++++++
|
||||
sound/soc/bcm/Kconfig | 7 +
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/hifiberry_dacplus.c | 359 +++++++++++++++++++++++++++++++++++++
|
||||
sound/soc/codecs/pcm512x.c | 3 +-
|
||||
6 files changed, 531 insertions(+), 1 deletion(-)
|
||||
drivers/clk/clk-hifiberry-dacpro.c | 160 +++++++++++++
|
||||
sound/soc/bcm/hifiberry_dacplus.c | 352 +++++++++++++++++++++++++++++
|
||||
3 files changed, 513 insertions(+)
|
||||
create mode 100644 drivers/clk/clk-hifiberry-dacpro.c
|
||||
create mode 100644 sound/soc/bcm/hifiberry_dacplus.c
|
||||
|
||||
--- a/drivers/clk/Makefile
|
||||
+++ b/drivers/clk/Makefile
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_ARCH_CLPS711X) += clk-clps
|
||||
obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o
|
||||
obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o
|
||||
@@ -30,6 +30,7 @@ obj-$(CONFIG_COMMON_CLK_GEMINI) += clk-
|
||||
obj-$(CONFIG_COMMON_CLK_ASPEED) += clk-aspeed.o
|
||||
obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
|
||||
obj-$(CONFIG_CLK_HSDK) += clk-hsdk-pll.o
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += clk-hifiberry-dacpro.o
|
||||
obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
|
||||
obj-$(CONFIG_ARCH_MB86S7X) += clk-mb86s7x.o
|
||||
obj-$(CONFIG_COMMON_CLK_MAX9485) += clk-max9485.o
|
||||
obj-$(CONFIG_ARCH_MOXART) += clk-moxart.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/clk/clk-hifiberry-dacpro.c
|
||||
@ -210,41 +238,9 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+MODULE_DESCRIPTION("HiFiBerry DAC Pro clock driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
+MODULE_ALIAS("platform:clk-hifiberry-dacpro");
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -24,6 +24,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC
|
||||
help
|
||||
Say Y or M if you want to add support for HifiBerry DAC.
|
||||
|
||||
+config SND_BCM2708_SOC_HIFIBERRY_DACPLUS
|
||||
+ tristate "Support for HifiBerry DAC+"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_PCM512x
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for HifiBerry DAC+.
|
||||
+
|
||||
config SND_BCM2708_SOC_HIFIBERRY_DIGI
|
||||
tristate "Support for HifiBerry Digi"
|
||||
depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -10,11 +10,13 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-
|
||||
|
||||
# BCM2708 Machine Support
|
||||
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
|
||||
+snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
|
||||
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
|
||||
snd-soc-rpi-dac-objs := rpi-dac.o
|
||||
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/hifiberry_dacplus.c
|
||||
@@ -0,0 +1,359 @@
|
||||
@@ -0,0 +1,352 @@
|
||||
+/*
|
||||
+ * ASoC Driver for HiFiBerry DAC+ / DAC Pro
|
||||
+ *
|
||||
@ -298,58 +294,58 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+static bool snd_rpi_hifiberry_is_dacpro;
|
||||
+static bool digital_gain_0db_limit = true;
|
||||
+
|
||||
+static void snd_rpi_hifiberry_dacplus_select_clk(struct snd_soc_codec *codec,
|
||||
+static void snd_rpi_hifiberry_dacplus_select_clk(struct snd_soc_component *component,
|
||||
+ int clk_id)
|
||||
+{
|
||||
+ switch (clk_id) {
|
||||
+ case HIFIBERRY_DACPRO_NOCLOCK:
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x00);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x00);
|
||||
+ break;
|
||||
+ case HIFIBERRY_DACPRO_CLK44EN:
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x20);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x20);
|
||||
+ break;
|
||||
+ case HIFIBERRY_DACPRO_CLK48EN:
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x04);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x04);
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void snd_rpi_hifiberry_dacplus_clk_gpio(struct snd_soc_codec *codec)
|
||||
+static void snd_rpi_hifiberry_dacplus_clk_gpio(struct snd_soc_component *component)
|
||||
+{
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x24, 0x24);
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_3, 0x0f, 0x02);
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_6, 0x0f, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_EN, 0x24, 0x24);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_3, 0x0f, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_6, 0x0f, 0x02);
|
||||
+}
|
||||
+
|
||||
+static bool snd_rpi_hifiberry_dacplus_is_sclk(struct snd_soc_codec *codec)
|
||||
+static bool snd_rpi_hifiberry_dacplus_is_sclk(struct snd_soc_component *component)
|
||||
+{
|
||||
+ int sck;
|
||||
+ unsigned int sck;
|
||||
+
|
||||
+ sck = snd_soc_read(codec, PCM512x_RATE_DET_4);
|
||||
+ snd_soc_component_read(component, PCM512x_RATE_DET_4, &sck);
|
||||
+ return (!(sck & 0x40));
|
||||
+}
|
||||
+
|
||||
+static bool snd_rpi_hifiberry_dacplus_is_sclk_sleep(
|
||||
+ struct snd_soc_codec *codec)
|
||||
+ struct snd_soc_component *component)
|
||||
+{
|
||||
+ msleep(2);
|
||||
+ return snd_rpi_hifiberry_dacplus_is_sclk(codec);
|
||||
+ return snd_rpi_hifiberry_dacplus_is_sclk(component);
|
||||
+}
|
||||
+
|
||||
+static bool snd_rpi_hifiberry_dacplus_is_pro_card(struct snd_soc_codec *codec)
|
||||
+static bool snd_rpi_hifiberry_dacplus_is_pro_card(struct snd_soc_component *component)
|
||||
+{
|
||||
+ bool isClk44EN, isClk48En, isNoClk;
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_clk_gpio(codec);
|
||||
+ snd_rpi_hifiberry_dacplus_clk_gpio(component);
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_CLK44EN);
|
||||
+ isClk44EN = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec);
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(component, HIFIBERRY_DACPRO_CLK44EN);
|
||||
+ isClk44EN = snd_rpi_hifiberry_dacplus_is_sclk_sleep(component);
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_NOCLOCK);
|
||||
+ isNoClk = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec);
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(component, HIFIBERRY_DACPRO_NOCLOCK);
|
||||
+ isNoClk = snd_rpi_hifiberry_dacplus_is_sclk_sleep(component);
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_CLK48EN);
|
||||
+ isClk48En = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec);
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(component, HIFIBERRY_DACPRO_CLK48EN);
|
||||
+ isClk48En = snd_rpi_hifiberry_dacplus_is_sclk_sleep(component);
|
||||
+
|
||||
+ return (isClk44EN && isClk48En && !isNoClk);
|
||||
+}
|
||||
@ -364,6 +360,7 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ case 44100:
|
||||
+ case 88200:
|
||||
+ case 176400:
|
||||
+ case 352800:
|
||||
+ type = HIFIBERRY_DACPRO_CLK44EN;
|
||||
+ break;
|
||||
+ default:
|
||||
@ -373,10 +370,10 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ return type;
|
||||
+}
|
||||
+
|
||||
+static void snd_rpi_hifiberry_dacplus_set_sclk(struct snd_soc_codec *codec,
|
||||
+static void snd_rpi_hifiberry_dacplus_set_sclk(struct snd_soc_component *component,
|
||||
+ int sample_rate)
|
||||
+{
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec);
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ if (!IS_ERR(pcm512x->sclk)) {
|
||||
+ int ctype;
|
||||
@ -384,20 +381,20 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ ctype = snd_rpi_hifiberry_dacplus_clk_for_rate(sample_rate);
|
||||
+ clk_set_rate(pcm512x->sclk, (ctype == HIFIBERRY_DACPRO_CLK44EN)
|
||||
+ ? CLK_44EN_RATE : CLK_48EN_RATE);
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(codec, ctype);
|
||||
+ snd_rpi_hifiberry_dacplus_select_clk(component, ctype);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_hifiberry_dacplus_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct pcm512x_priv *priv;
|
||||
+
|
||||
+ if (slave)
|
||||
+ snd_rpi_hifiberry_is_dacpro = false;
|
||||
+ else
|
||||
+ snd_rpi_hifiberry_is_dacpro =
|
||||
+ snd_rpi_hifiberry_dacplus_is_pro_card(codec);
|
||||
+ snd_rpi_hifiberry_dacplus_is_pro_card(component);
|
||||
+
|
||||
+ if (snd_rpi_hifiberry_is_dacpro) {
|
||||
+ struct snd_soc_dai_link *dai = rtd->dai_link;
|
||||
@ -407,17 +404,17 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
|
||||
+ | SND_SOC_DAIFMT_CBM_CFM;
|
||||
+
|
||||
+ snd_soc_update_bits(codec, PCM512x_BCLK_LRCLK_CFG, 0x31, 0x11);
|
||||
+ snd_soc_update_bits(codec, PCM512x_MASTER_MODE, 0x03, 0x03);
|
||||
+ snd_soc_update_bits(codec, PCM512x_MASTER_CLKDIV_2, 0x7f, 63);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_BCLK_LRCLK_CFG, 0x31, 0x11);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_MASTER_MODE, 0x03, 0x03);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_MASTER_CLKDIV_2, 0x7f, 63);
|
||||
+ } else {
|
||||
+ priv = snd_soc_codec_get_drvdata(codec);
|
||||
+ priv = snd_soc_component_get_drvdata(component);
|
||||
+ priv->sclk = ERR_PTR(-ENOENT);
|
||||
+ }
|
||||
+
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08);
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0x0f, 0x02);
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_EN, 0x08, 0x08);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_4, 0x0f, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+
|
||||
+ if (digital_gain_0db_limit)
|
||||
+ {
|
||||
@ -436,8 +433,8 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec);
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_component_get_drvdata(component);
|
||||
+ struct snd_ratnum *rats_no_pll;
|
||||
+ unsigned int num = 0, den = 0;
|
||||
+ int err;
|
||||
@ -462,35 +459,32 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_hifiberry_dacplus_set_bclk_ratio_pro(
|
||||
+ struct snd_soc_dai *cpu_dai, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ int bratio = snd_pcm_format_physical_width(params_format(params))
|
||||
+ * params_channels(params);
|
||||
+ return snd_soc_dai_set_bclk_ratio(cpu_dai, bratio);
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_hifiberry_dacplus_hw_params(
|
||||
+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ int ret;
|
||||
+ int ret = 0;
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+ int channels = params_channels(params);
|
||||
+ int width = 32;
|
||||
+
|
||||
+ if (snd_rpi_hifiberry_is_dacpro) {
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_set_sclk(codec,
|
||||
+ width = snd_pcm_format_physical_width(params_format(params));
|
||||
+
|
||||
+ snd_rpi_hifiberry_dacplus_set_sclk(component,
|
||||
+ params_rate(params));
|
||||
+
|
||||
+ ret = snd_rpi_hifiberry_dacplus_set_bclk_ratio_pro(cpu_dai,
|
||||
+ params);
|
||||
+ if (!ret)
|
||||
+ ret = snd_rpi_hifiberry_dacplus_update_rate_den(
|
||||
+ substream, params);
|
||||
+ } else {
|
||||
+ ret = snd_soc_dai_set_bclk_ratio(cpu_dai, 64);
|
||||
+ ret = snd_rpi_hifiberry_dacplus_update_rate_den(
|
||||
+ substream, params);
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_dai_set_tdm_slot(rtd->cpu_dai, 0x03, 0x03,
|
||||
+ channels, width);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ ret = snd_soc_dai_set_tdm_slot(rtd->codec_dai, 0x03, 0x03,
|
||||
+ channels, width);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
@ -498,9 +492,9 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@ -508,9 +502,9 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x00);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x00);
|
||||
+}
|
||||
+
|
||||
+/* machine stream operations */
|
||||
@ -570,19 +564,15 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ "hifiberry-dacplus,slave");
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);
|
||||
+ if (ret)
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev,
|
||||
+ &snd_rpi_hifiberry_dacplus);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_hifiberry_dacplus_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&snd_rpi_hifiberry_dacplus);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_rpi_hifiberry_dacplus_of_match[] = {
|
||||
+ { .compatible = "hifiberry,hifiberry-dacplus", },
|
||||
+ {},
|
||||
@ -596,7 +586,6 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ .of_match_table = snd_rpi_hifiberry_dacplus_of_match,
|
||||
+ },
|
||||
+ .probe = snd_rpi_hifiberry_dacplus_probe,
|
||||
+ .remove = snd_rpi_hifiberry_dacplus_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_rpi_hifiberry_dacplus_driver);
|
||||
@ -604,15 +593,3 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
|
||||
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--- a/sound/soc/codecs/pcm512x.c
|
||||
+++ b/sound/soc/codecs/pcm512x.c
|
||||
@@ -854,7 +854,8 @@ static int pcm512x_set_dividers(struct s
|
||||
int fssp;
|
||||
int gpio;
|
||||
|
||||
- lrclk_div = snd_soc_params_to_frame_size(params);
|
||||
+ lrclk_div = snd_pcm_format_physical_width(params_format(params))
|
||||
+ * params_channels(params);
|
||||
if (lrclk_div == 0) {
|
||||
dev_err(dev, "No LRCLK?\n");
|
||||
return -EINVAL;
|
@ -1,7 +1,7 @@
|
||||
From 0f11b0757d5950ee7a8ba00e49ebefd2c649a6ba Mon Sep 17 00:00:00 2001
|
||||
From 32df84e8c6f0f747c1182774fadbf4e9ef1794e2 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Matuschek <info@crazy-audio.com>
|
||||
Date: Mon, 4 Aug 2014 11:09:58 +0200
|
||||
Subject: [PATCH] Added driver for HiFiBerry Amp amplifier add-on board
|
||||
Subject: [PATCH 069/703] Added driver for HiFiBerry Amp amplifier add-on board
|
||||
|
||||
The driver contains a low-level hardware driver for the TAS5713 and the
|
||||
drivers for the Raspberry Pi I2S subsystem.
|
||||
@ -16,191 +16,18 @@ reported correctly by a non-zero return code.
|
||||
HiFiBerry Amp: fix device-tree problems
|
||||
|
||||
Some code to load the driver based on device-tree-overlays was missing. This is added by this patch.
|
||||
|
||||
hifiberry-amp: Adjust for ALSA object refactoring
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/1775
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 +
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/hifiberry_amp.c | 129 +++++++++++++++
|
||||
sound/soc/codecs/Kconfig | 4 +
|
||||
sound/soc/codecs/Makefile | 2 +
|
||||
sound/soc/codecs/tas5713.c | 371 ++++++++++++++++++++++++++++++++++++++++++
|
||||
sound/soc/codecs/tas5713.h | 210 ++++++++++++++++++++++++
|
||||
7 files changed, 725 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/hifiberry_amp.c
|
||||
sound/soc/codecs/Kconfig | 4 +
|
||||
sound/soc/codecs/Makefile | 2 +
|
||||
sound/soc/codecs/tas5713.c | 366 +++++++++++++++++++++++++++++++++++++
|
||||
sound/soc/codecs/tas5713.h | 210 +++++++++++++++++++++
|
||||
4 files changed, 582 insertions(+)
|
||||
create mode 100644 sound/soc/codecs/tas5713.c
|
||||
create mode 100644 sound/soc/codecs/tas5713.h
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -38,6 +38,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI
|
||||
help
|
||||
Say Y or M if you want to add support for HifiBerry Digi S/PDIF output board.
|
||||
|
||||
+config SND_BCM2708_SOC_HIFIBERRY_AMP
|
||||
+ tristate "Support for the HifiBerry Amp"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_TAS5713
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for the HifiBerry Amp amplifier board.
|
||||
+
|
||||
config SND_BCM2708_SOC_RPI_DAC
|
||||
tristate "Support for RPi-DAC"
|
||||
depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -9,12 +9,14 @@ snd-soc-cygnus-objs := cygnus-pcm.o cygn
|
||||
obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o
|
||||
|
||||
# BCM2708 Machine Support
|
||||
+snd-soc-hifiberry-amp-objs := hifiberry_amp.o
|
||||
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
|
||||
snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
|
||||
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
|
||||
snd-soc-rpi-dac-objs := rpi-dac.o
|
||||
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
|
||||
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/hifiberry_amp.c
|
||||
@@ -0,0 +1,129 @@
|
||||
+/*
|
||||
+ * ASoC Driver for HifiBerry AMP
|
||||
+ *
|
||||
+ * Author: Sebastian Eickhoff <basti.eickhoff@googlemail.com>
|
||||
+ * Copyright 2014
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+
|
||||
+#include <sound/core.h>
|
||||
+#include <sound/pcm.h>
|
||||
+#include <sound/pcm_params.h>
|
||||
+#include <sound/soc.h>
|
||||
+#include <sound/jack.h>
|
||||
+
|
||||
+static int snd_rpi_hifiberry_amp_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ // ToDo: init of the dsp-registers.
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_hifiberry_amp_hw_params( struct snd_pcm_substream *substream,
|
||||
+ struct snd_pcm_hw_params *params )
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+
|
||||
+ return snd_soc_dai_set_bclk_ratio(cpu_dai, 64);
|
||||
+}
|
||||
+
|
||||
+static struct snd_soc_ops snd_rpi_hifiberry_amp_ops = {
|
||||
+ .hw_params = snd_rpi_hifiberry_amp_hw_params,
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_rpi_hifiberry_amp_dai[] = {
|
||||
+ {
|
||||
+ .name = "HifiBerry AMP",
|
||||
+ .stream_name = "HifiBerry AMP HiFi",
|
||||
+ .cpu_dai_name = "bcm2708-i2s.0",
|
||||
+ .codec_dai_name = "tas5713-hifi",
|
||||
+ .platform_name = "bcm2708-i2s.0",
|
||||
+ .codec_name = "tas5713.1-001b",
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .ops = &snd_rpi_hifiberry_amp_ops,
|
||||
+ .init = snd_rpi_hifiberry_amp_init,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+
|
||||
+static struct snd_soc_card snd_rpi_hifiberry_amp = {
|
||||
+ .name = "snd_rpi_hifiberry_amp",
|
||||
+ .driver_name = "HifiberryAmp",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .dai_link = snd_rpi_hifiberry_amp_dai,
|
||||
+ .num_links = ARRAY_SIZE(snd_rpi_hifiberry_amp_dai),
|
||||
+};
|
||||
+
|
||||
+static const struct of_device_id snd_rpi_hifiberry_amp_of_match[] = {
|
||||
+ { .compatible = "hifiberry,hifiberry-amp", },
|
||||
+ {},
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_amp_of_match);
|
||||
+
|
||||
+
|
||||
+static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ snd_rpi_hifiberry_amp.dev = &pdev->dev;
|
||||
+
|
||||
+ if (pdev->dev.of_node) {
|
||||
+ struct device_node *i2s_node;
|
||||
+ struct snd_soc_dai_link *dai = &snd_rpi_hifiberry_amp_dai[0];
|
||||
+ i2s_node = of_parse_phandle(pdev->dev.of_node,
|
||||
+ "i2s-controller", 0);
|
||||
+
|
||||
+ if (i2s_node) {
|
||||
+ dai->cpu_dai_name = NULL;
|
||||
+ dai->cpu_of_node = i2s_node;
|
||||
+ dai->platform_name = NULL;
|
||||
+ dai->platform_of_node = i2s_node;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_rpi_hifiberry_amp);
|
||||
+
|
||||
+ if (ret != 0) {
|
||||
+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static int snd_rpi_hifiberry_amp_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&snd_rpi_hifiberry_amp);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static struct platform_driver snd_rpi_hifiberry_amp_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "snd-hifiberry-amp",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = snd_rpi_hifiberry_amp_of_match,
|
||||
+ },
|
||||
+ .probe = snd_rpi_hifiberry_amp_probe,
|
||||
+ .remove = snd_rpi_hifiberry_amp_remove,
|
||||
+};
|
||||
+
|
||||
+
|
||||
+module_platform_driver(snd_rpi_hifiberry_amp_driver);
|
||||
+
|
||||
+
|
||||
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
|
||||
+MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--- a/sound/soc/codecs/Kconfig
|
||||
+++ b/sound/soc/codecs/Kconfig
|
||||
@@ -139,6 +139,7 @@ config SND_SOC_ALL_CODECS
|
||||
@@ -167,6 +167,7 @@ config SND_SOC_ALL_CODECS
|
||||
select SND_SOC_TFA9879 if I2C
|
||||
select SND_SOC_TLV320AIC23_I2C if I2C
|
||||
select SND_SOC_TLV320AIC23_SPI if SPI_MASTER
|
||||
@ -208,7 +35,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
select SND_SOC_TLV320AIC26 if SPI_MASTER
|
||||
select SND_SOC_TLV320AIC31XX if I2C
|
||||
select SND_SOC_TLV320AIC32X4_I2C if I2C
|
||||
@@ -821,6 +822,9 @@ config SND_SOC_TFA9879
|
||||
@@ -997,6 +998,9 @@ config SND_SOC_TFA9879
|
||||
tristate "NXP Semiconductors TFA9879 amplifier"
|
||||
depends on I2C
|
||||
|
||||
@ -220,17 +47,17 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
|
||||
--- a/sound/soc/codecs/Makefile
|
||||
+++ b/sound/soc/codecs/Makefile
|
||||
@@ -144,6 +144,7 @@ snd-soc-tas5086-objs := tas5086.o
|
||||
snd-soc-tas571x-objs := tas571x.o
|
||||
snd-soc-tas5720-objs := tas5720.o
|
||||
@@ -176,6 +176,7 @@ snd-soc-tas5720-objs := tas5720.o
|
||||
snd-soc-tas6424-objs := tas6424.o
|
||||
snd-soc-tda7419-objs := tda7419.o
|
||||
snd-soc-tfa9879-objs := tfa9879.o
|
||||
+snd-soc-tas5713-objs := tas5713.o
|
||||
snd-soc-tlv320aic23-objs := tlv320aic23.o
|
||||
snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o
|
||||
snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o
|
||||
@@ -366,6 +367,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc
|
||||
obj-$(CONFIG_SND_SOC_TAS571X) += snd-soc-tas571x.o
|
||||
obj-$(CONFIG_SND_SOC_TAS5720) += snd-soc-tas5720.o
|
||||
@@ -436,6 +437,7 @@ obj-$(CONFIG_SND_SOC_TAS5720) += snd-soc
|
||||
obj-$(CONFIG_SND_SOC_TAS6424) += snd-soc-tas6424.o
|
||||
obj-$(CONFIG_SND_SOC_TDA7419) += snd-soc-tda7419.o
|
||||
obj-$(CONFIG_SND_SOC_TFA9879) += snd-soc-tfa9879.o
|
||||
+obj-$(CONFIG_SND_SOC_TAS5713) += snd-soc-tas5713.o
|
||||
obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o
|
||||
@ -238,7 +65,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
obj-$(CONFIG_SND_SOC_TLV320AIC23_SPI) += snd-soc-tlv320aic23-spi.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/codecs/tas5713.c
|
||||
@@ -0,0 +1,371 @@
|
||||
@@ -0,0 +1,366 @@
|
||||
+/*
|
||||
+ * ASoC Driver for TAS5713
|
||||
+ *
|
||||
@ -286,7 +113,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+struct tas5713_priv {
|
||||
+ struct regmap *regmap;
|
||||
+ int mclk_div;
|
||||
+ struct snd_soc_codec *codec;
|
||||
+ struct snd_soc_component *component;
|
||||
+};
|
||||
+
|
||||
+static struct tas5713_priv *priv_data;
|
||||
@ -327,9 +154,8 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+{
|
||||
+ u16 blen = 0x00;
|
||||
+
|
||||
+ struct snd_soc_codec *codec;
|
||||
+ codec = dai->codec;
|
||||
+ priv_data->codec = dai->codec;
|
||||
+ struct snd_soc_component *component = dai->component;
|
||||
+ priv_data->component = component;
|
||||
+
|
||||
+ switch (params_format(params)) {
|
||||
+ case SNDRV_PCM_FORMAT_S16_LE:
|
||||
@ -351,7 +177,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+ }
|
||||
+
|
||||
+ // set word length
|
||||
+ snd_soc_update_bits(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x7, blen);
|
||||
+ snd_soc_component_update_bits(component, TAS5713_SERIAL_DATA_INTERFACE, 0x7, blen);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
@ -362,8 +188,8 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+ unsigned int val = 0;
|
||||
+
|
||||
+ struct tas5713_priv *tas5713;
|
||||
+ struct snd_soc_codec *codec = dai->codec;
|
||||
+ tas5713 = snd_soc_codec_get_drvdata(codec);
|
||||
+ struct snd_soc_component *component = dai->component;
|
||||
+ tas5713 = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ if (mute) {
|
||||
+ val = TAS5713_SOFT_MUTE_ALL;
|
||||
@ -402,54 +228,52 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+static int tas5713_remove(struct snd_soc_codec *codec)
|
||||
+static void tas5713_remove(struct snd_soc_component *component)
|
||||
+{
|
||||
+ struct tas5713_priv *tas5713;
|
||||
+
|
||||
+ tas5713 = snd_soc_codec_get_drvdata(codec);
|
||||
+
|
||||
+ return 0;
|
||||
+ tas5713 = snd_soc_component_get_drvdata(component);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static int tas5713_probe(struct snd_soc_codec *codec)
|
||||
+static int tas5713_probe(struct snd_soc_component *component)
|
||||
+{
|
||||
+ struct tas5713_priv *tas5713;
|
||||
+ int i, ret;
|
||||
+
|
||||
+ i2c = container_of(codec->dev, struct i2c_client, dev);
|
||||
+ i2c = container_of(component->dev, struct i2c_client, dev);
|
||||
+
|
||||
+ tas5713 = snd_soc_codec_get_drvdata(codec);
|
||||
+ tas5713 = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ // Reset error
|
||||
+ ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_ERROR_STATUS, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // Trim oscillator
|
||||
+ ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_OSC_TRIM, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+ msleep(1000);
|
||||
+
|
||||
+ // Reset error
|
||||
+ ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_ERROR_STATUS, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // Clock mode: 44/48kHz, MCLK=64xfs
|
||||
+ ret = snd_soc_write(codec, TAS5713_CLOCK_CTRL, 0x60);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_CLOCK_CTRL, 0x60);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // I2S 24bit
|
||||
+ ret = snd_soc_write(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x05);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_SERIAL_DATA_INTERFACE, 0x05);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // Unmute
|
||||
+ ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_SYSTEM_CTRL2, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+ ret = snd_soc_write(codec, TAS5713_SOFT_MUTE, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_SOFT_MUTE, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // Set volume to 0db
|
||||
+ ret = snd_soc_write(codec, TAS5713_VOL_MASTER, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_VOL_MASTER, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ // Now start programming the default initialization sequence
|
||||
@ -463,20 +287,18 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+ }
|
||||
+
|
||||
+ // Unmute
|
||||
+ ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00);
|
||||
+ ret = snd_soc_component_write(component, TAS5713_SYSTEM_CTRL2, 0x00);
|
||||
+ if (ret < 0) return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static struct snd_soc_codec_driver soc_codec_dev_tas5713 = {
|
||||
+static struct snd_soc_component_driver soc_codec_dev_tas5713 = {
|
||||
+ .probe = tas5713_probe,
|
||||
+ .remove = tas5713_remove,
|
||||
+ .component_driver = {
|
||||
+ .controls = tas5713_snd_controls,
|
||||
+ .num_controls = ARRAY_SIZE(tas5713_snd_controls),
|
||||
+ },
|
||||
+ .controls = tas5713_snd_controls,
|
||||
+ .num_controls = ARRAY_SIZE(tas5713_snd_controls),
|
||||
+};
|
||||
+
|
||||
+
|
||||
@ -547,7 +369,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+
|
||||
+ i2c_set_clientdata(i2c, priv_data);
|
||||
+
|
||||
+ ret = snd_soc_register_codec(&i2c->dev,
|
||||
+ ret = snd_soc_register_component(&i2c->dev,
|
||||
+ &soc_codec_dev_tas5713, &tas5713_dai, 1);
|
||||
+
|
||||
+ return ret;
|
||||
@ -556,7 +378,7 @@ See: https://github.com/raspberrypi/linux/issues/1775
|
||||
+
|
||||
+static int tas5713_i2c_remove(struct i2c_client *i2c)
|
||||
+{
|
||||
+ snd_soc_unregister_codec(&i2c->dev);
|
||||
+ snd_soc_unregister_component(&i2c->dev);
|
||||
+ i2c_set_clientdata(i2c, NULL);
|
||||
+
|
||||
+ kfree(priv_data);
|
@ -1,7 +1,7 @@
|
||||
From b351d2ffe294c9d5e8cde9caa3a94017ecec81d9 Mon Sep 17 00:00:00 2001
|
||||
From 0a8842f908f015bd889e3c0cee5115db1c451990 Mon Sep 17 00:00:00 2001
|
||||
From: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
Date: Wed, 25 Mar 2015 09:26:17 +0100
|
||||
Subject: [PATCH] Add driver for rpi-proto
|
||||
Subject: [PATCH 070/703] Add driver for rpi-proto
|
||||
|
||||
Forward port of 3.10.x driver from https://github.com/koalo
|
||||
We are using a custom board and would like to use rpi 3.18.x
|
||||
@ -14,47 +14,13 @@ Playback tested with devicetree enabled.
|
||||
|
||||
Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 +++
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/rpi-proto.c | 154 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 163 insertions(+)
|
||||
sound/soc/bcm/rpi-proto.c | 145 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 145 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/rpi-proto.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -52,6 +52,13 @@ config SND_BCM2708_SOC_RPI_DAC
|
||||
help
|
||||
Say Y or M if you want to add support for RPi-DAC.
|
||||
|
||||
+config SND_BCM2708_SOC_RPI_PROTO
|
||||
+ tristate "Support for Rpi-PROTO"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_WM8731
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731).
|
||||
+
|
||||
config SND_BCM2708_SOC_IQAUDIO_DAC
|
||||
tristate "Support for IQaudIO-DAC"
|
||||
depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -14,6 +14,7 @@ snd-soc-hifiberry-dac-objs := hifiberry_
|
||||
snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
|
||||
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
|
||||
snd-soc-rpi-dac-objs := rpi-dac.o
|
||||
+snd-soc-rpi-proto-objs := rpi-proto.o
|
||||
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
@@ -21,4 +22,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_D
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/rpi-proto.c
|
||||
@@ -0,0 +1,154 @@
|
||||
@@ -0,0 +1,145 @@
|
||||
+/*
|
||||
+ * ASoC driver for PROTO AudioCODEC (with a WM8731)
|
||||
+ * connected to a Raspberry Pi
|
||||
@ -99,7 +65,6 @@ Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
+ struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+ int sysclk = 12288000; /* This is fixed on this board */
|
||||
@ -107,7 +72,7 @@ Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
+ /* Set proto bclk */
|
||||
+ int ret = snd_soc_dai_set_bclk_ratio(cpu_dai,32*2);
|
||||
+ if (ret < 0){
|
||||
+ dev_err(codec->dev,
|
||||
+ dev_err(rtd->card->dev,
|
||||
+ "Failed to set BCLK ratio %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
@ -116,7 +81,7 @@ Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
+ ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL,
|
||||
+ sysclk, SND_SOC_CLOCK_IN);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(codec->dev,
|
||||
+ dev_err(rtd->card->dev,
|
||||
+ "Failed to set WM8731 SYSCLK: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
@ -173,21 +138,14 @@ Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_rpi_proto);
|
||||
+ if (ret) {
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev, &snd_rpi_proto);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static int snd_rpi_proto_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&snd_rpi_proto);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_rpi_proto_of_match[] = {
|
||||
+ { .compatible = "rpi,rpi-proto", },
|
||||
+ {},
|
||||
@ -201,7 +159,6 @@ Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
||||
+ .of_match_table = snd_rpi_proto_of_match,
|
||||
+ },
|
||||
+ .probe = snd_rpi_proto_probe,
|
||||
+ .remove = snd_rpi_proto_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_rpi_proto_driver);
|
@ -0,0 +1,173 @@
|
||||
From 71cd216db9c7c05f05c8dd7c7afdfb24f718be74 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Shaw <shawaj@gmail.com>
|
||||
Date: Thu, 7 Apr 2016 21:26:21 +0100
|
||||
Subject: [PATCH 071/703] Add Support for JustBoom Audio boards
|
||||
|
||||
justboom-dac: Adjust for ALSA API change
|
||||
|
||||
As of 4.4, snd_soc_limit_volume now takes a struct snd_soc_card *
|
||||
rather than a struct snd_soc_codec *.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
ASoC: justboom-dac: fix S24_LE format
|
||||
|
||||
Remove set_bclk_ratio call so 24-bit data is transmitted in
|
||||
24 bclk cycles.
|
||||
|
||||
Also remove hw_params as it's no longer needed.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
sound/soc/bcm/justboom-dac.c | 145 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 145 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/justboom-dac.c
|
||||
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/justboom-dac.c
|
||||
@@ -0,0 +1,145 @@
|
||||
+/*
|
||||
+ * ASoC Driver for JustBoom DAC Raspberry Pi HAT Sound Card
|
||||
+ *
|
||||
+ * Author: Milan Neskovic
|
||||
+ * Copyright 2016
|
||||
+ * based on code by Daniel Matuschek <info@crazy-audio.com>
|
||||
+ * based on code by Florian Meier <florian.meier@koalo.de>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+
|
||||
+#include <sound/core.h>
|
||||
+#include <sound/pcm.h>
|
||||
+#include <sound/pcm_params.h>
|
||||
+#include <sound/soc.h>
|
||||
+#include <sound/jack.h>
|
||||
+
|
||||
+#include "../codecs/pcm512x.h"
|
||||
+
|
||||
+static bool digital_gain_0db_limit = true;
|
||||
+
|
||||
+static int snd_rpi_justboom_dac_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_EN, 0x08, 0x08);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_4, 0xf, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
|
||||
+
|
||||
+ if (digital_gain_0db_limit)
|
||||
+ {
|
||||
+ int ret;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+
|
||||
+ ret = snd_soc_limit_volume(card, "Digital Playback Volume", 207);
|
||||
+ if (ret < 0)
|
||||
+ dev_warn(card->dev, "Failed to set volume limit: %d\n", ret);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_justboom_dac_startup(struct snd_pcm_substream *substream) {
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08,0x08);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void snd_rpi_justboom_dac_shutdown(struct snd_pcm_substream *substream) {
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08,0x00);
|
||||
+}
|
||||
+
|
||||
+/* machine stream operations */
|
||||
+static struct snd_soc_ops snd_rpi_justboom_dac_ops = {
|
||||
+ .startup = snd_rpi_justboom_dac_startup,
|
||||
+ .shutdown = snd_rpi_justboom_dac_shutdown,
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_rpi_justboom_dac_dai[] = {
|
||||
+{
|
||||
+ .name = "JustBoom DAC",
|
||||
+ .stream_name = "JustBoom DAC HiFi",
|
||||
+ .cpu_dai_name = "bcm2708-i2s.0",
|
||||
+ .codec_dai_name = "pcm512x-hifi",
|
||||
+ .platform_name = "bcm2708-i2s.0",
|
||||
+ .codec_name = "pcm512x.1-004d",
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .ops = &snd_rpi_justboom_dac_ops,
|
||||
+ .init = snd_rpi_justboom_dac_init,
|
||||
+},
|
||||
+};
|
||||
+
|
||||
+/* audio machine driver */
|
||||
+static struct snd_soc_card snd_rpi_justboom_dac = {
|
||||
+ .name = "snd_rpi_justboom_dac",
|
||||
+ .driver_name = "JustBoomDac",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .dai_link = snd_rpi_justboom_dac_dai,
|
||||
+ .num_links = ARRAY_SIZE(snd_rpi_justboom_dac_dai),
|
||||
+};
|
||||
+
|
||||
+static int snd_rpi_justboom_dac_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ snd_rpi_justboom_dac.dev = &pdev->dev;
|
||||
+
|
||||
+ if (pdev->dev.of_node) {
|
||||
+ struct device_node *i2s_node;
|
||||
+ struct snd_soc_dai_link *dai = &snd_rpi_justboom_dac_dai[0];
|
||||
+ i2s_node = of_parse_phandle(pdev->dev.of_node,
|
||||
+ "i2s-controller", 0);
|
||||
+
|
||||
+ if (i2s_node) {
|
||||
+ dai->cpu_dai_name = NULL;
|
||||
+ dai->cpu_of_node = i2s_node;
|
||||
+ dai->platform_name = NULL;
|
||||
+ dai->platform_of_node = i2s_node;
|
||||
+ }
|
||||
+
|
||||
+ digital_gain_0db_limit = !of_property_read_bool(
|
||||
+ pdev->dev.of_node, "justboom,24db_digital_gain");
|
||||
+ }
|
||||
+
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev, &snd_rpi_justboom_dac);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_rpi_justboom_dac_of_match[] = {
|
||||
+ { .compatible = "justboom,justboom-dac", },
|
||||
+ {},
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, snd_rpi_justboom_dac_of_match);
|
||||
+
|
||||
+static struct platform_driver snd_rpi_justboom_dac_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "snd-rpi-justboom-dac",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = snd_rpi_justboom_dac_of_match,
|
||||
+ },
|
||||
+ .probe = snd_rpi_justboom_dac_probe,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_rpi_justboom_dac_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Milan Neskovic <info@justboom.co>");
|
||||
+MODULE_DESCRIPTION("ASoC Driver for JustBoom PI DAC HAT Sound Card");
|
||||
+MODULE_LICENSE("GPL v2");
|
@ -1,8 +1,8 @@
|
||||
From 235989cb582a29be0bea6a7e306f7b839789053c Mon Sep 17 00:00:00 2001
|
||||
From 075e259919f36828473a97a231cdafcec073b63b Mon Sep 17 00:00:00 2001
|
||||
From: Matt Flax <flatmax@flatmax.org>
|
||||
Date: Mon, 16 May 2016 21:36:31 +1000
|
||||
Subject: [PATCH] New AudioInjector.net Pi soundcard with low jitter audio in
|
||||
and out.
|
||||
Subject: [PATCH 072/703] New AudioInjector.net Pi soundcard with low jitter
|
||||
audio in and out.
|
||||
|
||||
Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile.
|
||||
Adds the dts overlay and updates the Makefile and README.
|
||||
@ -13,44 +13,13 @@ Added support for headphones, microphone and bclk_ratio settings.
|
||||
|
||||
This patch adds headphone and microphone capability to the Audio Injector sound card. The patch also sets the bit clock ratio for use in the bcm2835-i2s driver. The bcm2835-i2s can't handle an 8 kHz sample rate when the bit clock is at 12 MHz because its register is only 10 bits wide which can't represent the ch2 offset of 1508. For that reason, the rate constraint is added.
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 ++
|
||||
sound/soc/bcm/Makefile | 3 +
|
||||
sound/soc/bcm/audioinjector-pi-soundcard.c | 193 +++++++++++++++++++++++++++++
|
||||
3 files changed, 203 insertions(+)
|
||||
sound/soc/bcm/audioinjector-pi-soundcard.c | 185 +++++++++++++++++++++
|
||||
1 file changed, 185 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/audioinjector-pi-soundcard.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -94,3 +94,10 @@ config SND_BCM2708_SOC_ADAU1977_ADC
|
||||
select SND_SOC_ADAU1977_I2C
|
||||
help
|
||||
Say Y or M if you want to add support for ADAU1977 ADC.
|
||||
+
|
||||
+config SND_AUDIOINJECTOR_PI_SOUNDCARD
|
||||
+ tristate "Support for audioinjector.net Pi add on soundcard"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_WM8731
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for audioinjector.net Pi Hat
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -20,6 +20,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o
|
||||
snd-soc-rpi-proto-objs := rpi-proto.o
|
||||
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
|
||||
snd-soc-raspidac3-objs := raspidac3.o
|
||||
+snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
@@ -32,3 +33,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) +=
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
|
||||
+obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/audioinjector-pi-soundcard.c
|
||||
@@ -0,0 +1,193 @@
|
||||
@@ -0,0 +1,185 @@
|
||||
+/*
|
||||
+ * ASoC Driver for AudioInjector Pi add on soundcard
|
||||
+ *
|
||||
@ -209,19 +178,12 @@ This patch adds headphone and microphone capability to the Audio Injector sound
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if ((ret = snd_soc_register_card(card))) {
|
||||
+ if ((ret = devm_snd_soc_register_card(&pdev->dev, card))) {
|
||||
+ dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int audioinjector_pi_soundcard_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct snd_soc_card *card = platform_get_drvdata(pdev);
|
||||
+ return snd_soc_unregister_card(card);
|
||||
+
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id audioinjector_pi_soundcard_of_match[] = {
|
||||
+ { .compatible = "ai,audioinjector-pi-soundcard", },
|
||||
+ {},
|
||||
@ -230,12 +192,11 @@ This patch adds headphone and microphone capability to the Audio Injector sound
|
||||
+
|
||||
+static struct platform_driver audioinjector_pi_soundcard_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "audioinjector-audio",
|
||||
+ .name = "audioinjector-stereo",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = audioinjector_pi_soundcard_of_match,
|
||||
+ },
|
||||
+ .probe = audioinjector_pi_soundcard_probe,
|
||||
+ .remove = audioinjector_pi_soundcard_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(audioinjector_pi_soundcard_driver);
|
@ -1,48 +1,17 @@
|
||||
From e5d85d533e7ea8fd5c68d4601ff2b8034bc4aaa9 Mon Sep 17 00:00:00 2001
|
||||
From 3f5b5702b2245c639439607ab4e64d654edaa864 Mon Sep 17 00:00:00 2001
|
||||
From: escalator2015 <jmtasende@gmail.com>
|
||||
Date: Tue, 24 May 2016 16:20:09 +0100
|
||||
Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
Subject: [PATCH 073/703] New driver for RRA DigiDAC1 soundcard using WM8741 +
|
||||
WM8804
|
||||
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 8 +
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/digidac1-soundcard.c | 422 +++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 432 insertions(+)
|
||||
sound/soc/bcm/digidac1-soundcard.c | 416 +++++++++++++++++++++++++++++
|
||||
1 file changed, 416 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/digidac1-soundcard.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -108,3 +108,11 @@ config SND_AUDIOINJECTOR_PI_SOUNDCARD
|
||||
select SND_SOC_WM8731
|
||||
help
|
||||
Say Y or M if you want to add support for audioinjector.net Pi Hat
|
||||
+
|
||||
+config SND_DIGIDAC1_SOUNDCARD
|
||||
+ tristate "Support for Red Rocks Audio DigiDAC1"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_WM8804
|
||||
+ select SND_SOC_WM8741
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board.
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -22,6 +22,7 @@ snd-soc-iqaudio-dac-objs := iqaudio-dac.
|
||||
snd-soc-iqaudio-digi-objs := iqaudio_digi.o
|
||||
snd-soc-raspidac3-objs := raspidac3.o
|
||||
snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
|
||||
+snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
@@ -36,4 +37,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
|
||||
obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
|
||||
+obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o
|
||||
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/digidac1-soundcard.c
|
||||
@@ -0,0 +1,422 @@
|
||||
@@ -0,0 +1,416 @@
|
||||
+/*
|
||||
+ * ASoC Driver for RRA DigiDAC1
|
||||
+ * Copyright 2016
|
||||
@ -147,24 +116,24 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+SOC_ENUM("DAC Soft Mute", w8741_enum[4]),
|
||||
+};
|
||||
+
|
||||
+static int w8741_add_controls(struct snd_soc_codec *codec)
|
||||
+static int w8741_add_controls(struct snd_soc_component *component)
|
||||
+{
|
||||
+ struct wm8741_priv *wm8741 = snd_soc_codec_get_drvdata(codec);
|
||||
+ struct wm8741_priv *wm8741 = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ switch (wm8741->pdata.diff_mode) {
|
||||
+ case WM8741_DIFF_MODE_STEREO:
|
||||
+ case WM8741_DIFF_MODE_STEREO_REVERSED:
|
||||
+ snd_soc_add_codec_controls(codec,
|
||||
+ snd_soc_add_component_controls(component,
|
||||
+ w8741_snd_controls_stereo,
|
||||
+ ARRAY_SIZE(w8741_snd_controls_stereo));
|
||||
+ break;
|
||||
+ case WM8741_DIFF_MODE_MONO_LEFT:
|
||||
+ snd_soc_add_codec_controls(codec,
|
||||
+ snd_soc_add_component_controls(component,
|
||||
+ w8741_snd_controls_mono_left,
|
||||
+ ARRAY_SIZE(w8741_snd_controls_mono_left));
|
||||
+ break;
|
||||
+ case WM8741_DIFF_MODE_MONO_RIGHT:
|
||||
+ snd_soc_add_codec_controls(codec,
|
||||
+ snd_soc_add_component_controls(component,
|
||||
+ w8741_snd_controls_mono_right,
|
||||
+ ARRAY_SIZE(w8741_snd_controls_mono_right));
|
||||
+ break;
|
||||
@ -177,10 +146,10 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+
|
||||
+static int digidac1_soundcard_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct snd_soc_pcm_runtime *wm8741_rtd;
|
||||
+ struct snd_soc_codec *wm8741_codec;
|
||||
+ struct snd_soc_component *wm8741_component;
|
||||
+ struct snd_card *sound_card = card->snd_card;
|
||||
+ struct snd_kcontrol *kctl;
|
||||
+ int ret;
|
||||
@ -190,14 +159,14 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ dev_warn(card->dev, "digidac1_soundcard_init: couldn't get wm8741 rtd\n");
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+ wm8741_codec = wm8741_rtd->codec;
|
||||
+ ret = w8741_add_controls(wm8741_codec);
|
||||
+ wm8741_component = wm8741_rtd->codec_dai->component;
|
||||
+ ret = w8741_add_controls(wm8741_component);
|
||||
+ if (ret < 0)
|
||||
+ dev_warn(card->dev, "Failed to add new wm8741 controls: %d\n",
|
||||
+ ret);
|
||||
+
|
||||
+ /* enable TX output */
|
||||
+ snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
|
||||
+ snd_soc_component_update_bits(component, WM8804_PWRDN, 0x4, 0x0);
|
||||
+
|
||||
+ kctl = snd_soc_card_get_kcontrol(card,
|
||||
+ "Playback Volume");
|
||||
@ -218,27 +187,27 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+{
|
||||
+ /* turn on wm8804 digital output */
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct snd_soc_pcm_runtime *wm8741_rtd;
|
||||
+ struct snd_soc_codec *wm8741_codec;
|
||||
+ struct snd_soc_component *wm8741_component;
|
||||
+
|
||||
+ snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x00);
|
||||
+ snd_soc_component_update_bits(component, WM8804_PWRDN, 0x3c, 0x00);
|
||||
+ wm8741_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[1].name);
|
||||
+ if (!wm8741_rtd) {
|
||||
+ dev_warn(card->dev, "digidac1_soundcard_startup: couldn't get WM8741 rtd\n");
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+ wm8741_codec = wm8741_rtd->codec;
|
||||
+ wm8741_component = wm8741_rtd->codec_dai->component;
|
||||
+
|
||||
+ /* latch wm8741 level */
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_DACLLSB_ATTENUATION,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_DACLLSB_ATTENUATION,
|
||||
+ WM8741_UPDATELL, WM8741_UPDATELL);
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_DACLMSB_ATTENUATION,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_DACLMSB_ATTENUATION,
|
||||
+ WM8741_UPDATELM, WM8741_UPDATELM);
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_DACRLSB_ATTENUATION,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_DACRLSB_ATTENUATION,
|
||||
+ WM8741_UPDATERL, WM8741_UPDATERL);
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_DACRMSB_ATTENUATION,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_DACRMSB_ATTENUATION,
|
||||
+ WM8741_UPDATERM, WM8741_UPDATERM);
|
||||
+
|
||||
+ return 0;
|
||||
@ -248,9 +217,9 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+{
|
||||
+ /* turn off wm8804 digital output */
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x3c);
|
||||
+ snd_soc_component_update_bits(component, WM8804_PWRDN, 0x3c, 0x3c);
|
||||
+}
|
||||
+
|
||||
+static int digidac1_soundcard_hw_params(struct snd_pcm_substream *substream,
|
||||
@ -258,11 +227,11 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
|
||||
+ struct snd_soc_codec *codec = rtd->codec;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct snd_soc_pcm_runtime *wm8741_rtd;
|
||||
+ struct snd_soc_codec *wm8741_codec;
|
||||
+ struct snd_soc_component *wm8741_component;
|
||||
+
|
||||
+ int sysclk = 27000000;
|
||||
+ long mclk_freq = 0;
|
||||
@ -275,7 +244,7 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ dev_warn(card->dev, "digidac1_soundcard_hw_params: couldn't get WM8741 rtd\n");
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+ wm8741_codec = wm8741_rtd->codec;
|
||||
+ wm8741_component = wm8741_rtd->codec_dai->component;
|
||||
+ samplerate = params_rate(params);
|
||||
+
|
||||
+ if (samplerate <= 96000) {
|
||||
@ -309,7 +278,7 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ sampling_freq = 0x0e;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(codec->dev,
|
||||
+ dev_err(card->dev,
|
||||
+ "Failed to set WM8804 SYSCLK, unsupported samplerate %d\n",
|
||||
+ samplerate);
|
||||
+ }
|
||||
@ -320,50 +289,50 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL,
|
||||
+ sysclk, SND_SOC_CLOCK_OUT);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(codec->dev,
|
||||
+ dev_err(card->dev,
|
||||
+ "Failed to set WM8804 SYSCLK: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ /* Enable wm8804 TX output */
|
||||
+ snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
|
||||
+ snd_soc_component_update_bits(component, WM8804_PWRDN, 0x4, 0x0);
|
||||
+
|
||||
+ /* wm8804 Power on */
|
||||
+ snd_soc_update_bits(codec, WM8804_PWRDN, 0x9, 0);
|
||||
+ snd_soc_component_update_bits(component, WM8804_PWRDN, 0x9, 0);
|
||||
+
|
||||
+ /* wm8804 set sampling frequency status bits */
|
||||
+ snd_soc_update_bits(codec, WM8804_SPDTX4, 0x0f, sampling_freq);
|
||||
+ snd_soc_component_update_bits(component, WM8804_SPDTX4, 0x0f, sampling_freq);
|
||||
+
|
||||
+ /* Now update wm8741 registers for the correct oversampling */
|
||||
+ if (samplerate <= 48000)
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_MODE_CONTROL_1,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_MODE_CONTROL_1,
|
||||
+ WM8741_OSR_MASK, 0x00);
|
||||
+ else if (samplerate <= 96000)
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_MODE_CONTROL_1,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_MODE_CONTROL_1,
|
||||
+ WM8741_OSR_MASK, 0x20);
|
||||
+ else
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_MODE_CONTROL_1,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_MODE_CONTROL_1,
|
||||
+ WM8741_OSR_MASK, 0x40);
|
||||
+
|
||||
+ /* wm8741 bit size */
|
||||
+ switch (params_width(params)) {
|
||||
+ case 16:
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_FORMAT_CONTROL,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_FORMAT_CONTROL,
|
||||
+ WM8741_IWL_MASK, 0x00);
|
||||
+ break;
|
||||
+ case 20:
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_FORMAT_CONTROL,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_FORMAT_CONTROL,
|
||||
+ WM8741_IWL_MASK, 0x01);
|
||||
+ break;
|
||||
+ case 24:
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_FORMAT_CONTROL,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_FORMAT_CONTROL,
|
||||
+ WM8741_IWL_MASK, 0x02);
|
||||
+ break;
|
||||
+ case 32:
|
||||
+ snd_soc_update_bits(wm8741_codec, WM8741_FORMAT_CONTROL,
|
||||
+ snd_soc_component_update_bits(wm8741_component, WM8741_FORMAT_CONTROL,
|
||||
+ WM8741_IWL_MASK, 0x03);
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_dbg(codec->dev, "wm8741_hw_params: Unsupported bit size param = %d",
|
||||
+ dev_dbg(card->dev, "wm8741_hw_params: Unsupported bit size param = %d",
|
||||
+ params_width(params));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
@ -431,19 +400,14 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&digidac1_soundcard);
|
||||
+ if (ret)
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev, &digidac1_soundcard);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
|
||||
+ ret);
|
||||
+ ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int digidac1_soundcard_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&digidac1_soundcard);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id digidac1_soundcard_of_match[] = {
|
||||
+ { .compatible = "rra,digidac1-soundcard", },
|
||||
+ {},
|
||||
@ -457,7 +421,6 @@ Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
|
||||
+ .of_match_table = digidac1_soundcard_of_match,
|
||||
+ },
|
||||
+ .probe = digidac1_soundcard_probe,
|
||||
+ .remove = digidac1_soundcard_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(digidac1_soundcard_driver);
|
@ -1,50 +1,19 @@
|
||||
From 999d3e615247d1921d245f7084194efbc697bb66 Mon Sep 17 00:00:00 2001
|
||||
From 63f29d95488d5bbebc704f904e3f4d12ba90fe42 Mon Sep 17 00:00:00 2001
|
||||
From: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
Date: Sat, 2 Jul 2016 16:26:19 +0100
|
||||
Subject: [PATCH] Add support for Dion Audio LOCO DAC-AMP HAT
|
||||
Subject: [PATCH 074/703] Add support for Dion Audio LOCO DAC-AMP HAT
|
||||
|
||||
Using dedicated machine driver and pcm5102a codec driver.
|
||||
|
||||
Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 +++
|
||||
sound/soc/bcm/Makefile | 3 +-
|
||||
sound/soc/bcm/dionaudio_loco.c | 121 +++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 130 insertions(+), 1 deletion(-)
|
||||
sound/soc/bcm/dionaudio_loco.c | 115 +++++++++++++++++++++++++++++++++
|
||||
1 file changed, 115 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/dionaudio_loco.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -116,3 +116,10 @@ config SND_DIGIDAC1_SOUNDCARD
|
||||
select SND_SOC_WM8741
|
||||
help
|
||||
Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board.
|
||||
+
|
||||
+config SND_BCM2708_SOC_DIONAUDIO_LOCO
|
||||
+ tristate "Support for Dion Audio LOCO DAC-AMP"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_PCM5102a
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for Dion Audio LOCO.
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -23,6 +23,7 @@ snd-soc-iqaudio-digi-objs := iqaudio_dig
|
||||
snd-soc-raspidac3-objs := raspidac3.o
|
||||
snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
|
||||
snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o
|
||||
+snd-soc-dionaudio-loco-objs := dionaudio_loco.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
@@ -38,4 +39,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIG
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
|
||||
obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
|
||||
obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o
|
||||
-
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/dionaudio_loco.c
|
||||
@@ -0,0 +1,121 @@
|
||||
@@ -0,0 +1,115 @@
|
||||
+/*
|
||||
+ * ASoC Driver for Dion Audio LOCO DAC-AMP
|
||||
+ *
|
||||
@ -132,19 +101,14 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_rpi_dionaudio_loco);
|
||||
+ if (ret)
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev, &snd_rpi_dionaudio_loco);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
|
||||
+ ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int snd_rpi_dionaudio_loco_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&snd_rpi_dionaudio_loco);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_rpi_dionaudio_loco_of_match[] = {
|
||||
+ { .compatible = "dionaudio,loco-pcm5242-tpa3118", },
|
||||
+ { /* sentinel */ },
|
||||
@ -158,7 +122,6 @@ Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
|
||||
+ .of_match_table = snd_rpi_dionaudio_loco_of_match,
|
||||
+ },
|
||||
+ .probe = snd_rpi_dionaudio_loco_probe,
|
||||
+ .remove = snd_rpi_dionaudio_loco_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_rpi_dionaudio_loco_driver);
|
@ -1,8 +1,8 @@
|
||||
From 779409817cf1af2c38055af64c11e026cb0bb4e9 Mon Sep 17 00:00:00 2001
|
||||
From befd64b81a740cba0ad23a6732dd56b2e67dda84 Mon Sep 17 00:00:00 2001
|
||||
From: Clive Messer <clive.m.messer@gmail.com>
|
||||
Date: Mon, 19 Sep 2016 14:01:04 +0100
|
||||
Subject: [PATCH] Allo Piano DAC boards: Initial 2 channel (stereo) support
|
||||
(#1645)
|
||||
Subject: [PATCH 075/703] Allo Piano DAC boards: Initial 2 channel (stereo)
|
||||
support (#1645)
|
||||
|
||||
Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards,
|
||||
using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC
|
||||
@ -18,44 +18,23 @@ NB. The initial support is 2 channel (stereo) ONLY!
|
||||
Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
|
||||
Signed-off-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
|
||||
ASoC: allo-piano-dac: fix S24_LE format
|
||||
|
||||
Remove set_bclk_ratio call so 24-bit data is transmitted in
|
||||
24 bclk cycles.
|
||||
|
||||
Also remove hw_params and ops as they are no longer needed.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
sound/soc/bcm/Kconfig | 7 ++
|
||||
sound/soc/bcm/Makefile | 2 +
|
||||
sound/soc/bcm/allo-piano-dac.c | 144 +++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 153 insertions(+)
|
||||
sound/soc/bcm/allo-piano-dac.c | 120 +++++++++++++++++++++++++++++++++
|
||||
1 file changed, 120 insertions(+)
|
||||
create mode 100644 sound/soc/bcm/allo-piano-dac.c
|
||||
|
||||
--- a/sound/soc/bcm/Kconfig
|
||||
+++ b/sound/soc/bcm/Kconfig
|
||||
@@ -123,3 +123,10 @@ config SND_BCM2708_SOC_DIONAUDIO_LOCO
|
||||
select SND_SOC_PCM5102a
|
||||
help
|
||||
Say Y or M if you want to add support for Dion Audio LOCO.
|
||||
+
|
||||
+config SND_BCM2708_SOC_ALLO_PIANO_DAC
|
||||
+ tristate "Support for Allo Piano DAC"
|
||||
+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
|
||||
+ select SND_SOC_PCM512x_I2C
|
||||
+ help
|
||||
+ Say Y or M if you want to add support for Allo Piano DAC.
|
||||
--- a/sound/soc/bcm/Makefile
|
||||
+++ b/sound/soc/bcm/Makefile
|
||||
@@ -24,6 +24,7 @@ snd-soc-raspidac3-objs := raspidac3.o
|
||||
snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o
|
||||
snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o
|
||||
snd-soc-dionaudio-loco-objs := dionaudio_loco.o
|
||||
+snd-soc-allo-piano-dac-objs := allo-piano-dac.o
|
||||
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
|
||||
@@ -40,3 +41,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3)
|
||||
obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o
|
||||
obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o
|
||||
obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC) += snd-soc-allo-piano-dac.o
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/allo-piano-dac.c
|
||||
@@ -0,0 +1,144 @@
|
||||
@@ -0,0 +1,120 @@
|
||||
+/*
|
||||
+ * ALSA ASoC Machine Driver for Allo Piano DAC
|
||||
+ *
|
||||
@ -100,23 +79,6 @@ Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_piano_dac_hw_params(
|
||||
+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
+
|
||||
+ unsigned int sample_bits =
|
||||
+ snd_pcm_format_physical_width(params_format(params));
|
||||
+
|
||||
+ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2);
|
||||
+}
|
||||
+
|
||||
+/* machine stream operations */
|
||||
+static struct snd_soc_ops snd_allo_piano_dac_ops = {
|
||||
+ .hw_params = snd_allo_piano_dac_hw_params,
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_allo_piano_dac_dai[] = {
|
||||
+{
|
||||
+ .name = "Piano DAC",
|
||||
@ -128,7 +90,6 @@ Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .ops = &snd_allo_piano_dac_ops,
|
||||
+ .init = snd_allo_piano_dac_init,
|
||||
+},
|
||||
+};
|
||||
@ -166,19 +127,14 @@ Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
+ pdev->dev.of_node, "allo,24db_digital_gain");
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_allo_piano_dac);
|
||||
+ if (ret)
|
||||
+ ret = devm_snd_soc_register_card(&pdev->dev, &snd_allo_piano_dac);
|
||||
+ if (ret && ret != -EPROBE_DEFER)
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_piano_dac_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return snd_soc_unregister_card(&snd_allo_piano_dac);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_allo_piano_dac_of_match[] = {
|
||||
+ { .compatible = "allo,piano-dac", },
|
||||
+ { /* sentinel */ },
|
||||
@ -192,7 +148,6 @@ Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
|
||||
+ .of_match_table = snd_allo_piano_dac_of_match,
|
||||
+ },
|
||||
+ .probe = snd_allo_piano_dac_probe,
|
||||
+ .remove = snd_allo_piano_dac_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_allo_piano_dac_driver);
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,667 @@
|
||||
From f9b56b66913621c3ecba0a5379381fd1e33e1914 Mon Sep 17 00:00:00 2001
|
||||
From: BabuSubashChandar <babuenir@gmail.com>
|
||||
Date: Tue, 28 Mar 2017 20:04:42 +0530
|
||||
Subject: [PATCH 077/703] Add support for Allo Boss DAC add-on board for
|
||||
Raspberry Pi. (#1924)
|
||||
|
||||
Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
|
||||
Reviewed-by: Deepak <deepak@zilogic.com>
|
||||
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
|
||||
|
||||
Add support for new clock rate and mute gpios.
|
||||
|
||||
Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
|
||||
Reviewed-by: Deepak <deepak@zilogic.com>
|
||||
Reviewed-by: BabuSubashChandar <babusubashchandar@zilogic.com>
|
||||
|
||||
ASoC: allo-boss-dac: fix S24_LE format
|
||||
|
||||
Remove set_bclk_ratio call so 24-bit data is transmitted in
|
||||
24 bclk cycles.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
ASoC: allo-boss-dac: transmit S24_LE with 64 BCLK cycles
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/clk/Makefile | 1 +
|
||||
drivers/clk/clk-allo-dac.c | 161 ++++++++++++
|
||||
sound/soc/bcm/allo-boss-dac.c | 456 ++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 618 insertions(+)
|
||||
create mode 100644 drivers/clk/clk-allo-dac.c
|
||||
create mode 100644 sound/soc/bcm/allo-boss-dac.c
|
||||
|
||||
--- a/drivers/clk/Makefile
|
||||
+++ b/drivers/clk/Makefile
|
||||
@@ -18,6 +18,7 @@ endif
|
||||
|
||||
# hardware specific clock types
|
||||
# please keep this section sorted lexicographically by file path name
|
||||
+obj-$(CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC) += clk-allo-dac.o
|
||||
obj-$(CONFIG_MACH_ASM9260) += clk-asm9260.o
|
||||
obj-$(CONFIG_COMMON_CLK_AXI_CLKGEN) += clk-axi-clkgen.o
|
||||
obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/clk/clk-allo-dac.c
|
||||
@@ -0,0 +1,161 @@
|
||||
+/*
|
||||
+ * Clock Driver for Allo DAC
|
||||
+ *
|
||||
+ * Author: Baswaraj K <jaikumar@cem-solutions.net>
|
||||
+ * Copyright 2016
|
||||
+ * based on code by Stuart MacLean
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/clk-provider.h>
|
||||
+#include <linux/clkdev.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+
|
||||
+/* Clock rate of CLK44EN attached to GPIO6 pin */
|
||||
+#define CLK_44EN_RATE 45158400UL
|
||||
+/* Clock rate of CLK48EN attached to GPIO3 pin */
|
||||
+#define CLK_48EN_RATE 49152000UL
|
||||
+
|
||||
+/**
|
||||
+ * struct allo_dac_clk - Common struct to the Allo DAC
|
||||
+ * @hw: clk_hw for the common clk framework
|
||||
+ * @mode: 0 => CLK44EN, 1 => CLK48EN
|
||||
+ */
|
||||
+struct clk_allo_hw {
|
||||
+ struct clk_hw hw;
|
||||
+ uint8_t mode;
|
||||
+};
|
||||
+
|
||||
+#define to_allo_clk(_hw) container_of(_hw, struct clk_allo_hw, hw)
|
||||
+
|
||||
+static const struct of_device_id clk_allo_dac_dt_ids[] = {
|
||||
+ { .compatible = "allo,dac-clk",},
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, clk_allo_dac_dt_ids);
|
||||
+
|
||||
+static unsigned long clk_allo_dac_recalc_rate(struct clk_hw *hw,
|
||||
+ unsigned long parent_rate)
|
||||
+{
|
||||
+ return (to_allo_clk(hw)->mode == 0) ? CLK_44EN_RATE :
|
||||
+ CLK_48EN_RATE;
|
||||
+}
|
||||
+
|
||||
+static long clk_allo_dac_round_rate(struct clk_hw *hw,
|
||||
+ unsigned long rate, unsigned long *parent_rate)
|
||||
+{
|
||||
+ long actual_rate;
|
||||
+
|
||||
+ if (rate <= CLK_44EN_RATE) {
|
||||
+ actual_rate = (long)CLK_44EN_RATE;
|
||||
+ } else if (rate >= CLK_48EN_RATE) {
|
||||
+ actual_rate = (long)CLK_48EN_RATE;
|
||||
+ } else {
|
||||
+ long diff44Rate = (long)(rate - CLK_44EN_RATE);
|
||||
+ long diff48Rate = (long)(CLK_48EN_RATE - rate);
|
||||
+
|
||||
+ if (diff44Rate < diff48Rate)
|
||||
+ actual_rate = (long)CLK_44EN_RATE;
|
||||
+ else
|
||||
+ actual_rate = (long)CLK_48EN_RATE;
|
||||
+ }
|
||||
+ return actual_rate;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static int clk_allo_dac_set_rate(struct clk_hw *hw,
|
||||
+ unsigned long rate, unsigned long parent_rate)
|
||||
+{
|
||||
+ unsigned long actual_rate;
|
||||
+ struct clk_allo_hw *clk = to_allo_clk(hw);
|
||||
+
|
||||
+ actual_rate = (unsigned long)clk_allo_dac_round_rate(hw, rate,
|
||||
+ &parent_rate);
|
||||
+ clk->mode = (actual_rate == CLK_44EN_RATE) ? 0 : 1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+const struct clk_ops clk_allo_dac_rate_ops = {
|
||||
+ .recalc_rate = clk_allo_dac_recalc_rate,
|
||||
+ .round_rate = clk_allo_dac_round_rate,
|
||||
+ .set_rate = clk_allo_dac_set_rate,
|
||||
+};
|
||||
+
|
||||
+static int clk_allo_dac_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct clk_allo_hw *proclk;
|
||||
+ struct clk *clk;
|
||||
+ struct device *dev;
|
||||
+ struct clk_init_data init;
|
||||
+
|
||||
+ dev = &pdev->dev;
|
||||
+
|
||||
+ proclk = kzalloc(sizeof(struct clk_allo_hw), GFP_KERNEL);
|
||||
+ if (!proclk)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ init.name = "clk-allo-dac";
|
||||
+ init.ops = &clk_allo_dac_rate_ops;
|
||||
+ init.flags = CLK_IS_BASIC;
|
||||
+ init.parent_names = NULL;
|
||||
+ init.num_parents = 0;
|
||||
+
|
||||
+ proclk->mode = 0;
|
||||
+ proclk->hw.init = &init;
|
||||
+
|
||||
+ clk = devm_clk_register(dev, &proclk->hw);
|
||||
+ if (!IS_ERR(clk)) {
|
||||
+ ret = of_clk_add_provider(dev->of_node, of_clk_src_simple_get,
|
||||
+ clk);
|
||||
+ } else {
|
||||
+ dev_err(dev, "Fail to register clock driver\n");
|
||||
+ kfree(proclk);
|
||||
+ ret = PTR_ERR(clk);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int clk_allo_dac_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ of_clk_del_provider(pdev->dev.of_node);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct platform_driver clk_allo_dac_driver = {
|
||||
+ .probe = clk_allo_dac_probe,
|
||||
+ .remove = clk_allo_dac_remove,
|
||||
+ .driver = {
|
||||
+ .name = "clk-allo-dac",
|
||||
+ .of_match_table = clk_allo_dac_dt_ids,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static int __init clk_allo_dac_init(void)
|
||||
+{
|
||||
+ return platform_driver_register(&clk_allo_dac_driver);
|
||||
+}
|
||||
+core_initcall(clk_allo_dac_init);
|
||||
+
|
||||
+static void __exit clk_allo_dac_exit(void)
|
||||
+{
|
||||
+ platform_driver_unregister(&clk_allo_dac_driver);
|
||||
+}
|
||||
+module_exit(clk_allo_dac_exit);
|
||||
+
|
||||
+MODULE_DESCRIPTION("Allo DAC clock driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
+MODULE_ALIAS("platform:clk-allo-dac");
|
||||
--- /dev/null
|
||||
+++ b/sound/soc/bcm/allo-boss-dac.c
|
||||
@@ -0,0 +1,456 @@
|
||||
+/*
|
||||
+ * ALSA ASoC Machine Driver for Allo Boss DAC
|
||||
+ *
|
||||
+ * Author: Baswaraj K <jaikumar@cem-solutions.net>
|
||||
+ * Copyright 2017
|
||||
+ * based on code by Daniel Matuschek,
|
||||
+ * Stuart MacLean <stuart@hifiberry.com>
|
||||
+ * based on code by Florian Meier <florian.meier@koalo.de>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * General Public License for more details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/clk.h>
|
||||
+#include <linux/delay.h>
|
||||
+
|
||||
+#include <sound/core.h>
|
||||
+#include <sound/pcm.h>
|
||||
+#include <sound/pcm_params.h>
|
||||
+#include <sound/soc.h>
|
||||
+#include "../codecs/pcm512x.h"
|
||||
+
|
||||
+#define ALLO_BOSS_NOCLOCK 0
|
||||
+#define ALLO_BOSS_CLK44EN 1
|
||||
+#define ALLO_BOSS_CLK48EN 2
|
||||
+
|
||||
+struct pcm512x_priv {
|
||||
+ struct regmap *regmap;
|
||||
+ struct clk *sclk;
|
||||
+};
|
||||
+
|
||||
+static struct gpio_desc *mute_gpio;
|
||||
+
|
||||
+/* Clock rate of CLK44EN attached to GPIO6 pin */
|
||||
+#define CLK_44EN_RATE 45158400UL
|
||||
+/* Clock rate of CLK48EN attached to GPIO3 pin */
|
||||
+#define CLK_48EN_RATE 49152000UL
|
||||
+
|
||||
+static bool slave;
|
||||
+static bool snd_soc_allo_boss_master;
|
||||
+static bool digital_gain_0db_limit = true;
|
||||
+
|
||||
+static void snd_allo_boss_select_clk(struct snd_soc_component *component,
|
||||
+ int clk_id)
|
||||
+{
|
||||
+ switch (clk_id) {
|
||||
+ case ALLO_BOSS_NOCLOCK:
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x00);
|
||||
+ break;
|
||||
+ case ALLO_BOSS_CLK44EN:
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x20);
|
||||
+ break;
|
||||
+ case ALLO_BOSS_CLK48EN:
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x24, 0x04);
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void snd_allo_boss_clk_gpio(struct snd_soc_component *component)
|
||||
+{
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_EN, 0x24, 0x24);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_3, 0x0f, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_6, 0x0f, 0x02);
|
||||
+}
|
||||
+
|
||||
+static bool snd_allo_boss_is_sclk(struct snd_soc_component *component)
|
||||
+{
|
||||
+ unsigned int sck;
|
||||
+
|
||||
+ snd_soc_component_read(component, PCM512x_RATE_DET_4, &sck);
|
||||
+ return (!(sck & 0x40));
|
||||
+}
|
||||
+
|
||||
+static bool snd_allo_boss_is_sclk_sleep(
|
||||
+ struct snd_soc_component *component)
|
||||
+{
|
||||
+ msleep(2);
|
||||
+ return snd_allo_boss_is_sclk(component);
|
||||
+}
|
||||
+
|
||||
+static bool snd_allo_boss_is_master_card(struct snd_soc_component *component)
|
||||
+{
|
||||
+ bool isClk44EN, isClk48En, isNoClk;
|
||||
+
|
||||
+ snd_allo_boss_clk_gpio(component);
|
||||
+
|
||||
+ snd_allo_boss_select_clk(component, ALLO_BOSS_CLK44EN);
|
||||
+ isClk44EN = snd_allo_boss_is_sclk_sleep(component);
|
||||
+
|
||||
+ snd_allo_boss_select_clk(component, ALLO_BOSS_NOCLOCK);
|
||||
+ isNoClk = snd_allo_boss_is_sclk_sleep(component);
|
||||
+
|
||||
+ snd_allo_boss_select_clk(component, ALLO_BOSS_CLK48EN);
|
||||
+ isClk48En = snd_allo_boss_is_sclk_sleep(component);
|
||||
+
|
||||
+ return (isClk44EN && isClk48En && !isNoClk);
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_clk_for_rate(int sample_rate)
|
||||
+{
|
||||
+ int type;
|
||||
+
|
||||
+ switch (sample_rate) {
|
||||
+ case 11025:
|
||||
+ case 22050:
|
||||
+ case 44100:
|
||||
+ case 88200:
|
||||
+ case 176400:
|
||||
+ case 352800:
|
||||
+ type = ALLO_BOSS_CLK44EN;
|
||||
+ break;
|
||||
+ default:
|
||||
+ type = ALLO_BOSS_CLK48EN;
|
||||
+ break;
|
||||
+ }
|
||||
+ return type;
|
||||
+}
|
||||
+
|
||||
+static void snd_allo_boss_set_sclk(struct snd_soc_component *component,
|
||||
+ int sample_rate)
|
||||
+{
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ if (!IS_ERR(pcm512x->sclk)) {
|
||||
+ int ctype;
|
||||
+
|
||||
+ ctype = snd_allo_boss_clk_for_rate(sample_rate);
|
||||
+ clk_set_rate(pcm512x->sclk, (ctype == ALLO_BOSS_CLK44EN)
|
||||
+ ? CLK_44EN_RATE : CLK_48EN_RATE);
|
||||
+ snd_allo_boss_select_clk(component, ctype);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_init(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct pcm512x_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
+
|
||||
+ if (slave)
|
||||
+ snd_soc_allo_boss_master = false;
|
||||
+ else
|
||||
+ snd_soc_allo_boss_master =
|
||||
+ snd_allo_boss_is_master_card(component);
|
||||
+
|
||||
+ if (snd_soc_allo_boss_master) {
|
||||
+ struct snd_soc_dai_link *dai = rtd->dai_link;
|
||||
+
|
||||
+ dai->name = "BossDAC";
|
||||
+ dai->stream_name = "Boss DAC HiFi [Master]";
|
||||
+ dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
|
||||
+ | SND_SOC_DAIFMT_CBM_CFM;
|
||||
+
|
||||
+ snd_soc_component_update_bits(component, PCM512x_BCLK_LRCLK_CFG, 0x31, 0x11);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_MASTER_MODE, 0x03, 0x03);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_MASTER_CLKDIV_2, 0x7f, 63);
|
||||
+ /*
|
||||
+ * Default sclk to CLK_48EN_RATE, otherwise codec
|
||||
+ * pcm512x_dai_startup_master method could call
|
||||
+ * snd_pcm_hw_constraint_ratnums using CLK_44EN/64
|
||||
+ * which will mask 384k sample rate.
|
||||
+ */
|
||||
+ if (!IS_ERR(priv->sclk))
|
||||
+ clk_set_rate(priv->sclk, CLK_48EN_RATE);
|
||||
+ } else {
|
||||
+ priv->sclk = ERR_PTR(-ENOENT);
|
||||
+ }
|
||||
+
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_EN, 0x08, 0x08);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_OUTPUT_4, 0x0f, 0x02);
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+
|
||||
+ if (digital_gain_0db_limit) {
|
||||
+ int ret;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+
|
||||
+ ret = snd_soc_limit_volume(card, "Digital Playback Volume",
|
||||
+ 207);
|
||||
+ if (ret < 0)
|
||||
+ dev_warn(card->dev, "Failed to set volume limit: %d\n",
|
||||
+ ret);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_update_rate_den(
|
||||
+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct pcm512x_priv *pcm512x = snd_soc_component_get_drvdata(component);
|
||||
+ struct snd_ratnum *rats_no_pll;
|
||||
+ unsigned int num = 0, den = 0;
|
||||
+ int err;
|
||||
+
|
||||
+ rats_no_pll = devm_kzalloc(rtd->dev, sizeof(*rats_no_pll), GFP_KERNEL);
|
||||
+ if (!rats_no_pll)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ rats_no_pll->num = clk_get_rate(pcm512x->sclk) / 64;
|
||||
+ rats_no_pll->den_min = 1;
|
||||
+ rats_no_pll->den_max = 128;
|
||||
+ rats_no_pll->den_step = 1;
|
||||
+
|
||||
+ err = snd_interval_ratnum(hw_param_interval(params,
|
||||
+ SNDRV_PCM_HW_PARAM_RATE), 1, rats_no_pll, &num, &den);
|
||||
+ if (err >= 0 && den) {
|
||||
+ params->rate_num = num;
|
||||
+ params->rate_den = den;
|
||||
+ }
|
||||
+
|
||||
+ devm_kfree(rtd->dev, rats_no_pll);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void snd_allo_boss_gpio_mute(struct snd_soc_card *card)
|
||||
+{
|
||||
+ if (mute_gpio)
|
||||
+ gpiod_set_value_cansleep(mute_gpio, 1);
|
||||
+}
|
||||
+
|
||||
+static void snd_allo_boss_gpio_unmute(struct snd_soc_card *card)
|
||||
+{
|
||||
+ if (mute_gpio)
|
||||
+ gpiod_set_value_cansleep(mute_gpio, 0);
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_set_bias_level(struct snd_soc_card *card,
|
||||
+ struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd;
|
||||
+ struct snd_soc_dai *codec_dai;
|
||||
+
|
||||
+ rtd = snd_soc_get_pcm_runtime(card, card->dai_link[0].name);
|
||||
+ codec_dai = rtd->codec_dai;
|
||||
+
|
||||
+ if (dapm->dev != codec_dai->dev)
|
||||
+ return 0;
|
||||
+
|
||||
+ switch (level) {
|
||||
+ case SND_SOC_BIAS_PREPARE:
|
||||
+ if (dapm->bias_level != SND_SOC_BIAS_STANDBY)
|
||||
+ break;
|
||||
+ /* UNMUTE DAC */
|
||||
+ snd_allo_boss_gpio_unmute(card);
|
||||
+ break;
|
||||
+
|
||||
+ case SND_SOC_BIAS_STANDBY:
|
||||
+ if (dapm->bias_level != SND_SOC_BIAS_PREPARE)
|
||||
+ break;
|
||||
+ /* MUTE DAC */
|
||||
+ snd_allo_boss_gpio_mute(card);
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_hw_params(
|
||||
+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ int channels = params_channels(params);
|
||||
+ int width = snd_pcm_format_physical_width(params_format(params));
|
||||
+
|
||||
+ if (snd_soc_allo_boss_master) {
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_allo_boss_set_sclk(component,
|
||||
+ params_rate(params));
|
||||
+
|
||||
+ ret = snd_allo_boss_update_rate_den(
|
||||
+ substream, params);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = snd_soc_dai_set_tdm_slot(rtd->cpu_dai, 0x03, 0x03,
|
||||
+ channels, width);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ ret = snd_soc_dai_set_tdm_slot(rtd->codec_dai, 0x03, 0x03,
|
||||
+ channels, width);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_startup(
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x08);
|
||||
+ snd_allo_boss_gpio_mute(card);
|
||||
+
|
||||
+ if (snd_soc_allo_boss_master) {
|
||||
+ struct pcm512x_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
+ /*
|
||||
+ * Default sclk to CLK_48EN_RATE, otherwise codec
|
||||
+ * pcm512x_dai_startup_master method could call
|
||||
+ * snd_pcm_hw_constraint_ratnums using CLK_44EN/64
|
||||
+ * which will mask 384k sample rate.
|
||||
+ */
|
||||
+ if (!IS_ERR(priv->sclk))
|
||||
+ clk_set_rate(priv->sclk, CLK_48EN_RATE);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void snd_allo_boss_shutdown(
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
+
|
||||
+ snd_soc_component_update_bits(component, PCM512x_GPIO_CONTROL_1, 0x08, 0x00);
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_prepare(
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+
|
||||
+ snd_allo_boss_gpio_unmute(card);
|
||||
+ return 0;
|
||||
+}
|
||||
+/* machine stream operations */
|
||||
+static struct snd_soc_ops snd_allo_boss_ops = {
|
||||
+ .hw_params = snd_allo_boss_hw_params,
|
||||
+ .startup = snd_allo_boss_startup,
|
||||
+ .shutdown = snd_allo_boss_shutdown,
|
||||
+ .prepare = snd_allo_boss_prepare,
|
||||
+};
|
||||
+
|
||||
+static struct snd_soc_dai_link snd_allo_boss_dai[] = {
|
||||
+{
|
||||
+ .name = "Boss DAC",
|
||||
+ .stream_name = "Boss DAC HiFi",
|
||||
+ .cpu_dai_name = "bcm2708-i2s.0",
|
||||
+ .codec_dai_name = "pcm512x-hifi",
|
||||
+ .platform_name = "bcm2708-i2s.0",
|
||||
+ .codec_name = "pcm512x.1-004d",
|
||||
+ .dai_fmt = SND_SOC_DAIFMT_I2S |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_CBS_CFS,
|
||||
+ .ops = &snd_allo_boss_ops,
|
||||
+ .init = snd_allo_boss_init,
|
||||
+},
|
||||
+};
|
||||
+
|
||||
+/* audio machine driver */
|
||||
+static struct snd_soc_card snd_allo_boss = {
|
||||
+ .name = "BossDAC",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .dai_link = snd_allo_boss_dai,
|
||||
+ .num_links = ARRAY_SIZE(snd_allo_boss_dai),
|
||||
+};
|
||||
+
|
||||
+static int snd_allo_boss_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ snd_allo_boss.dev = &pdev->dev;
|
||||
+
|
||||
+ if (pdev->dev.of_node) {
|
||||
+ struct device_node *i2s_node;
|
||||
+ struct snd_soc_dai_link *dai;
|
||||
+
|
||||
+ dai = &snd_allo_boss_dai[0];
|
||||
+ i2s_node = of_parse_phandle(pdev->dev.of_node,
|
||||
+ "i2s-controller", 0);
|
||||
+
|
||||
+ if (i2s_node) {
|
||||
+ dai->cpu_dai_name = NULL;
|
||||
+ dai->cpu_of_node = i2s_node;
|
||||
+ dai->platform_name = NULL;
|
||||
+ dai->platform_of_node = i2s_node;
|
||||
+ }
|
||||
+
|
||||
+ digital_gain_0db_limit = !of_property_read_bool(
|
||||
+ pdev->dev.of_node, "allo,24db_digital_gain");
|
||||
+ slave = of_property_read_bool(pdev->dev.of_node,
|
||||
+ "allo,slave");
|
||||
+
|
||||
+ mute_gpio = devm_gpiod_get_optional(&pdev->dev, "mute",
|
||||
+ GPIOD_OUT_LOW);
|
||||
+ if (IS_ERR(mute_gpio)) {
|
||||
+ ret = PTR_ERR(mute_gpio);
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "failed to get mute gpio: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ if (mute_gpio)
|
||||
+ snd_allo_boss.set_bias_level =
|
||||
+ snd_allo_boss_set_bias_level;
|
||||
+
|
||||
+ ret = snd_soc_register_card(&snd_allo_boss);
|
||||
+ if (ret) {
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "snd_soc_register_card() failed: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ if (mute_gpio)
|
||||
+ snd_allo_boss_gpio_mute(&snd_allo_boss);
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+
|
||||
+static int snd_allo_boss_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ snd_allo_boss_gpio_mute(&snd_allo_boss);
|
||||
+ return snd_soc_unregister_card(&snd_allo_boss);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id snd_allo_boss_of_match[] = {
|
||||
+ { .compatible = "allo,boss-dac", },
|
||||
+ { /* sentinel */ },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, snd_allo_boss_of_match);
|
||||
+
|
||||
+static struct platform_driver snd_allo_boss_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "snd-allo-boss-dac",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = snd_allo_boss_of_match,
|
||||
+ },
|
||||
+ .probe = snd_allo_boss_probe,
|
||||
+ .remove = snd_allo_boss_remove,
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(snd_allo_boss_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Baswaraj K <jaikumar@cem-solutions.net>");
|
||||
+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Boss DAC");
|
||||
+MODULE_LICENSE("GPL v2");
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user