Home | History | Annotate | only in /src/sys/arch/arm/xilinx
History log of /src/sys/arch/arm/xilinx
RevisionDateAuthorComments
 1.6 06-Sep-2025  thorpej Step towards modularizing the Flattened Device Tree code.

Define attributes for each of the specific device bindings: clock,
dai, dma, gpio, i2c, iommu, mbox, mmc_pwrseq, phy, power, power domain,
pwm, regulator, reset controller, spi, system controller, pin
controller. Include these support files only if either a provider
or consumer with one of these attributes is present in the kernel
config.

Add the necessary attributes to the device / attach declarations for
each provider and consumer.

There are some bindings that are consumed by generic code (iommu, pinctrl,
power, power domain). Provide weak stubs for these routines to handle
situations where there is no provider.

No actual code changed; NFCI.
 1.5 11-Nov-2022  jmcneill Add support for Xilinx 7-series ADC.

The temperature and voltage sensors are exposed with sysmon:

# envstat -d zynqxadc0
Current CritMax WarnMax WarnMin CritMin Unit
temperature: 67.426 degC
vccint: 1.010 V
vccaux: 1.801 V
vp/vn: 0.011 V
vrefp: 1.250 V
vrefn: 0.004 V
vccbram: 1.009 V
vccpint: 1.009 V
vccpaux: 1.799 V
vcco_ddr: 1.500 V
 1.4 27-Oct-2022  jmcneill Add driver for Zynq GPIO controller.
 1.3 26-Oct-2022  jmcneill Use generic Arasan SDHCI driver for Zynq-7000.
 1.2 25-Oct-2022  jmcneill Add basic Zynq-7000 PS clock subsystem driver.

PR# kern/57068
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file files.zynq was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.5 11-Nov-2022  jmcneill Support PCAL clock control
 1.4 05-Nov-2022  jmcneill Add I2C clocks
 1.3 26-Oct-2022  jmcneill Since this node is a child of a syscon, the reg property doesn't fully
describe the device physical address. Use syscon accessors to read/write
clock registers instead.
 1.2 26-Oct-2022  jmcneill Use generic Arasan SDHCI driver for Zynq-7000.
 1.1 25-Oct-2022  jmcneill Add basic Zynq-7000 PS clock subsystem driver.

PR# kern/57068
 1.3 26-Oct-2022  jmcneill Use generic Arasan SDHCI driver for Zynq-7000.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 11-Jun-2019  skrll branches: 1.1.10; 1.1.12;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq7000_sdhc.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.4 06-Sep-2025  thorpej Re-factor the console-related code into fdt_console.[ch]
 1.3 25-Oct-2022  jmcneill Fixup some mixed up log messages.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 11-Jun-2019  skrll branches: 1.1.10; 1.1.12;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq7000_uart.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.3 25-Oct-2022  jmcneill Fixup mixed up log messages.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 11-Jun-2019  skrll branches: 1.1.10; 1.1.12;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq7000_usb.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.12 15-Oct-2025  thorpej Remove a now-unnecessary dance with "local-mac-address".
 1.11 03-Oct-2025  thorpej Use device_setprop_data() to set the "mac-address" property.
 1.10 15-Oct-2024  lloyd Allow non-Realtek PHYs to be used with Zynq SoCs.

The cemac driver used to skip the first PHY found in order to work
around a bug where Realtek PHYs attached to a cemac Ethernet would
report at PHY numbers 0 and 1. Unfortunately if you don't have this
bug, then your only PHY would get skipped.

The Zynq FDT always has a working PHY number recorded in it, so we now
simply use that number (if present) instead of searching for all
available PHYs.
 1.9 25-Aug-2024  skrll Re-organise to enable other attachments.
 1.8 25-Aug-2024  skrll More #include maintenance
 1.7 25-Aug-2024  skrll Wrap long lines.
 1.6 25-Aug-2024  skrll #include maintenance
 1.5 24-Aug-2024  skrll G/C
 1.4 26-Oct-2022  jmcneill branches: 1.4.8;
Inherit MAC address from Devicetree "local-mac-address" property.
 1.3 25-Oct-2022  jmcneill Fixup some mixed up log messages.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 11-Jun-2019  skrll branches: 1.1.10; 1.1.12;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.12.1 03-Apr-2021  thorpej Sync with HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_cemac.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.4.8.1 02-Aug-2025  perseant Sync with HEAD
 1.4 31-Oct-2022  jmcneill Fix MASK_DATA logic in previous commit -- the upper 16-bits are a mask
of pin states to preserve, not to set.
 1.3 29-Oct-2022  jmcneill Fix MASK_DATA_SET macro
 1.2 27-Oct-2022  jmcneill Fix bit macros
 1.1 27-Oct-2022  jmcneill Add driver for Zynq GPIO controller.
 1.12 06-Sep-2025  thorpej Refactor the "platform" defitions into fdt_platform.h
 1.11 07-Apr-2023  skrll Rename ARM_PLATFORM to FDT_PLATFORM and make it available outside arm.
 1.10 31-Oct-2022  jmcneill Implement zynq_platform_reset()
 1.9 28-Oct-2022  jmcneill Retire PARALLELLA and ZEDBOARD kernel configs.

The Zynq-7000 port has been converted to Devicetree and is supported
by the GENERIC kernel now.
 1.8 27-Oct-2022  jmcneill Add OCM to devmap
 1.7 27-Oct-2022  jmcneill Add AP startup for Zynq-7000.
 1.6 25-Oct-2022  jmcneill Remove unnecessary code in zynq_platform_device_register
 1.5 24-Apr-2021  thorpej Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.4 04-Feb-2021  thorpej branches: 1.4.2;
Call acpi_device_register() / fdtbus_device_register() as approrpriate.
 1.3 28-Sep-2020  jmcneill branches: 1.3.2;
Get rid of a4x bus_space tag from fdtbus_attach_args. The only consumer
of this was various com(4) glue so modify all of that to use the new
com_init_regs_stride instead.
 1.2 10-Jul-2020  skrll Add support for KASAN on ARMv[67]

Thanks to maxv for many pointers and reviews.
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_platform.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.3.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.4.2.1 03-Apr-2021  thorpej - FDT device enumeration now sets the device handle using CFARG_DEVHANDLE.
- fdtbus_device_register() is now obsolete, so G/C it.
- of_device_register() is now obsolete, so G/C it.
 1.6 04-May-2024  dyoung Initialize `struct consdev` members cn_dev and cn_pri like other
UART drivers do. If cn_dev is 0 instead of NODEV, then the kernel
may redirect console writes to major 0, minor 0, which is /dev/mem.
On my Zynq board the kernel overwrote the page free list with a
console message in this way.
 1.5 27-Oct-2022  skrll Fix build.
Sprinkle some consistency
 1.4 26-Oct-2022  riastradh ddb/db_active.h: New home for extern db_active.

This can be included unconditionally, and db_active can then be
queried unconditionally; if DDB is not in the kernel, then db_active
is a constant zero. Reduces need for #include opt_ddb.h, #ifdef DDB.
 1.3 20-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.2 10-Nov-2019  chs branches: 1.2.8; 1.2.10;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.1 11-Jun-2019  skrll Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.2.10.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.2.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.8.1 10-Nov-2019  martin file zynq_uart.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_uartreg.h was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_uartvar.h was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.3 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.2 24-Apr-2021  thorpej branches: 1.2.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.1 11-Jun-2019  skrll branches: 1.1.10; 1.1.14;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.14.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_usb.c was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.2.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 08-Feb-2024  andvar s/transeiver/transceiver/ in comments.
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_usbreg.h was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.1 11-Jun-2019  skrll branches: 1.1.10;
Initial commit of FDTised Xilinx Zynq-7000 support. Tested with

qemu-system-arm -M xilinx-zynq-a9 -dtb zynq-zed.dtb -kernel netbsd.ub \
-serial /dev/null -serial stdio

Based on a set of diffs/files from rjs@

sys/arch/arm/zynq is kept in place to allow existing kernels (e.g.
ZEDBOARD and PARALLELLA) to continue to build/work during the transition,
but eventually sys/arch/arm/zynq will be deleted.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 11-Jun-2019  martin file zynq_usbvar.h was added on branch phil-wifi on 2020-04-13 08:03:38 +0000
 1.1 11-Nov-2022  jmcneill Add support for Xilinx 7-series ADC.

The temperature and voltage sensors are exposed with sysmon:

# envstat -d zynqxadc0
Current CritMax WarnMax WarnMin CritMin Unit
temperature: 67.426 degC
vccint: 1.010 V
vccaux: 1.801 V
vp/vn: 0.011 V
vrefp: 1.250 V
vrefn: 0.004 V
vccbram: 1.009 V
vccpint: 1.009 V
vccpaux: 1.799 V
vcco_ddr: 1.500 V

RSS XML Feed