aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fdt/fdt_common.c
Commit message (Collapse)AuthorAgeFilesLines
* Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)Pawel Biernacki2020-02-261-1/+2
| | | | | | | | | | | | | | | | | | | r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly marked). Use it in preparation for a general review of all nodes. This is non-functional change that adds annotations to SYSCTL_NODE and SYSCTL_PROC nodes using one of the soon-to-be-required flags. Mark all obvious cases as MPSAFE. All entries that haven't been marked as MPSAFE before are by default marked as NEEDGIANT Approved by: kib (mentor, blanket) Commented by: kib, gallatin, melifaro Differential Revision: https://reviews.freebsd.org/D23718 Notes: svn path=/head/; revision=358333
* cpsw: use `phy-handle` in FDT to find PHY addressEd Maste2019-04-031-0/+3
| | | | | | | | | | | | | | | | | | | | In r337703 DTS files were updated to Linux 4.18, including Linux commit 4d8b032d3c03f4e9788a18bbb51b10e6c9e8a56b which removed the `phy_id` property from am335x-bone-common (as the property was deprecated). Use `phy-handle` via fdt_get_phyaddr, keeping the existing code as a fallback for old DTBs. PR: 236624 Submitted by: manu, Gerald Aryeetey <aryeeteygerald_rogers.com> Reported by: Gerald Aryeetey Reviewed by: manu MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19814 Notes: svn path=/head/; revision=345855
* Handle reserved memory with the no-map property.Andrew Turner2018-05-221-0/+41
| | | | | | | | | | | | | We shouldn't be mapping this memory, so we need to find it so it can be excluded from the phys_avail map. Reviewed by: manu Obtained from: ABT Systems Ltd Sponsored by: Turing Robotic Industries Differential Revision: https://reviews.freebsd.org/D15518 Notes: svn path=/head/; revision=334056
* Replace calls to fdt_is_compatible with ofw_bus_node_is_compatible. TheseAndrew Turner2018-04-081-44/+3
| | | | | | | | | are almost identical so there is no need to keep the former around. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=332309
* Revert r332277, it contained an unintended extra changeAndrew Turner2018-04-081-2/+75
| | | | Notes: svn path=/head/; revision=332278
* Replace calls to fdt_is_compatible with ofw_bus_node_is_compatible. TheseAndrew Turner2018-04-081-75/+2
| | | | | | | | | are almost identical so there is no need to keep the former around. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=332277
* Move fdt_is_type to be a Marvell specific function. It's not used by anyAndrew Turner2018-04-081-19/+0
| | | | | | | | | other SoCs. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=332274
* Remove fdt_pm_is_enabled as it's Marvell specific. Replace the only call toAndrew Turner2018-04-041-13/+0
| | | | | | | | | it with a call to the helper function fdt_pm_is_enabled would call. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=332026
* Remove fdt_is_enabled, fdt_reg_to_rl, and fdt_get_unit. These are not usedAndrew Turner2018-04-031-86/+0
| | | | | | | | | by anything in the tree. Sponsored by: DARPA, AFRL Notes: svn path=/head/; revision=331925
* [ofw] fix errneous checks for OF_finddevice(9) return valueOleksandr Tymoshenko2018-03-201-2/+2
| | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=331229
* Do pass removing some write-only variables from the kernel.Alexander Kabaev2017-12-251-11/+3
| | | | | | | | | | | | This reduces noise when kernel is compiled by newer GCC versions, such as one used by external toolchain ports. Reviewed by: kib, andrew(sys/arm and sys/arm64), emaste(partial), erj(partial) Reviewed by: jhb (sys/dev/pci/* sys/kern/vfs_aio.c and sys/kern/kern_synch.c) Differential Revision: https://reviews.freebsd.org/D10385 Notes: svn path=/head/; revision=327173
* sys/dev: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-271-0/+2
| | | | | | | | | | | | | | | 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. Notes: svn path=/head/; revision=326255
* Enable parsing simple-bus 'ranges' with multiple entriesMarcin Wojtas2017-08-091-1/+2
| | | | | | | | | | | | | | | | | | | This patch makes possible to boot with up to 8 ranges in soc. Dynamic allocation cannot be used, because ftd_get_ranges function is called early, when malloc is not available. Change is required for the alignment of Marvell Armada 38x device trees present in sys/gnu/dts/arm - originally the platform has 6 entries in simple-bus 'ranges'. Submitted by: Patryk Duda <pdk@semihalf.com> Reviewed by: manu, nwhitehorn, cognet (mentor) Approved by: cognet (mentor) Obtained from: Semihalf Differential Revision: https://reviews.freebsd.org/D11876 Notes: svn path=/head/; revision=322285
* Set the correct default for #address-cells variable when the property doesLuiz Otavio O Souza2017-04-301-1/+1
| | | | | | | | | | | | not exist. This has never caused any issue because #address-cells is mandatory. Sponsored by: Rubicon Communications, LLC (Netgate) MFC after: 2 weeks Notes: svn path=/head/; revision=317604
* Make fdt_is_compatible a static function. It's only used in fdt_common.c.Andrew Turner2016-11-191-1/+3
| | | | | | | Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=308830
* Replace OF_getprop ... fdt32_to_cpu with OF_getencprop. The latterAndrew Turner2016-11-111-7/+7
| | | | | | | | | | correctly adjusts for the endian. MFC after: 1 week Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=308524
* Add hw.fdt sysctl node.Stephen J. Kiernan2016-08-061-0/+3
| | | | | | | | | | | | | Make FDT blob available via opaque hw.fdt.dtb sysctl, if a DTB has been installed by the time sysctls are registered. Reviewed by: andrew Approved by: sjg (mentor) Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D7411 Notes: svn path=/head/; revision=303803
* Add OF_prop_free function as a counterpart for OF_*prop_allocOleksandr Tymoshenko2016-05-111-3/+3
| | | | | | | | | | | | | | | | | | | - Introduce new OF API function OF_prop_free to free memory allocated by OF_getprop_alloc and OF_getencprop_alloc. Current code just calls free(9) with M_OFWPROP memory class which assumes knowledge about OF_*prop_alloc functions' internals and leads to unneccessary code coupling - Convert some of the free(..., M_OFWPROP) instances to OF_prop_free Files affected by this commit are the ones I was able to test on real hardware. The rest of free(..., M_OFWPROP) instances will be handled with idividual maintainers Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D6315 Notes: svn path=/head/; revision=299477
* ARM: Parse command line delivered by U-Boot:Michal Meloun2016-03-261-0/+13
| | | | | | | | | | | | | | | | - in atags - in DT blob (by using 'fdt chosen' U-Boot command) The command line must start with guard's string 'FreeBSD:' and can contain list of comma separated kenv strings. Also, boot modifier strings from boot.h are recognised and parsed into boothowto. The command line must be passed from U-Boot by setting of bootargs variable: 'setenv bootargs FreeBSD:boot_single=1,vfs.root.mountfrom=ufs:/dev/ada0s1a' followed by 'fdt chosen' (only for DT based boot) Notes: svn path=/head/; revision=297286
* Make the memory size returned from fdt_get_mem_regions a 64-bit type. ThisAndrew Turner2016-03-011-2/+2
| | | | | | | | | | | | | is the physical memory size so may be larger than a u_long can hold, e.g. on ARM with LPAE we could see an address space of up to 40 bits. On ARM u_long is only 32 bits so the memory size will be truncated, possibly to zero. Reported by: bz Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=296265
* Make the fdt_get_mem_regions memsize argument optional. It's only used inAndrew Turner2016-03-011-1/+2
| | | | | | | | | by a few callers. Sponsored by: ABT Systems Ltd Notes: svn path=/head/; revision=296257
* Fix fdt_get_mem_regions() to work with 64-bit addressesWojciech Macek2016-02-291-2/+2
| | | | | | | | | | | | | | | Use u_long instead of uint32_t variables to avoid overflow in case of PA space bigger than 32-bit. Obtained from: Semihalf Submitted by: Michal Stanek <mst@semihalf.com> Sponsored by: Annapurna Labs Approved by: cognet (mentor) Reviewed by: andrew, br, wma Differential revision: https://reviews.freebsd.org/D5393 Notes: svn path=/head/; revision=296189
* Do not require strict compatibility on simplebusZbigniew Bodek2016-01-201-2/+2
| | | | | | | | | | | | | | | | | | Strict compatibility requirement is a root of problems when simplebus' node has two compatibility strings (i.e. on Armada38x). Removing this requirement should not interfere with other platforms. fdt_is_compatible_strict() and fdt_find_compatible() calls were changed in fdt_common.c and mv_common.c. Reviewed by: ian, imp Obtained from: Semihalf Sponsored by: Stormshield Submitted by: Bartosz Szczepanek <bsz@semihalf.com> Differential revision: https://reviews.freebsd.org/D4602 Notes: svn path=/head/; revision=294419
* Rename fdt_find_child to ofw_bus_find_child. There is nothing FDT-specificOleksandr Tymoshenko2015-05-241-17/+0
| | | | | | | | | in this function. Suggested by: andrew@ Notes: svn path=/head/; revision=283503
* Add helper method fdt_find_child to make access to child nodes easier.Oleksandr Tymoshenko2015-05-221-0/+17
| | | | | | | | | Some FDT nodes have complex properties organized as a child sub-nodes (e.g. timing for LCD panel) we need easy way to obtain handles for these sub-nodes Notes: svn path=/head/; revision=283275
* Add support for empty ranges properties within the tree, some vendorAndrew Turner2014-12-191-3/+8
| | | | | | | | | device trees have these, for example the ARM AArch64 Foundation Model. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=275937
* Eliminate fdt_data_verify(). The verification it proceed is wrongRuslan Bukin2014-12-151-64/+6
| | | | | | | | | disallowing us to encode 64-bit register numbers. Discussed with: nwhitehorn, andrew Notes: svn path=/head/; revision=275792
* The ranges parent bus address may just be a tag to the entry in the parentAndrew Turner2014-11-201-4/+87
| | | | | | | | | | | | | node. Take this in to account by searching until we find the range for the root node. Differential Revision: https://reviews.freebsd.org/D1160 Reviewed by: ian Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=274751
* Replace multiple nearly-identical copies of code to walk through an FDTIan Lepore2014-09-251-40/+0
| | | | | | | | | | | | | | | | | | | node's interrupts=<...> property creating resource list entries with a single common implementation. This change makes ofw_bus_intr_to_rl() the one true copy of that code and removes the copies of it from other places. This also adds handling of the interrupts-extended property, which allows specifying multiple interrupts for a node where each interrupt can have a separate interrupt-parent. The bindings for this state that the property cells contain an xref phandle to the interrupt parent followed by whatever interrupt info that parent normally expects. This leads to having a variable number of icells per interrupt in the property. For example you could have <&intc1 1 &intc2 26 9 0 &intc3 9 4>. Differential Revision: https://reviews.freebsd.org/D803 Notes: svn path=/head/; revision=272109
* Rename OF_xref_phandle() to OF_node_from_xref() and add a new functionIan Lepore2014-09-011-2/+2
| | | | | | | | | that provides the inverse translation, OF_xref_from_node(). Discussed with: nwhitehorn Notes: svn path=/head/; revision=270945
* Catch up with last-second name change.Ian Lepore2014-02-161-1/+1
| | | | Notes: svn path=/head/; revision=261958
* Add a helper routine to depth-search the device tree for a node with aIan Lepore2014-02-161-0/+21
| | | | | | | | | | matching 'compatible' property. This probably has a short half-life (as do most of the fdt_ functions), but it helps solve some near-term needs until we work out the larger problems of device instantiation order versus the order of things in the fdt data. Notes: svn path=/head/; revision=261955
* Fix missing offset.Nathan Whitehorn2014-02-021-1/+2
| | | | Notes: svn path=/head/; revision=261398
* Open Firmware interrupt specifiers can consist of arbitrary-length byteNathan Whitehorn2014-02-011-3/+1
| | | | | | | | | | | | strings and include arbitrary information (IRQ line/domain/sense). When the ofw_bus_map_intr() API was introduced, it assumed that, as on most systems, these were either 1 cell, containing an interrupt line, or 2, containing a line number plus a sense code. It turns out a non-negligible number of ARM systems use 3 (or even 4!) cells for interrupts, so make this more general. Notes: svn path=/head/; revision=261351
* Be more robust with malformed interrupt config data. Instead of crashingIan Lepore2014-01-241-5/+17
| | | | | | | | | | or going into a near-infinite loop, warn and make potentially-reasonable assumptions. Reviewed by: brooks, nwhitehorn Notes: svn path=/head/; revision=261094
* Retire machine/fdt.h as a header used by MI code, as its function is nowNathan Whitehorn2014-01-051-1/+0
| | | | | | | | | | | | | | | | | | obsolete. This involves the following pieces: - Remove it entirely on PowerPC, where it is not used by MD code either - Remove all references to machine/fdt.h in non-architecture-specific code (aside from uart_cpu_fdt.c, shared by ARM and MIPS, and so is somewhat non-arch-specific). - Fix code relying on header pollution from machine/fdt.h includes - Legacy fdtbus.c (still used on x86 FDT systems) now passes resource requests to its parent (nexus). This allows x86 FDT devices to allocate both memory and IO requests and removes the last notionally MI use of fdtbus_bs_tag. - On those architectures that retain a machine/fdt.h, unused bits like FDT_MAP_IRQ and FDT_INTR_MAX have been removed. Notes: svn path=/head/; revision=260327
* Reimplement fdt_intr_to_rl() in terms of OFW_BUS_MAP_INTR() andNathan Whitehorn2014-01-041-92/+20
| | | | | | | | OFW_BUS_CONFIG_INTR(). This function is only used by simplebus, so will likely be moved there in the future. Notes: svn path=/head/; revision=260282
* Do not map IRQs twice. This fixes PowerPC/FDT systems with multiple PICs,Nathan Whitehorn2013-10-241-3/+2
| | | | | | | | which would try to treat the previously-mapped interrupts from fdt_decode_intr() as interrupt line numbers on the same parent PIC. Notes: svn path=/head/; revision=257060
* Remove OF_instance_to_package() hack for FDT and replace with use of theNathan Whitehorn2013-10-231-2/+2
| | | | | | | | generic OF_xref_phandle() API universally. Also replace some related explicit uses of fdt32_to_cpu() with OF_getencprop() calls. Notes: svn path=/head/; revision=256967
* Standards-conformance and code deduplication:Nathan Whitehorn2013-10-221-12/+18
| | | | | | | | | | | | | - Use bus reference phandles in place of FDT offsets as IRQ domain keys - Unify the identical macio/fdt/mambo OpenPIC drivers into one - Be more forgiving (following ePAPR) about what we need from the device tree to identify an OpenPIC - Correctly map all IRQs into an interrupt domain - Set IRQ_*_CONFORM for interrupts on an unknown PIC type instead of failing attachment for that device. Notes: svn path=/head/; revision=256898
* MFP4: 223121 (FDT infrastructure portion)Brooks Davis2013-10-211-0/+2
| | | | | | | | | | | | | Implement support for interrupt-parent nodes in simplebus. The current implementation requires that device declarations have an interrupt-parent node and that it point to a device that has registered itself as a interrupt controller in fdt_ic_list_head and implements the fdt_ic interface. Sponsored by: DARPA/AFRL Notes: svn path=/head/; revision=256861
* Return "start" and "end" to u_long world. Because rman handle addresses asAleksandr Rybalko2013-03-191-4/+3
| | | | | | | | | | u_long too. Discussed with: ian@ Pointy hat to: ray@ Notes: svn path=/head/; revision=248509
* Cast "start" to u_long. Temporary fix to unbreak tinderbox.Aleksandr Rybalko2013-03-191-2/+2
| | | | | | | We need here max possible storage or dynamic, depend on size of address cell. Notes: svn path=/head/; revision=248502
* o Switch to use physical addresses in rman for FDT.Aleksandr Rybalko2013-03-181-7/+5
| | | | | | | | | o Remove vtophys used to translate virtual address to physical in case rman carry virtual. Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=248467
* Add fdt_get_reserved_regions function. API is simmilar to fdt_get_mem_regionsOleksandr Tymoshenko2012-11-301-0/+60
| | | | | | | | | It returns memory regions restricted from being used by kernel. These regions are dfined in "memreserve" property of root node in the same format as "reg" property of /memory node Notes: svn path=/head/; revision=243690
* Add fdt_get_unit() function.Grzegorz Bernacki2012-09-141-0/+11
| | | | | | | Obtained from: Semihalf Notes: svn path=/head/; revision=240485
* Set busaddr and bussize to 0 when fdt_get_range() fails.Grzegorz Bernacki2012-09-141-1/+4
| | | | | | | Obtained from: Semihalf Notes: svn path=/head/; revision=240484
* Do not swap byte order if we assign default value for intr_cellsOleksandr Tymoshenko2012-08-251-1/+2
| | | | Notes: svn path=/head/; revision=239689
* Fix argument type for bus_space_mapOleksandr Tymoshenko2012-08-151-1/+1
| | | | Notes: svn path=/head/; revision=239309
* Merging of projects/armv6, part 4Oleksandr Tymoshenko2012-08-151-35/+57
| | | | | | | | | | | | | | | | | | | | r233822: Remove useless and wrong piece of code in fdt_get_range() which i overwrites passed phandle_t node. Modify debug printf in fdt_reg_to_rl() to be consistent (that is, print start and end *virtual* addresses). r230560: Handle "ranges;" Make fdt_reg_to_rl() responsible for mapping the device memory, instead on just hoping that there's only one simplebus, and using fdt_immr_va as the base VA. r230315 Add a function to get the PA from range, instead of (ab)using fdt_immr_pa, and use it for the UART driver Notes: svn path=/head/; revision=239274