Commit 223182f1 authored by Robert Sprowson's avatar Robert Sprowson Committed by ROOL

Add EtherNIC HAL device

Basic HAL device to expose the GENET peripheral for the driver.
parent 5acaaf41
......@@ -17,7 +17,7 @@
COMPONENT = BCM2835 HAL
TARGET = BCM2835
OBJS = Top CLib CMOS Debug Interrupts SDIO Timers UART USB Video DMA Messaging GPIO VCHIQ IIC RTC SPI Touch KbdScan DBell IntVC6 PCI
OBJS = Top CLib CMOS Debug Interrupts SDIO Timers UART USB Video DMA Messaging GPIO VCHIQ IIC RTC SPI Touch KbdScan DBell IntVC6 PCI EtherNIC
HDRS =
CMHGFILE =
......
......@@ -174,6 +174,7 @@ RTCDeviceStruct # 80
SPI0Device # HALDeviceSize
SPI1Device # HALDeviceSize
SPI2Device # HALDeviceSize
EtherNICDevice # HALDeviceSize
TouchDevice # HALDeviceSize
MBoxDevice # HALDeviceSize
DBellDevice # HALDevice_DBell_Size
......
;
; Copyright (c) 2019, RISC OS Open Ltd
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in the
; documentation and/or other materials provided with the distribution.
; * Neither the name of RISC OS Open Ltd nor the names of its contributors
; may be used to endorse or promote products derived from this software
; without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
; POSSIBILITY OF SUCH DAMAGE.
;
GET Hdr:ListOpts
GET Hdr:Macros
GET Hdr:System
GET hdr.BCM2835
GET hdr.StaticWS
GET hdr.CastleMacros
AREA |ARM$$Code|, CODE, READONLY, PIC
EXPORT EtherNIC_InitDevices
IMPORT memcpy
; Initialise our HAL devices
EtherNIC_InitDevices ROUT
CPUDetect a1
MOVLS pc, lr
Push "lr"
ADRL a1, EtherNICDevice
ADR a2, EtherNICTemplate
MOV a3, #HALDeviceSize
BL memcpy
LDR a2, PeriBase2
ADD a2, a2, #GENET_Base
STR a2, [a1, #HALDevice_Address]
MOV a2, a1
MOV a1, #0 ; No flags
CallOS OS_AddDevice
Pull "pc"
MACRO
$class HALDeviceField $field, $value
LCLS myvalue
[ "$value" = ""
myvalue SETS "$field"
|
myvalue SETS "$value"
]
ASSERT . - %A0 = HALDevice_$class$field
[ ?HALDevice_$class$field = 2
DCW $myvalue
ELIF ?HALDevice_$class$field = 4
DCD $myvalue
|
% ?HALDevice_$class$field
]
MEND
EtherNICTemplate
0
HALDeviceField Type, HALDeviceType_Comms + HALDeviceComms_EtherNIC
HALDeviceField ID, HALDeviceID_EtherNIC_BCMGENET
HALDeviceField Location, HALDeviceBus_Sys + HALDeviceSysBus_AHB
HALDeviceField Version, 0
HALDeviceField Description, EtherNICDevice_Description
HALDeviceField Address, 0 ; Filled later
HALDeviceField Reserved1, 0
HALDeviceField Activate, EtherNICDevice_Activate
HALDeviceField Deactivate, EtherNICDevice_Deactivate
HALDeviceField Reset, EtherNICDevice_Reset
HALDeviceField Sleep, EtherNICDevice_Sleep
HALDeviceField Device, iDev_Ext_Genet_A ; (+1 other)
HALDeviceField TestIRQ, 0
HALDeviceField ClearIRQ, 0
HALDeviceField Reserved2, 0
ASSERT . - %A0 = HALDeviceSize
EtherNICDevice_Description
DCB "Broadcom GENET", 0
ALIGN
EtherNICDevice_Activate
MOV a1, #1
EtherNICDevice_Deactivate
EtherNICDevice_Reset
MOV pc, lr
EtherNICDevice_Sleep
MOV a1, #0
MOV pc, lr
END
......@@ -179,6 +179,8 @@
IMPORT SPI_InitDevices
IMPORT EtherNIC_InitDevices
IMPORT Touch_InitDevices
IMPORT BCMMBox_InitDevices
......@@ -1163,7 +1165,7 @@ HAL_Null
MOV pc, lr
HAL_InitDevices
STR lr, [sp, #-4]!
Push "lr"
BL Video_InitDevices ; Must be before DMA_InitDevices
BL SDIO_InitDevices
BL DMA_InitDevices
......@@ -1171,10 +1173,11 @@ HAL_InitDevices
BL VCHIQ_InitDevices
BL RTC_InitDevices
BL SPI_InitDevices
BL EtherNIC_InitDevices
BL Touch_InitDevices
BL BCMMBox_InitDevices
BL DBell_InitDevices
LDR pc, [sp], #4
Pull "pc"
; Out: a1 = number of CPU cores
VC6_HAL_CPUCount
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment