diff --git a/hdr/StaticWS b/hdr/StaticWS index cefcddab7fc539577789b75a61f62d208afac8b2..5a171e1587bf0181738d89b68e38cadd853dd8da 100644 --- a/hdr/StaticWS +++ b/hdr/StaticWS @@ -70,8 +70,11 @@ HALDevice_VCHIQARMToVCOffset # 4 HALDevice_VCHIQVCDoorbell # 4 ; Doorbell to interrupt VC HALDevice_VCHIQARMDoorbell # 4 ; Doorbell to interrupt us HALDevice_VCHIQInitVC # 4 +HALDevice_VCHIQFlags # 4 HALDevice_VCHIQ_Size * :INDEX: @ +VCHIQFlag_Use36bitAddrs * 1 + ; Device-specific struct for the VDU device ^ 0 diff --git a/s/VCHIQ b/s/VCHIQ index cc2394513e4cdf1ff2119b88cdd5d9e8c9c65fc4..5008fd83f58d353ce92247446cfee0b832519a88 100644 --- a/s/VCHIQ +++ b/s/VCHIQ @@ -68,7 +68,7 @@ VCHIQ_Dev HALDeviceField Type, HALDeviceType_Comms + HALDeviceComms_InterProc HALDeviceField ID, HALDeviceID_InterProc_VCHIQ HALDeviceField Location, HALDeviceBus_Sys + HALDeviceSysBus_AHB ; Guess - HALDeviceField Version, 0 + HALDeviceField Version, 1 ; API 0.1 HALDeviceField Description, VCHIQ_Description HALDeviceField Address, 0 HALDeviceField Reserved1, 0 @@ -84,6 +84,7 @@ VCHIQ HALDeviceField ARMToVCOffset, 0 ; filled in later VCHIQ HALDeviceField VCDoorbell, VCHIQ_VCDoorbell VCHIQ HALDeviceField ARMDoorbell, VCHIQ_ARMDoorbell VCHIQ HALDeviceField InitVC, VCHIQ_InitVC +VCHIQ HALDeviceField Flags, 0 ; filled in later ASSERT . - %A0 = HALDevice_VCHIQ_Size VCHIQ_Description @@ -102,6 +103,12 @@ VCHIQ_InitDevices ROUT LDR a1, FB_CacheMode STR a1, [a2, #HALDevice_VCHIQARMToVCOffset] MOV a1, #0 + CPUDetect ip + ; Raspberry Pi 4 / BCM2838 uses a different page list format to allow + ; for a 36bit physical address range + ORRHI a1, a1, #VCHIQFlag_Use36bitAddrs + STR a1, [a2, #HALDevice_VCHIQFlags] + MOV a1, #0 MOV lr, pc LDR pc, OSentries+4*OS_AddDevice EXIT