github.com/usbarmory/tamago@v0.0.0-20240508072735-8612bbe1e454/board/raspberrypi/pi2/pi2.go (about)

     1  // Raspberry Pi 2 support for tamago/arm
     2  // https://github.com/usbarmory/tamago
     3  //
     4  // Copyright (c) the pi2 package authors
     5  //
     6  // Use of this source code is governed by the license
     7  // that can be found in the LICENSE file.
     8  
     9  // Package pi2 provides hardware initialization, automatically on import, for
    10  // the Raspberry Pi 2 single board computer.
    11  //
    12  // This package is only meant to be used with `GOOS=tamago GOARCH=arm` as
    13  // supported by the TamaGo framework for bare metal Go on ARM SoCs, see
    14  // https://github.com/usbarmory/tamago.
    15  package pi2
    16  
    17  import (
    18  	_ "unsafe"
    19  
    20  	"github.com/usbarmory/tamago/board/raspberrypi"
    21  	"github.com/usbarmory/tamago/soc/bcm2835"
    22  )
    23  
    24  // On the Raspberry Pi2+ peripheral addresses are remapped from their hardware
    25  // 'bus' address to the 0x3f000000 'physical' address.
    26  const peripheralBase = 0x3f000000
    27  
    28  type board struct{}
    29  
    30  // Board provides access to the capabilities of the Pi2.
    31  var Board pi.Board = &board{}
    32  
    33  // Init takes care of the lower level SoC initialization triggered early in
    34  // runtime setup.
    35  //
    36  //go:linkname Init runtime.hwinit
    37  func Init() {
    38  	// Defer to generic BCM2835 initialization, with Pi 2
    39  	// peripheral base address.
    40  	bcm2835.Init(peripheralBase)
    41  }