diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms index 5289515a5b3bdf..715ef1256838ed 100644 --- a/arch/arm64/Kconfig.platforms +++ b/arch/arm64/Kconfig.platforms @@ -1,27 +1,5 @@ menu "Platform selection" -config MACH_BCM2709 - bool - -config ARCH_BCM2709 - bool "Broadcom BCM2709 family" - select MACH_BCM2709 - select HAVE_SMP - select ARM_AMBA - select COMMON_CLK - select ARCH_HAS_CPUFREQ - select GENERIC_CLOCKEVENTS - select MULTI_IRQ_HANDLER - select SPARSE_IRQ - select MFD_SYSCON - select VC4 - select USE_OF - select ARCH_REQUIRE_GPIOLIB - select PINCTRL - select PINCTRL_BCM2835 - help - This enables support for Broadcom BCM2709 boards. - config ARCH_SUNXI bool "Allwinner sunxi 64-bit SoC Family" select GENERIC_IRQ_CHIP diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile index 2152448c8cf5b2..7aa03be73fda08 100644 --- a/arch/arm64/boot/dts/broadcom/Makefile +++ b/arch/arm64/boot/dts/broadcom/Makefile @@ -1,7 +1,15 @@ +# Enable fixups to support overlays on BCM2835 platforms + +ifeq ($(CONFIG_ARCH_BCM2835),y) +DTC_FLAGS ?= -@ -H epapr +endif + dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb -dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb +dtb-$(CONFIG_ARCH_BCM2835) += bcm2710-rpi-3-b.dtb + +dts-dirs += ../overlays always := $(dtb-y) subdir-y := $(dts-dirs) diff --git a/arch/arm64/boot/dts/overlays b/arch/arm64/boot/dts/overlays new file mode 120000 index 00000000000000..ded08646b6f66c --- /dev/null +++ b/arch/arm64/boot/dts/overlays @@ -0,0 +1 @@ +../../../arm/boot/dts/overlays \ No newline at end of file diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig index e6b09fafa27eed..dac962ca163466 100644 --- a/arch/arm64/configs/bcmrpi3_defconfig +++ b/arch/arm64/configs/bcmrpi3_defconfig @@ -1,52 +1,9 @@ -# CONFIG_ARM_PATCH_PHYS_VIRT is not set -CONFIG_PHYS_OFFSET=0 CONFIG_LOCALVERSION="-v8" # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_64BIT=y CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y - -# -# ARM errata workarounds via the alternatives framework -# -CONFIG_ARM64_ERRATUM_826319=n -CONFIG_ARM64_ERRATUM_827319=n -CONFIG_ARM64_ERRATUM_824069=n -CONFIG_ARM64_ERRATUM_819472=n -CONFIG_ARM64_ERRATUM_832075=n -CONFIG_ARM64_ERRATUM_845719=n -CONFIG_ARM64_ERRATUM_843419=n -CONFIG_CAVIUM_ERRATUM_22375=n -CONFIG_CAVIUM_ERRATUM_23154=n -CONFIG_CAVIUM_ERRATUM_27456=n -CONFIG_ARM64_4K_PAGES=y -CONFIG_ARM64_VA_BITS_39=y -CONFIG_ARM64_VA_BITS=39 -CONFIG_SCHED_MC=y -CONFIG_NR_CPUS=4 -CONFIG_HOTPLUG_CPU=y -CONFIG_ARMV8_DEPRECATED=y -CONFIG_SWP_EMULATION=y -CONFIG_CP15_BARRIER_EMULATION=y -CONFIG_SETEND_EMULATION=y - -# -# ARMv8.1 architectural features -# -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y -CONFIG_ARM64_LSE_ATOMICS=y -CONFIG_ARM64_VHE=y - -# -# ARMv8.2 architectural features -# -CONFIG_ARM64_UAO=y -CONFIG_ARM64_MODULE_CMODEL_LARGE=n -CONFIG_RANDOMIZE_BASE=n - CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y @@ -55,7 +12,6 @@ CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y CONFIG_IKCONFIG=m CONFIG_IKCONFIG_PROC=y -CONFIG_NMI_LOG_BUF_SHIFT=12 CONFIG_MEMCG=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_FREEZER=y @@ -69,54 +25,49 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_EMBEDDED=y # CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y -CONFIG_OPROFILE=m CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_TRIM_UNUSED_KSYMS=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_PARTITION_ADVANCED=y CONFIG_MAC_PARTITION=y CONFIG_CFQ_GROUP_IOSCHED=y -CONFIG_ARCH_BCM2709=y -# CONFIG_CACHE_L2X0 is not set -CONFIG_SMP=y -CONFIG_HAVE_ARM_ARCH_TIMER=y -CONFIG_VMSPLIT_2G=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_AEABI=y -CONFIG_OABI_COMPAT=y -# CONFIG_CPU_SW_DOMAIN_PAN is not set +CONFIG_ARCH_BCM2835=y +# CONFIG_CAVIUM_ERRATUM_22375 is not set +# CONFIG_CAVIUM_ERRATUM_23154 is not set +# CONFIG_CAVIUM_ERRATUM_27456 is not set +CONFIG_SCHED_MC=y +CONFIG_NR_CPUS=4 +CONFIG_PREEMPT=y +CONFIG_HZ_1000=y CONFIG_CLEANCACHE=y CONFIG_FRONTSWAP=y CONFIG_CMA=y CONFIG_ZSMALLOC=m CONFIG_PGTABLE_MAPPING=y -CONFIG_UACCESS_WITH_MEMCPY=y CONFIG_SECCOMP=y -# CONFIG_ATAGS is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" +CONFIG_BINFMT_MISC=y +CONFIG_COMPAT=y +# CONFIG_SUSPEND is not set +CONFIG_PM=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_VFP=y -CONFIG_NEON=y -CONFIG_KERNEL_MODE_NEON=y -CONFIG_BINFMT_MISC=m -CONFIG_COMPAT=y -CONFIG_SYSVIPC_COMPAT=y - -# CONFIG_SUSPEND is not set -CONFIG_PM=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y @@ -162,8 +113,6 @@ CONFIG_NF_CONNTRACK=m CONFIG_NF_CONNTRACK_ZONES=y CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CT_PROTO_DCCP=m -CONFIG_NF_CT_PROTO_UDPLITE=m CONFIG_NF_CONNTRACK_AMANDA=m CONFIG_NF_CONNTRACK_FTP=m CONFIG_NF_CONNTRACK_H323=m @@ -226,7 +175,6 @@ CONFIG_NETFILTER_XT_MATCH_QUOTA=m CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m @@ -437,6 +385,7 @@ CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m CONFIG_BT_ATH3K=m CONFIG_BT_WILINK=m +CONFIG_CFG80211=m CONFIG_MAC80211=m CONFIG_MAC80211_MESH=y CONFIG_WIMAX=m @@ -490,7 +439,6 @@ CONFIG_BONDING=m CONFIG_DUMMY=m CONFIG_IFB=m CONFIG_MACVLAN=m -CONFIG_IPVLAN=m CONFIG_VXLAN=m CONFIG_NETCONSOLE=m CONFIG_TUN=m @@ -579,8 +527,6 @@ CONFIG_RT2800USB_RT3573=y CONFIG_RT2800USB_RT53XX=y CONFIG_RT2800USB_RT55XX=y CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8187=m -CONFIG_RTL8192CU=n CONFIG_USB_ZD1201=m CONFIG_ZD1211RW=m CONFIG_MAC80211_HWSIM=m @@ -606,7 +552,7 @@ CONFIG_JOYSTICK_RPISENSE=m CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ADS7846=m CONFIG_TOUCHSCREEN_EGALAX=m -CONFIG_TOUCHSCREEN_FT6236=m +CONFIG_TOUCHSCREEN_EKTF2127=m CONFIG_TOUCHSCREEN_RPI_FT5406=m CONFIG_TOUCHSCREEN_USB_COMPOSITE=m CONFIG_TOUCHSCREEN_STMPE=m @@ -626,18 +572,18 @@ CONFIG_SERIO_RAW=m CONFIG_GAMEPORT=m CONFIG_GAMEPORT_NS558=m CONFIG_GAMEPORT_L4=m -CONFIG_BRCM_CHAR_DRIVERS=n -CONFIG_BCM_VC_CMA=n -CONFIG_BCM_VCIO=n -CONFIG_BCM_VC_SM=n +# CONFIG_BCM2835_DEVGPIOMEM is not set +# CONFIG_BCM2835_SMI_DEV is not set # CONFIG_LEGACY_PTYS is not set -# CONFIG_DEVKMEM is not set CONFIG_SERIAL_8250=y # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set CONFIG_SERIAL_8250_CONSOLE=y # CONFIG_SERIAL_8250_DMA is not set CONFIG_SERIAL_8250_NR_UARTS=1 CONFIG_SERIAL_8250_RUNTIME_UARTS=0 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_BCM2835AUX=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y @@ -650,6 +596,7 @@ CONFIG_I2C=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_MUX_PCA954x=m CONFIG_I2C_BCM2708=m +CONFIG_I2C_BCM2835=m CONFIG_I2C_GPIO=m CONFIG_SPI=y CONFIG_SPI_BCM2835=m @@ -681,13 +628,13 @@ CONFIG_W1_SLAVE_DS2780=m CONFIG_W1_SLAVE_DS2781=m CONFIG_W1_SLAVE_DS28E04=m CONFIG_W1_SLAVE_BQ27000=m -CONFIG_BATTERY_DS2760=m -CONFIG_POWER_RESET=y CONFIG_POWER_RESET_GPIO=y +CONFIG_BATTERY_DS2760=m CONFIG_HWMON=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_SHT21=m CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_INA2XX=m CONFIG_THERMAL=y CONFIG_THERMAL_BCM2835=y CONFIG_WATCHDOG=y @@ -835,8 +782,6 @@ CONFIG_VIDEO_EM28XX_V4L2=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_BCM2835=n -CONFIG_VIDEO_BCM2835_MMAL=n CONFIG_RADIO_SI470X=y CONFIG_USB_SI470X=m CONFIG_I2C_SI470X=m @@ -892,8 +837,7 @@ CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m -CONFIG_SND_ARM=n -CONFIG_SND_BCM2835=n +CONFIG_SND_BCM2835=m CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_UA101=m CONFIG_SND_USB_CAIAQ=m @@ -916,7 +860,10 @@ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m CONFIG_SND_DIGIDAC1_SOUNDCARD=m CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m +CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m +CONFIG_SND_PISOUND=m CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_AK4554=m CONFIG_SND_SOC_WM8804_I2C=m CONFIG_SND_SIMPLE_CARD=m CONFIG_SOUND_PRIME=m @@ -979,8 +926,6 @@ CONFIG_USB_HIDDEV=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_MON=m -CONFIG_USB_DWCOTG=n -CONFIG_USB_DWC2=y CONFIG_USB_PRINTER=m CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE_REALTEK=m @@ -1001,6 +946,7 @@ CONFIG_USB_MICROTEK=m CONFIG_USBIP_CORE=m CONFIG_USBIP_VHCI_HCD=m CONFIG_USBIP_HOST=m +CONFIG_USB_DWC2=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m @@ -1096,6 +1042,7 @@ CONFIG_LEDS_TRIGGER_INPUT=y CONFIG_LEDS_TRIGGER_PANIC=y CONFIG_RTC_CLASS=y # CONFIG_RTC_HCTOSYS is not set +CONFIG_RTC_DRV_ABX80X=m CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=m CONFIG_RTC_DRV_DS1672=m @@ -1103,7 +1050,6 @@ CONFIG_RTC_DRV_MAX6900=m CONFIG_RTC_DRV_RS5C372=m CONFIG_RTC_DRV_ISL1208=m CONFIG_RTC_DRV_ISL12022=m -CONFIG_RTC_DRV_ISL12057=m CONFIG_RTC_DRV_X1205=m CONFIG_RTC_DRV_PCF8523=m CONFIG_RTC_DRV_PCF8563=m @@ -1137,7 +1083,6 @@ CONFIG_STAGING=y CONFIG_PRISM2_USB=m CONFIG_R8712U=m CONFIG_R8188EU=m -CONFIG_R8723AU=m CONFIG_VT6656=m CONFIG_SPEAKUP=m CONFIG_SPEAKUP_SYNTH_SOFT=m @@ -1146,13 +1091,13 @@ CONFIG_LIRC_STAGING=y CONFIG_LIRC_IMON=m CONFIG_LIRC_RPI=m CONFIG_LIRC_SASEM=m -CONFIG_LIRC_SERIAL=m CONFIG_FB_TFT=m CONFIG_FB_TFT_AGM1264K_FL=m CONFIG_FB_TFT_BD663474=m CONFIG_FB_TFT_HX8340BN=m CONFIG_FB_TFT_HX8347D=m CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m CONFIG_FB_TFT_ILI9163=m CONFIG_FB_TFT_ILI9320=m CONFIG_FB_TFT_ILI9325=m @@ -1189,6 +1134,7 @@ CONFIG_IIO_KFIFO_BUF=m CONFIG_MCP320X=m CONFIG_MCP3422=m CONFIG_DHT11=m +CONFIG_HTU21=m CONFIG_PWM_BCM2835=m CONFIG_PWM_PCA9685=m CONFIG_RASPBERRYPI_FIRMWARE=y @@ -1309,6 +1255,7 @@ CONFIG_BOOT_PRINTK_DELAY=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_DETECT_HUNG_TASK=y CONFIG_TIMER_STATS=y +CONFIG_LATENCYTOP=y CONFIG_IRQSOFF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_STACK_TRACER=y @@ -1331,4 +1278,3 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_ARM64_CRYPTO=y CONFIG_CRC_ITU_T=y CONFIG_LIBCRC32C=y -CONFIG_BCM2835_VCHIQ=n diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c index 706e7f936c1a97..c2108dec3096ff 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c @@ -235,7 +235,7 @@ remote_event_signal(REMOTE_EVENT_T *event) int vchiq_copy_from_user(void *dst, const void *src, int size) { - if ((uint32_t)src < TASK_SIZE) { + if ((unsigned long)src < TASK_SIZE) { return copy_from_user(dst, src, size); } else { memcpy(dst, src, size); diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig index 42581e2f65dfed..b427dfe35ad042 100644 --- a/sound/arm/Kconfig +++ b/sound/arm/Kconfig @@ -2,7 +2,7 @@ menuconfig SND_ARM bool "ARM sound devices" - depends on ARM + depends on (ARM || ARM64) default y help Support for sound devices specific to ARM architectures. diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c index 7ee436ca9fa290..246ae501b7d984 100755 --- a/sound/arm/bcm2835-vchiq.c +++ b/sound/arm/bcm2835-vchiq.c @@ -226,7 +226,13 @@ static void audio_vchi_callback(void *param, complete(&instance->msg_avail_comp); } else if (m.type == VC_AUDIO_MSG_TYPE_COMPLETE) { bcm2835_alsa_stream_t *alsa_stream = instance->alsa_stream; +#if defined(CONFIG_64BIT) + irq_handler_t callback = + (irq_handler_t) (((unsigned long)m.u.complete.callbackl) | + ((unsigned long)m.u.complete.callbackh << 32)); +#else irq_handler_t callback = (irq_handler_t) m.u.complete.callback; +#endif LOG_DBG (" .. instance=%p, m.type=VC_AUDIO_MSG_TYPE_COMPLETE, complete=%d\n", instance, m.u.complete.count); @@ -803,8 +809,13 @@ int bcm2835_audio_write_worker(bcm2835_alsa_stream_t *alsa_stream, m.u.write.count = count; // old version uses bulk, new version uses control m.u.write.max_packet = instance->peer_version < 2 || force_bulk ? 0:4000; +#if defined(CONFIG_64BIT) + m.u.write.callbackl = (uint32_t)(((unsigned long)alsa_stream->fifo_irq_handler)&0xFFFFFFFF); + m.u.write.callbackh = (uint32_t)((((unsigned long)alsa_stream->fifo_irq_handler) >> 32)&0xFFFFFFFF); +#else m.u.write.callback = alsa_stream->fifo_irq_handler; m.u.write.cookie = alsa_stream; +#endif m.u.write.silence = src == NULL; /* Send the message to the videocore */ diff --git a/sound/arm/vc_vchi_audioserv_defs.h b/sound/arm/vc_vchi_audioserv_defs.h index af3e6eb690113f..ede6154bc09d38 100644 --- a/sound/arm/vc_vchi_audioserv_defs.h +++ b/sound/arm/vc_vchi_audioserv_defs.h @@ -78,8 +78,13 @@ typedef struct { // configure the write audio samples typedef struct { uint32_t count; // in bytes +#if defined(CONFIG_64BIT) + uint32_t callbackl; + uint32_t callbackh; +#else void *callback; void *cookie; +#endif uint16_t silence; uint16_t max_packet; } VC_AUDIO_WRITE_T; @@ -93,8 +98,13 @@ typedef struct { // Generic result for a request (VC->HOST) typedef struct { int32_t count; // Success value +#if defined(CONFIG_64BIT) + uint32_t callbackl; + uint32_t callbackh; +#else void *callback; void *cookie; +#endif } VC_AUDIO_COMPLETE_T; // Message header for all messages in HOST->VC direction