History log of /freebsd-current/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
Revision Date Author Comments
# fdafd315 24-Nov-2023 Warner Losh <imp@FreeBSD.org>

sys: Automated cleanup of cdefs and other formatting

Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.

Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/

Sponsored by: Netflix


# 685dc743 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 65454883 01-Sep-2020 Mateusz Guzik <mjg@FreeBSD.org>

arm: clean up empty lines in .c and .h files


# 850dd7e9 17-Dec-2019 Kyle Evans <kevans@FreeBSD.org>

arm: add SOC_BRCM_BCM2837 option, include it in GENERIC

We use armv7/GENERIC for the RPI2 images. The original RPI2 is actually a
32-bit BCM2836, but v1.2 was upgraded to the 64-bit BCM2837. The project
continues to provide the RPI2 image as armv7, as it's the lowest common
denominator of the two. Historically, we've just kind of implicitly
acknowledged this by including some bcm2837 bits on a SOC_BCM2836 kernel
config -- this worked until r354875 added code that actually cared.

Acknowledge formally that BCM2837 is valid in arm32.

This name is inconsistent with the other BCM* SOC on !arm64 for two reasons:

1. It's a pre-existing option on arm64, and
2. the naming convention on arm/ should've arguably changed to include BRCM

#1 seems to be a convincing enough argument to maintain the existing name
for it.


# adcd9597 24-Jun-2018 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

[rpi] Fix compatiblity with upstream DTB for RPi 3B and 3B+

Upstream dtb switched to using brcm,bcm2837 for platform
compatibility string. Patch platfrom and cpufreq compatiblity
data accordingly.

Submitted by: Sylvain Garrigues <sylgar@gmail.com>
Tested by: db@
Differential Revision: https://reviews.freebsd.org/D15998


# 108117cc 19-Mar-2018 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

[ofw] fix errneous checks for OF_finddevice(9) return value

OF_finddevices returns ((phandle_t)-1) in case of failure. Some code
in existing drivers checked return value to be equal to 0 or
less/equal to 0 which is also wrong because phandle_t is unsigned
type. Most of these checks were for negative cases that were never
triggered so trhere was no impact on functionality.

Reviewed by: nwhitehorn
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D14645


# af3dc4a7 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/arm: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# c5765d84 01-Oct-2017 Ian Lepore <ian@FreeBSD.org>

Allow Raspberry Pi platform and drivers to be configured with upstream DTBs.

- Added more compatibility strings to drivers not yet converted
- Added new RPI platform code compatibility string to match the ones used
upstream
- Adapted RPI and RPI2 DTS to match the new platform code compatibility
string

The goal is to use the upstream DTBs as a replacement for our custom one.
This is now possible with these changes.

Additionally, as the RPI firmware automatically chooses the right DTB for
us, this would allow to have one common armv6 kernel for RPI0 and RPI1
(BCM2835-based), and one common armv7 kernel for RPI2 v1.1 (BCM2836-based),
and RPI2 v1.2 / RPI3 (BCM2837-based).

Submitted by: Sylvain Garrigues <sylgar@gmail.com>
Differential Revision: https://reviews.freebsd.org/D12360


# 6c925b9c 16-Dec-2016 Andrew Turner <andrew@FreeBSD.org>

All armv6 platforms have the same implementation of platform_lastaddr.
Replace them with a default handler that returns devmap_lastaddr.

Reviewed by: mmel
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D8806


# cf1db37a 15-Dec-2016 Andrew Turner <andrew@FreeBSD.org>

Directly include openfirm.h rather than through fdt_common.h as none of the
latter file is needed.

Sponsored by: ABT Systems Ltd


# ba9f40ca 13-Dec-2016 Andrew Turner <andrew@FreeBSD.org>

Use the platform_*_t typedefs to help check the platform function types are
correct.

Sponsored by: ABT Systems Ltd


# 9783ea5c 13-Nov-2016 Andrew Turner <andrew@FreeBSD.org>

Use the correct OF_getencprop over OF_getprop + fdt32_to_cpu to read
integer data from the device tree.

Sponsored by: ABT Systems Ltd


# d654c805 30-Sep-2016 Emmanuel Vadot <manu@FreeBSD.org>

RPI2: Add support for MULTIDELAY, this is needed for inclusion into GENERIC.


# 10912ba8 29-Sep-2016 Emmanuel Vadot <manu@FreeBSD.org>

RPI2: Add support for PLATFORM_SMP so we can later add it to GENERIC.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D8063


# 0c051204 29-Sep-2016 Emmanuel Vadot <manu@FreeBSD.org>

RPI-B: Add support for MULTIDELAY

100 cycles per us seems accurate enough, at least it's better than the 200 value
that was used before.

Reviewed by: andrew, imp
Differential Revision: https://reviews.freebsd.org/D8062


# eb2035b5 23-Sep-2016 Andrew Turner <andrew@FreeBSD.org>

Also implement platform_cpu_reset on bcm2836


# 0dbb8873 23-Sep-2016 Andrew Turner <andrew@FreeBSD.org>

Move cpu_reset to be a platform method to allow multiple implementations.

Reviewed by: mmel
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D8010


# c35b5d83 22-Sep-2016 Andrew Turner <andrew@FreeBSD.org>

Remove bus_dma_get_range and bus_dma_get_range_nb on armv6. We only need
this on a few earlier arm SoCs.

Reviewed by: manu (earlier version)
Sponsored by: ABT Systems Ltd


# cca48a59 30-Apr-2016 Andrew Turner <andrew@FreeBSD.org>

Add a MULTIDELAY option to allow the ARM kernel to have multiple DELAY
implementations. Early in the boot the kernel will use an approximate,
however after the timer has been probed it will switch to a more accurate
implementation.

Reviewed by: manu
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D5762


# 30b72b68 26-Apr-2016 Ruslan Bukin <br@FreeBSD.org>

Move arm's devmap to some generic place, so it can be used
by other architectures.

Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D6091
Sponsored by: DARPA, AFRL
Sponsored by: HEIF5


# 4e46a66e 25-Mar-2015 Andrew Turner <andrew@FreeBSD.org>

Add support for the Raspberry Pi 2. As the chip is based on the bcm2835 in
the Raspberry Pi B we support most of the devices are already supported,
however the base address has changed.

A few items are not working, or missing. The main ones are:
* DMA doesn't work in the sdhci driver.
* Enabling vchiq halts the boot, may be interrupt related.
* There is no U-Boot port yet so the DTB is embedded in the kernel.

The last point will make it difficult to boot FreeBSD, however there is
support for the Raspberry Pi 2 in the U-Boot git repo. As I have not tested
this it is left as an open task to create a port to build.

X-MFC: When the above issues are fixed
Sponsored by: ABT Systems Ltd


# 40e6bdaf 18-Nov-2014 Warner Losh <imp@FreeBSD.org>

opt_global.h is included automatically in the build. No need to
explicitly include it in these places.

Sponsored by: Netflix


# 27521ff8 17-May-2014 Andrew Turner <andrew@FreeBSD.org>

Add the start of the ARM platform code. This is based on the PowerPC
platform code, it is expected these will be merged in the future when the
ARM code is more complete.

Until more boards can be tested only use this with the Raspberry Pi and
rrename the functions on the other SoCs.

Reviewed by: ian@


# fdadb971 06-Jan-2014 Ian Lepore <ian@FreeBSD.org>

Switch to using arm_devmap_add_entry() to set up static device mapping.
This eliminates the hard-coded max kva and roughly doubles the available
kva space.


# 515cbe86 04-Nov-2013 Ian Lepore <ian@FreeBSD.org>

Call initarm_lastaddr() later in the init sequence, after establishing
static device mappings, rather than as the first of the initializations
that a platform can hook into. This allows a platform to allocate KVA
from the top of the address space downwards for things like static device
mapping, and return the final "last usable address" result after that and
other early init work is done.

Because some platforms were doing work in initarm_lastaddr() that needs to
be done early, add a new initarm_early_init() routine and move the early
init code to that routine on those platforms.

Rename platform_devmap_init() to initarm_devmap_init() to match all the
other init routines called from initarm() that are designed to be
implemented by platform code.

Add a comment block that explains when these routines are called and the
type of work expected to be done in each of them.


# 3110e7ee 04-Nov-2013 Ian Lepore <ian@FreeBSD.org>

Move remaining code and data related to static device mapping into the
new devmap.[ch] files. Emphasize the MD nature of these things by using
the prefix arm_devmap_ on the function and type names (already a few of
these things found their way into MI code, hopefully it will be harder to
do by accident in the future).


# 99af02e3 26-Oct-2013 Ian Lepore <ian@FreeBSD.org>

Retire arm_remap_nocache() and the data and constants associated with it.

The only remaining user was the code that allocates bounce pages for armv4
busdma. It's not clear why bounce pages would need uncached memory, but
if that ever changes, kmem_alloc_attr() would be the way to get it.


# 64894120 26-Oct-2013 Ian Lepore <ian@FreeBSD.org>

Remove #include <machine/frame.h> from all the arm code that doesn't
really need it. That would be almost everywhere it was included. Add
it in a couple files that really do need it and were previously getting
it by accident via another header.


# 69d75558 26-Oct-2013 Ian Lepore <ian@FreeBSD.org>

Remove all #include <machine/pmap.h> from arm code. It's already
included by vm/pmap.h, which is a prerequisite for arm/machine/pmap.h
so there's no reason to ever include it directly.

Thanks to alc@ for pointing this out.


# 0b5eb456 13-Jan-2013 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Remove accidentally copypasted comment

Spotted by: gavin


# fd79f4a5 05-Jan-2013 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Export board serial and board revision obtained from FDT blob


# 7bf9ab53 03-Nov-2012 Andrew Turner <andrew@FreeBSD.org>

Merge the FDT versions of initarm.

The copies of initarm used on platforms with FDT support were almost
identical. The differences were pulled out into separate functions that
were called by initarm.

This change merges the, now identical, copies of initarm and a few of it's
support functions. This is a step towards a common kernel on ARMv6.


# ef8abaae 31-Oct-2012 Andrew Turner <andrew@FreeBSD.org>

Merge r242125 into the other ARMv6 copies of initarm.


# c2257f93 23-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Clean up the bcm2835 initarm. It is now identical to the other ARMv6 copies

Tested by: Alexander Yerenkow


# 610ba83a 23-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Fix a typo in a Broadcom initarm debug printf


# 1f008b99 22-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Pull out the SoC specific parts of initarm into separate functions


# 70203625 22-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Update different versions of physmap_init to be identical in preparation
for merging them.


# d98d8a1e 22-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Reduce the diff between the FDT implementations of initarm.
This only touches whitespace and comments.


# 11612982 22-Sep-2012 Andrew Turner <andrew@FreeBSD.org>

Create a common set_stackptrs in sys/arm/machdep.c.

On single core devices set_stackptrs is only ever called with cpu = 0 in
initarm and will be identical to the existing function. On SMP this needs
to be implemented for sys/arm/mp_machdep.c, but the implementations are
identical for each SoC.


# 1b1a53cf 30-Aug-2012 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Add barebone Raspberry Pi port. Supported parts:
- Interrupts controller
- Watchdog
- System timer
- Framebuffer (hardcoded resolution/bpp)