Up to [cvs.NetBSD.org] / src / sys / arch / arm / broadcom
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Trailing whitespace
Trailing whitespace
Merge changes from current as of 20200406
Add ACPI support.
Rewrite the bcm2835 i2c driver as an interrupt-driven state machine. This improves general system responsiveness when tranferring large amounts of data on a single-core Pi board. This also includes: Cleanup i2c bus acquire / release, centralizing all of the logic into iic_acquire_bus() / iic_release_bus(). "acquire" and "release" hooks no longer need to be provided by back-end controller drivers (only if they need special handling, e.g. powering on the i2c controller). This results in the removal of a bunch of rendundant code from each back-end controller driver. Assert that we are not in hard interrupt context in iic_acquire_bus(), iic_exec(), and iic_release_bus().
Sync with HEAD
Sync with HEAD
Use fdtbus_attach_i2cbus
Sync with HEAD
A minimal change to prevent the Raspberry Pi i2c driver from looping forever if the command buffer and data buffer are both NULL. XXX This driver needs an overhaul. Also, preemptively return an error if we get a 10-bit address, because we don't yet handle them correctly.
Sync with HEAD
If we don't get informed (via device properties) of child I2C devices, don't assign an empty array to iba.iba_child_devices, as it will prevent indirect configuration of the I2C bus from occurring. Tested on Raspberry Pi (bcm2835), identical logical fix replicated (and compile-tested) elsewhere. PR port-arm/53171
bcm2835_bsc: use fdt to enumerate i2c child devices From jmcneill@
PR/52848: Brad Spencer: Comment out KASSERT, length 0 appears to be valid.
FDTise RapberryPI support. Thanks for jmcneill for a lot of help with this. The kernel image that the RPI firmware boots is now netbsd.img in the kernel build directory. XXX fdtbus_get_reg needs reworking
update from HEAD
Pull up following revision(s) (requested by pgoyette in ticket #335): share/man/man9/kernhist.9: 1.5-1.8 sys/arch/acorn26/acorn26/pmap.c: 1.39 sys/arch/arm/arm32/fault.c: 1.105 via patch sys/arch/arm/arm32/pmap.c: 1.350, 1.359 sys/arch/arm/broadcom/bcm2835_bsc.c: 1.7 sys/arch/arm/omap/if_cpsw.c: 1.20 sys/arch/arm/omap/tiotg.c: 1.7 sys/arch/evbarm/conf/RPI2_INSTALL: 1.3 sys/dev/ic/sl811hs.c: 1.98 sys/dev/usb/ehci.c: 1.256 sys/dev/usb/if_axe.c: 1.83 sys/dev/usb/motg.c: 1.18 sys/dev/usb/ohci.c: 1.274 sys/dev/usb/ucom.c: 1.119 sys/dev/usb/uhci.c: 1.277 sys/dev/usb/uhub.c: 1.137 sys/dev/usb/umass.c: 1.160-1.162 sys/dev/usb/umass_quirks.c: 1.100 sys/dev/usb/umass_scsipi.c: 1.55 sys/dev/usb/usb.c: 1.168 sys/dev/usb/usb_mem.c: 1.70 sys/dev/usb/usb_subr.c: 1.221 sys/dev/usb/usbdi.c: 1.175 sys/dev/usb/usbdi_util.c: 1.67-1.70 sys/dev/usb/usbroothub.c: 1.3 sys/dev/usb/xhci.c: 1.75 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.34 sys/kern/kern_history.c: 1.15 sys/kern/kern_xxx.c: 1.74 sys/kern/vfs_bio.c: 1.275-1.276 sys/miscfs/genfs/genfs_io.c: 1.71 sys/sys/kernhist.h: 1.21 sys/ufs/ffs/ffs_balloc.c: 1.63 sys/ufs/lfs/lfs_vfsops.c: 1.361 sys/ufs/lfs/ulfs_inode.c: 1.21 sys/ufs/lfs/ulfs_vnops.c: 1.52 sys/ufs/ufs/ufs_inode.c: 1.102 sys/ufs/ufs/ufs_vnops.c: 1.239 sys/uvm/pmap/pmap.c: 1.37-1.39 sys/uvm/pmap/pmap_tlb.c: 1.22 sys/uvm/uvm_amap.c: 1.108 sys/uvm/uvm_anon.c: 1.64 sys/uvm/uvm_aobj.c: 1.126 sys/uvm/uvm_bio.c: 1.91 sys/uvm/uvm_device.c: 1.66 sys/uvm/uvm_fault.c: 1.201 sys/uvm/uvm_km.c: 1.144 sys/uvm/uvm_loan.c: 1.85 sys/uvm/uvm_map.c: 1.353 sys/uvm/uvm_page.c: 1.194 sys/uvm/uvm_pager.c: 1.111 sys/uvm/uvm_pdaemon.c: 1.109 sys/uvm/uvm_swap.c: 1.175 sys/uvm/uvm_vnode.c: 1.103 usr.bin/vmstat/vmstat.c: 1.219 Reorder to test for null before null deref in debug code -- Reorder to test for null before null deref in debug code -- KNF -- No need for '\n' in UVMHIST_LOG -- normalise a BIOHIST log message -- Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up... (As proposed on tech-kern@ with additional changes and enhancements.) Details of changes: * All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.) * Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments. * All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t. * All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size." * All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed. * vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9). * vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed). * vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built. * The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements. [1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju". [2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies. -- For some reason this single kernel seems to have outgrown its declared size as a result of the kernhist(9) changes. Bump the size. XXX The amount of increase may be excessive - anyone with more detailed XXX knowledge please feel free to further adjust the value appropriately. -- Misssed one cast of pointer --> uintptr_t in previous kernhist(9) commit -- And yet another one. :( -- Use correct mark-up for NetBSD version. -- More improvements in grammar and readability. -- Remove a stray '"' (obvious typo) and add a couple of casts that are probably needed. -- And replace an instance of "%p" conversion with "%#jx" -- Whitespace fix. Give Bl tag table a width. Fix Xr.
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up... (As proposed on tech-kern@ with additional changes and enhancements.) Details of changes: * All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.) * Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments. * All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t. * All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size." * All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed. * vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9). * vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed). * vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built. * The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements. [1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju". [2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
Sync with HEAD
Pull up following revision(s) (requested by jmcneill in ticket #1435): sys/arch/arm/arm32/cpu.c: 1.113 via patch sys/arch/arm/broadcom/bcm2835_bsc.c: 1.6 via patch sys/arch/arm/broadcom/bcm2835_plcom.c: 1.4 via patch sys/arch/arm/cortex/gtmr.c: 1.18 via patch sys/arch/arm/include/armreg.h: 1.110 via patch sys/arch/arm/include/vfpreg.h: 1.15 via patch sys/arch/arm/vfp/vfp_init.c: 1.50 via patch sys/arch/evbarm/rpi/rpi_machdep.c: 1.59, 1.70-1.72 via patch sys/arch/evbarm/rpi/vcprop.h: 1.16 Get the RPI3 working (in aarch32 mode) by recognising Cortex A53 CPUs. While I'm here add some A57/A72 info as well. My RPI3 works with FB console - the uart needs some help with its clocks. -- Do invalidate the cache as RPI2 build with Clang can't fetch the memory config otherwise. -- Use the VC property mailbox to request the UART clock rate and use it appropriately Newer firmwares use 48MHz -- Disable BSC0 on Raspberry Pi 3 and Zero W boards. -- Interrupts are enabled before the timer is configured. Ensure that the timer is disabled when attaching so it doesn't go crazy between the time interrupts are enabled and clocks are initialized. My RPI3 makes it multi-user now. -- Enable UART0 (PL011) on GPIO header for Raspberry Pi 3 / Zero W
Pull up following revision(s) (requested by jmcneill in ticket #43): sys/arch/arm/broadcom/bcm2835_bsc.c: revision 1.6 sys/arch/evbarm/rpi/rpi_machdep.c: revision 1.71 sys/arch/evbarm/rpi/vcprop.h: revision 1.16 Disable BSC0 on Raspberry Pi 3 and Zero W boards.
Disable BSC0 on Raspberry Pi 3 and Zero W boards.
Sync with HEAD
If doing a read-only (that is, no initial command write phase) transfer, do not send a 0-byte write to the device before performing data phase.
Catch NAKs from the device more often. Should fix PR#48855 and maybe PR#48932.
Pull up following revision(s) (requested by skrll in ticket #90): sys/arch/arm/broadcom/bcm2835_bsc.c: revision 1.3 Initialise bsciichist only once, otherwise the kern_histories list never ends.
Initialise bsciichist only once, otherwise the kern_histories list never ends.
Rebase to HEAD as of a few days ago.
sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
sync with head
Mark a variable __diagused PR 48668 from David H. Gutteridge
resync with head
Pull up following revision(s) (requested by skrll in ticket #813): etc/MAKEDEV.tmpl 1.160 etc/etc.evbarm/MAKEDEV.conf 1.9 external/broadcom/rpi-firmware/dist/LICENCE.broadcom 1.1 external/broadcom/rpi-firmware/dist/bootcode.bin 1.1 external/broadcom/rpi-firmware/dist/bootcode.bin 1.2 external/broadcom/rpi-firmware/dist/fixup.dat 1.1 external/broadcom/rpi-firmware/dist/fixup.dat 1.2 external/broadcom/rpi-firmware/dist/fixup_cd.dat 1.1 external/broadcom/rpi-firmware/dist/fixup_cd.dat 1.2 external/broadcom/rpi-firmware/dist/start.elf 1.1 external/broadcom/rpi-firmware/dist/start.elf 1.2 external/broadcom/rpi-firmware/dist/start_cd.elf 1.1 external/broadcom/rpi-firmware/dist/start_cd.elf 1.2 sys/arch/arm/broadcom/bcm2835_bsc.c 1.1 via patch sys/arch/arm/broadcom/bcm2835_bscreg.h 1.1 via patch sys/arch/arm/broadcom/bcm2835_dotg.c 1.1 via patch sys/arch/arm/broadcom/bcm2835_emmc.c 1.7 via patch sys/arch/arm/broadcom/bcm2835_genfb.c 1.4 via patch sys/arch/arm/broadcom/bcm2835_gpio_subr.c 1.2 via patch sys/arch/arm/broadcom/bcm2835_gpio_subr.h 1.1 via patch sys/arch/arm/broadcom/bcm2835_gpioreg.h 1.1 via patch sys/arch/arm/broadcom/bcm2835_intr.c 1.3 via patch sys/arch/arm/broadcom/bcm2835_mbox.c 1.5 via patch sys/arch/arm/broadcom/bcm2835_mbox.h 1.4 via patch sys/arch/arm/broadcom/bcm2835_obio.c 1.17 via patch sys/arch/arm/broadcom/bcm2835_pm.c 1.2 via patch sys/arch/arm/broadcom/bcm2835_rng.c 1.3 via patch sys/arch/arm/broadcom/bcm2835_space.c 1.5 via patch sys/arch/arm/broadcom/bcm2835_spi.c 1.1 via patch sys/arch/arm/broadcom/bcm2835_spireg.h 1.1 via patch sys/arch/arm/broadcom/bcm2835_tmr.c 1.3 via patch sys/arch/arm/broadcom/bcm2835reg.h 1.10 via patch sys/arch/arm/broadcom/files.bcm2835 1.14 via patch sys/arch/evbarm/conf/RPI 1.23 via patch sys/arch/evbarm/conf/files.rpi 1.3 via patch sys/arch/evbarm/conf/mk.rpi 1.2 via patch sys/arch/evbarm/conf/std.rpi 1.4 via patch sys/arch/evbarm/rpi/rpi_machdep.c 1.34 via patch sys/arch/evbarm/rpi/rpi_start.S 1.7 via patch sys/arch/evbarm/rpi/rpi_vcmbox.c 1.2 via patch sys/arch/evbarm/rpi/vcio.h 1.1 via patch sys/arch/evbarm/rpi/vcprop.h 1.7 via patch sys/conf/files patch sys/dev/sdmmc/sdhc.c 1.43 sys/dev/sdmmc/sdhcvar.h 1.13 sys/dev/usb/dwc_otg.c 1.45 via patch sys/dev/usb/dwc_otgreg.h 1.5 via patch sys/dev/usb/dwc_otgvar.h 1.11 via patch sys/dev/usb/files.usb 1.126 via patch sys/dev/usb/if_smsc.c 1.7 via patch sys/dev/usb/if_smscreg.h 1.1 via patch sys/dev/usb/if_smscvar.h 1.1 via patch sys/dev/usb/usbdevices.config patch sys/dev/usb/usbdevs 1.633 via patch sys/dev/usb/usbdevs.h regen sys/dev/usb/usbdevs_data.h regen sys/dev/wscons/wsconsio.h 1.105,1.107 via patch sys/dev/wscons/wsdisplayvar.h 1.50 sys/dev/wscons/wsdisplay_util.c 1.2 sys/dev/videomode/edid.c 1.12 via patch Greatly improved Raspberry Pi support. USB and onboard Ethernet should work. [skrll, ticket #813]
sync with head
file bcm2835_bsc.c was added on branch tls-maxphys on 2013-02-25 00:28:25 +0000
file bcm2835_bsc.c was added on branch netbsd-6 on 2013-02-13 01:36:14 +0000
file bcm2835_bsc.c was added on branch yamt-pagecache on 2013-01-23 00:05:41 +0000
Add driver for Broadcom Serial Control (I²C) master on BCM2835.