HomeFreeBSD

MFC: r266470, r273546, r276017, r277932, r279153, r279778, r279780, r278797,

Description

MFC: r266470, r273546, r276017, r277932, r279153, r279778, r279780, r278797,

r278861, r280283, r280284, r280294, r280452, r280558, r280571, r281863,
r282049, r282357, r282440, r282441, r282358, r282359, r283550, r283918,
r290171, r290667, r290381, r290533, r290666, r292483, r295659, r297545,
r298305, r298383, r298428, r306489, r306557, r307067, r307068, r307087,
r307088, r307089, r307091, r307092, r307093, r307098, r307115, r307154,
r307240, r307241, r315967, r316476

Unbreak BCM2835/RPI-B support by bringing it in line with stable/11 and
head:

  • Optimise reading of pending interrupt registers.
  • Fix a bug where some DTS layouts could cause the premature ending of the search (i.e. without returning any result) and you would end up with a random MAC address.
  • Reduce the diff between head and arm_intrng with the bcm2835 interrupt controller.
  • Allow the retrieving of the reserved pins state.
  • Add support to the bcm2835 mailbox driver to work before interrupts are enabled. This will be needed to enable the power on devices early on in the boot process.
  • Add support for enabling the USB on the Raspberry Pi boards when it hasn't been done by U-Boot. This allows the USB to work when we load the kernel directly.
  • Call config_intrhook_disestablish on failure of the bcm2835 fb and fbd intr hooks. With this we can get through the boot even if these functions fail.
  • Add the structures needed to get/set the power state. These can be used when, for example, we boot without U-Boot and wish to enable USB, or to suspend an unneeded device.
  • Add a mask to match only the relative base address of BSC controllers.
  • Move the code to set the device power to the bcm2835 mailbox driver so it can be reused by other drivers.
  • Add the SOC_BCM2835 and SOC_BCM2836 options for the arm kernel and add the former to std.bcm2835.
  • Add a helper function to read clock frequencies from videocore and use this to get the default frequency of the sdhci device.
  • Add partial support for the Raspberry Pi 2.
  • Remove a debug #error from the bcm2835 sdhci driver.
  • Fetch the SDHCI frequency from videocore (our prefered source) and only if it fails, fetch the clock-frequency from DTB. If both methods fail, use the hardcoded default.
  • Pass the supplied buffer length instead of a fixed size.
  • Add the routines to query and setup the framebuffer state using the BCM2835_MBOX_CHAN_PROP channel. The old channel (BCM2835_MBOX_CHAN_FB) seems deprecated on recent firmware versions and is causing a freeze on RPi 2.
  • Fix DMA on RPi 2. BCM2836 has a different base address for peripherals.
  • Enable DMA for sdhci on RPi 2 (BCM2836).
  • Add a missing wakeup when releasing ownership of the SPI hardware.
  • Fix framebuffer compatibility with new RPi firmware.
  • Refactor bcm2835_cpufreq to use bcm2835_mbox_property API.
  • Fix the sc(4) framebuffer driver on RPi 2.
  • Fix the vt(4) framebuffer driver on RPi 2.
  • Remove unused mutex and softc variables.
  • Refactor mailbox property API to make it usable for /dev/vcio driver.
  • Replace semaphore-base locking with sleep/wait synchronization.
  • Fix infinite loop if response from VideoCore never received.
  • Set have_message in interrupt to handle "response before READ" case.
  • Serialize access to property channel when using bcm2835_mbox_property.
  • Force framebuffer virtual viewport to be the same as physical.
  • Use proper type of tag in bcm2835_mbox_fb_init.
  • bcm2835_cpufreq: Only attach driver if we correcly match on the machine compatible string.
  • Add dev.fb.X.resync sysctl to resync ARM framebuffer with VideoCore.
  • Do not use DMA channels used by GPU.
  • Define local-intc for BCM2836 platform (RPI2) and make BCM2835 intc a child of it.
  • Fix build for Pi kernels with syscons enabled.
  • Use VM_MEMATTR_WRITE_COMBINING memattr for mmap(2) on framebuffer.
  • Make intc driver compatible with upstream DTS.
  • Make Rapsberry Pi watchdog driver compatible with upstream DTS.
  • Make sure intc is attached before interrupt consumers.
  • Make framebuffer driver compatible with upstream DT.
  • Add one more heuristic to determine MAC address of the SMSC device.
  • Add compatibility strings from upstream DT.
  • Fix spelling mistake, BCM2835_PASWORD -> BCM2835_PASSWORD.

Approved by: re (kib)

Details

Provenance
mariusAuthored on
Parents
rS322723: Simplify the code.
Branches
Unknown
Tags
Unknown