summaryrefslogtreecommitdiff
path: root/common/fdt_support.c
AgeCommit message (Collapse)Author
2017-03-26fdt_support: Fixup 'ethernet' aliases not ending in digitsTuomas Tynkkynen
The Raspberry Pi device tree files since Linux v4.9 have a "ethernet" alias pointing to the on-board Ethernet device node. However, U-Boot's fdt_fixup_ethernet() only looks at ethernet aliases ending in digits. As the spec doesn't mandate that aliases must end in numbers and there have been much older uses of an "ethernet" aliases in the wild (according to Tom Rini), change the code to accept "ethernet" as well. Without this Linux isn't told of the MAC address provided by the RPI firmware and the ethernet interface is always assigned a random MAC address. Signed-off-by: Tuomas Tynkkynen <[email protected]> Reviewed-by: Tom Rini <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2017-02-09Merge branch 'master' of git://git.denx.de/u-boot-netTom Rini
2017-02-08common: fdt_support: Remove check for mtdparts in fdt_fixup_mtdpartsLadislav Michl
fdt_fixup_mtdparts currently does nothing when partition info is runtime-generated or compiled-in defaults are used. Signed-off-by: Ladislav Michl <[email protected]> Fix nits in commit message: Signed-off-by: Simon Glass <[email protected]>
2017-02-07net: cosmetic: Do not use magic values for ARP_HLEN[email protected]
Commit 674bb249825a ("net: cosmetic: Replace magic numbers in arp.c with constants") introduced a nice define to replace the magic value 6 for the ethernet hardware address. Replace more hardcoded instances of 6 which really reference the ARP_HLEN (iow the MAC/Hardware/Ethernet address). Signed-off-by: Olliver Schinagl <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-12-02libfdt: replace ARCH_FIXUP_FDT with ARCH_FIXUP_FDT_MEMORYMasahiro Yamada
Commit e2f88dfd2d96 ("libfdt: Introduce new ARCH_FIXUP_FDT option") allows us to skip memory setup of DTB, but a problem for ARM is that spin_table_update_dt() and psci_update_dt() are skipped as well if CONFIG_ARCH_FIXUP_FDT is disabled. This commit allows us to skip only fdt_fixup_memory_banks() instead of the whole of arch_fixup_fdt(). It will be useful when we want to use a memory node from a kernel DTB as is, but need some fixups for Spin-Table/PSCI. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Alexey Brodkin <[email protected]> Acked-by: Simon Glass <[email protected]> Fixed build error for x86: Signed-off-by: Simon Glass <[email protected]>
2016-10-13cmd/fdt: add possibilty to have 'extrasize' on fdt resizeHannes Schmelzer
Sometimes devicetree nodes and or properties are added out of the u-boot console, maybe through some script or manual interaction. The devicetree as loaded or embedded is quite small, so the devicetree has to be resized to take up those new nodes/properties. In original the devicetree was only extended by effective 4 * add_mem_rsv. With this commit we can add an argument to the "fdt resize" command, which takes the extrasize to be added. Signed-off-by: Hannes Schmelzer <[email protected]> Signed-off-by: Hannes Schmelzer <[email protected]> Acked-by: Simon Glass <[email protected]>
2016-08-12fdt_support: fdt_translate_address() blob const correctnessStephen Warren
The next patch will call fdt_translate_address() from somewhere with a "const void *blob" rather than a "void *blob", so fdt_translate_address() must accept a const pointer too. Constify the minimum number of function parameters to achieve this. Signed-off-by: Stephen Warren <[email protected]> Acked-by: Simon Glass <[email protected]> Squashed in build fix from Stephen: Signed-off-by: Simon Glass <[email protected]>
2016-05-25fdt: Document the rest of struct of_busPaul Burton
Provide some documentation for the fields of struct of_bus, for consistency with that provided for the new match field. Signed-off-by: Paul Burton <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2016-05-25fdt: Support for ISA bussesPaul Burton
Support ISA busses in much the same way as Linux does. This allows for ISA bus addresses to be translated, and only if CONFIG_OF_ISA_BUS is selected in order to avoid including the code in builds which won't need it. Signed-off-by: Paul Burton <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2016-05-03fdt: fix setting MAC addresses for multiple interfacesLev Iserovich
For multiple ethernet interfaces the FDT offset of '/aliases' will change as we are adding MAC addresses to the FDT. Therefore only the first interface ('ethernet0') will get properly updated in the FDT, with the rest getting FDT errors when we try to set their MAC address. Signed-off-by: Lev Iserovich <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2016-03-17Revert "fdt: fix address cell count checking in fdt_translate_address()"Przemyslaw Marczak
This reverts commit 71105f50fedddfa5b0535d102c3d5078671721ad. The reverted commit was applied for a temporary to unbreak few Exynos boards on the release. After the discussion about the change, this commit should be avoided. Fixed device-tree for Exynos, allows reverting it without any issues. Signed-off-by: Przemyslaw Marczak <[email protected]> Cc: Stefan Roese <[email protected]> Cc: Tom Rini <[email protected]> Cc: Simon Glass <[email protected]> Cc: Stephen Warren <[email protected]> Cc: Stephen Warren <[email protected]> Tested-by: Simon Glass <[email protected]> Acked-by: Simon Glass <[email protected]>
2016-01-20Revert "fdt_support: Add multi-serial support for stdout fixup"Bin Meng
This reverts commit 3e303f748cf57fb23e8ec95ab7eac0074be50e2b. The fix up in the /aliases node does not work under the following scenarios: - Not every non-DM serial driver was written to have a driver name that conforms the format of "serial%d" or "eserial%d". - With driver model serial, the stdio_devices[] stores the serial device node name in the device tree. Signed-off-by: Bin Meng <[email protected]> Acked-by: Simon Glass <[email protected]>
2016-01-13Merge git://git.denx.de/u-boot-netTom Rini
2016-01-07fdt: fix address cell count checking in fdt_translate_address()Przemyslaw Marczak
Commit: dm: core: Enable optional use of fdt_translate_address() Enables use of this function as default, but after this it's not possible to get dev address for the case in which: '#size-cells == 0' This causes errors when getting address for some GPIOs, for which the '#size-cells' is set to 0. Example error: '__of_translate_address: Bad cell count for gpx0' Allowing for that case by modifying the macro 'OF_CHECK_COUNTS', (called from )__of_translate_address(), fixes the issue. Now, this macro doesn't check, that '#size-cells' is greater than 0. This is possible from the specification point of view, but I'm not sure that it doesn't introduce a regression for other configs. Please test and share the results. Tested-on: Odroid U3, Odroid X2, Odroid XU3, Sandbox. Signed-off-by: Przemyslaw Marczak <[email protected]> Cc: Masahiro Yamada <[email protected]> Cc: Lukasz Majewski <[email protected]> Cc: Jaehoon Chung <[email protected]> Cc: Stefan Roese <[email protected]> Cc: Simon Glass <[email protected]> Cc: Bin Meng <[email protected]> Cc: Marek Vasut <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Tested-by: Lukasz Majewski <[email protected]>
2015-12-21fdt: Rewrite the logic in fdt_fixup_ethernet()Bin Meng
Currently in fdt_fixup_ethernet() the MAC address fix up is handled in a loop of which the exit condition is to test the "eth%daddr" env is not NULL. However this creates unnecessary constrains that those "eth%daddr" env variables must be sequential even if "ethernet%d" does not start from 0 in the "/aliases" node. For example, with "/aliases" node below: aliases { ethernet3 = &enet3; ethernet4 = &enet4; }; "ethaddr", "eth1addr", "eth2addr" must exist in order to fix up ethernet3's MAC address successfully. Now we change the loop logic to iterate the properties in the "/aliases" node. For each property, test if it is in a format of "ethernet%d", then get its MAC address from corresponding "eth%daddr" env and fix it up in the dtb. Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]> Reviewed-by: Tom Rini <[email protected]> On OMAP4 Panda (+v4.3 kernel) Tested-by: Tom Rini <[email protected]>
2015-12-21fdt: Deprecate "usbethaddr" usage in fdt_fixup_ethernet()Bin Meng
In fdt_fixup_ethernet() only "usbethaddr" is handled to fix up the first usb ethernet port MAC address. Other additional usb ethernet ports are ignored as there is no logic to handle "usbeth%daddr". It is suggested we should use "ethaddr" for all ethernet devices. Hence deprecate "usbethaddr" usage in fdt_fixup_ethernet(). This actually reverts commit b1f49ab8c7bad60426b30c134ae065ef77d2dfc1 "ARM: fdt support: Add usbethaddr as an acceptable MAC". Signed-off-by: Bin Meng <[email protected]> Acked-by: Joe Hershberger <[email protected]> Reviewed-by: Tom Rini <[email protected]> On OMAP4 Panda (+ v4.3 kernel) Tested-by: Tom Rini <[email protected]>
2015-12-09fdt: Change OF_BAD_ADDR to FDT_ADDR_T_NONEBin Meng
Currently OF_BAD_ADDR is always -1ULL. When using OF_BAD_ADDR as the return value of dev_get_addr(), it creates potential size mismatch as dev_get_addr() uses FDT_ADDR_T_NONE as the return value which can be either -1U or -1ULL depending on CONFIG_PHYS_64BIT. Now we change OF_BAD_ADDR to FDT_ADDR_T_NONE to avoid such case. Signed-off-by: Bin Meng <[email protected]> Acked-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2015-10-26fdt_support: Don't panic if stdout alias is missingScott Wood
Currently, using fdt_fixup_stdout() on a device tree that is missing the relevant alias results in this: WARNING: could not set linux,stdout-path FDT_ERR_NOTFOUND. ERROR: /chosen node create failed - must RESET the board to recover. FDT creation failed! hanging...### ERROR ### Please RESET the board ### There is no reason for this to be a fatal error rather than a warning, and removing this allows for a smooth transition on a platform where the device tree currently lacks the correct aliases but will have them in the future. Signed-off-by: Scott Wood <[email protected]> Cc: Kumar Gala <[email protected]> Cc: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: York Sun <[email protected]>
2015-07-20fdt: prevent clearing memory node if there are no banksAndre Przywara
Avoid clearing the reg property in the memory DT node if no memory banks have been specified for a board (CONFIG_NR_DRAM_BANKS == 0). This allows boards to let U-Boot skip the DT memory tinkering in case other firmware has already setup the node properly before. This should be safe as all callers of fdt_fixup_memory_banks that use a computed <banks> value put at least 1 in there. Add some documentation comments to the header file. Signed-off-by: Andre Przywara <[email protected]> Acked-by: Simon Glass <[email protected]>
2015-06-05fdt: Pass the device serial number through devicetreePaul Kocialkowski
Before device-tree, the device serial number used to be passed to the kernel using ATAGs (on ARM). This is now deprecated and all the handover to the kernel should now be done using device-tree. Thus, this passes the serial-number property to the kernel using the serial-number property of the root node, as expected by the kernel. The serial number is a string that somewhat represents the device's serial number. It might come from some form of storage (e.g. an eeprom) and be programmed at factory-time by the manufacturer or come from identification bits available in e.g. the SoC. Signed-off-by: Paul Kocialkowski <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2015-05-05fdt: Correct warning in fdt_setup_simplefb_node()Simon Glass
Adjust the printf() string to avoid a warning on sandbox. Signed-off-by: Simon Glass <[email protected]>
2015-04-22fdt: add new fdt_fixup_display function to configure displayTim Harvey
Add 'fdt_fixup_display' function to fixup device-tree native-mode property of display-timings node to select timings for a specific display. This is useful if a device-tree has configurations for multiple display timings for undetectable displays. see kernel Documentation/devicetree/bindings/video/display-timing.txt Signed-off-by: Tim Harvey <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-12-04Merge branch 'sandbox' of git://git.denx.de/u-boot-x86Tom Rini
2014-12-01fdt: Fix regression in fdt_pack_reg()Hans de Goede
After commit 933cdbb479: "fdt: Try to use fdt_address_cells()/fdt_size_cells()" I noticed that allwinner boards would no longer boot. Switching to fdt_address_cells / fdt_size_cells changes the result from bytes to 32 bit words, so when we increment pointers into the blob, we must do so by 32 bit words now. This commit makes allwinner boards boot again. Signed-off-by: Hans de Goede <[email protected]> Tested-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]> Tested-by: Stefan Roese <[email protected]> Tested-by: Vince Hsu <[email protected]>
2014-11-26sandbox: Fix warnings due to 64-bit printf() stringsSimon Glass
Now that we have inttypes.h, use it in a few more places to avoid compiler warnings on sandbox when building on 64-bit machines. Signed-off-by: Simon Glass <[email protected]>
2014-11-26Merge branch 'master' of http://git.denx.de/u-boot-sunxiTom Rini
2014-11-26Merge git://git.denx.de/u-boot-fdtTom Rini
2014-11-25fdt_support: Add a fdt_setup_simplefb_node helper functionHans de Goede
Add a generic helper to fill and enable simplefb nodes. The first user of this will be the sunxi display code. lcd_dt_simplefb_configure_node is also a good candidate to be converted to use this, but that requires someone to run some tests first, as lcd_dt_simplefb_configure_node does not honor #address-cells and #size-cells, but simply assumes 1 and 1 for both. Signed-off-by: Hans de Goede <[email protected]> Tested-by: Stephen Warren <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-11-23linux/kernel.h: sync min, max, min3, max3 macros with LinuxMasahiro Yamada
U-Boot has never cared about the type when we get max/min of two values, but Linux Kernel does. This commit gets min, max, min3, max3 macros synced with the kernel introducing type checks. Many of references of those macros must be fixed to suppress warnings. We have two options: - Use min, max, min3, max3 only when the arguments have the same type (or add casts to the arguments) - Use min_t/max_t instead with the appropriate type for the first argument Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Pavel Machek <[email protected]> Acked-by: Lukasz Majewski <[email protected]> Tested-by: Lukasz Majewski <[email protected]> [trini: Fixup arch/blackfin/lib/string.c] Signed-off-by: Tom Rini <[email protected]>
2014-11-21fdt: Try to use fdt_address_cells()/fdt_size_cells()Simon Glass
Use these new functions where possible. They default to a value of 2 so we cannot use them in some places where we need a default value of 1. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2014-11-21fdt: Change fdt_pack_reg() to static and fix typesSimon Glass
This function is only called within this file so make it static. Also fix its argument types to be consistent with its caller. Signed-off-by: Simon Glass <[email protected]> Acked-by: Anatolij Gustschin <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2014-11-21fdt: Export the fdt_find_or_add_subnode() functionSimon Glass
This function is useful for ensuring that a node exists. Export it so it can be used more widely. Signed-off-by: Simon Glass <[email protected]> Acked-by: Anatolij Gustschin <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2014-09-25fdt_support: Make of_bus_default_count_cells non staticArnab Basu
of_bus_default_count_cells can be used to get the #address-cells and #size-cells defined by the current node's parent node. This is required when using of_read_number to read from FDT nodes that can be 32 or 64 bytes depending on values defined by the parent. Signed-off-by: Arnab Basu <[email protected]> CC: Scott Wood <[email protected]>
2014-09-25fdt_support: Move of_read_number to fdt_support.hArnab Basu
This is being done so that it can be used outside 'fdt_support.c'. Making life more convenient when reading device node properties that can be 32 or 64 bits long. Signed-off-by: Arnab Basu <[email protected]> Cc: Scott Wood <[email protected]>
2014-08-09fdt: Rename fdt_resize() to fdt_shrink_to_minimum()Simon Glass
Since libfdt now has an fdt_resize() function, we need to rename the U-Boot one. Signed-off-by: Simon Glass <[email protected]>
2014-06-19fdt_support: correct the return condition of fdt_initrd()Masahiro Yamada
Before this commit, fdt_initrd() just returned if initrd start address is zero. But it is possible if the RAM is located at address 0. This commit makes the return condition more reasonable: Just return if the size of initrd is zero. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: fix an endian bug of fdt_initrd()Masahiro Yamada
Data written to DTB must be converted to big endian order. It is usually done by using cpu_to_fdt32(), cpu_to_fdt64(), etc. fdt_initrd() invoked write_cell(), which always swaps byte order. It means the function only worked on little endian architectures. (On big endian architectures, the byte order should be kept as it is) This commit uses cpu_to_fdt32() and cpu_to_fdt64() and deletes write_cell(). Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: fix an endian bug of fdt_fixup_memory_banksMasahiro Yamada
Data written to DTB must be converted to big endian order. It is usually done by using cpu_to_fdt32(), cpu_to_fdt64(), etc. fdt_fixup_memory_banks() invoked write_cell(), which always swaps byte order. It means the function only worked on little endian architectures. This commit adds and uses a new helper function, fdt_pack_reg(), which works on both big endian and little endian architrectures. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: add 'const' qualifier for unchanged argumentMasahiro Yamada
In the next commit, I will add a new function, fdt_pack_reg() which uses get_cells_len(). Beforehand, this commit adds 'const' qualifier to get_cells_len(). Otherwise, a warning message will appear: warning: passing argument 1 of 'get_cells_len' discards 'const' qualifier from pointer target type [enabled by default] Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: refactor fdt_fixup_stdout() functionMasahiro Yamada
- Do not use a deep indentation. We have only 80-character on each line and 1 indentation consumes 8 spaces. Before the code moves far to the right, you should consider to fix your code. See Linux Documentation/CodingStyle. - Add CONFIG_OF_STDOUT_VIA_ALIAS and OF_STDOUT_PATH macros only to their definition. Do not add them to both callee and caller. This is a tip to avoid using #ifdef everywhere. - OF_STDOUT_PATH and CONFIG_OF_STDOUT_VIA_ALIAS are exclusive. If both are defined, the former takes precedence. Do not try to fix-up "linux,stdout-path" property twice. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: delete force argument of fdt_chosen()Masahiro Yamada
After all, we have realized "force" argument is completely useless. fdt_chosen() was always called with force = 1. We should always want to do the same thing (set appropriate value to the property) even if the property already exists. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: delete force argument of fdt_initrd()Masahiro Yamada
After all, we have realized "force" argument is completely useless. fdt_initrd() was always called with force = 1. We should always want to do the same thing (set appropriate value to the property) even if the property already exists. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: refactor with fdt_find_or_add_subnode helper funcMasahiro Yamada
Some functions in fdt_support.c do the same routine: search a node with a given name ("chosen", "memory", etc.) or newly create it if it does not exist. So this commit makes that routine to a helper function. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19fdt_support: delete unnecessary DECLARE_GLOBAL_DATA_PTRMasahiro Yamada
gd->bd is not used in fdt_support.c. Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Simon Glass <[email protected]>
2014-06-19ARM: fdt support: Add usbethaddr as an acceptable MACDan Murphy
A board that has a USB ethernet device only may set the usbetheraddr and not the ethaddr. ethaddr will be the default MAC address that is chosen and if that is not populated then the usbethaddr is looked at. If neither are set then then device tree blob is not modified. Signed-off-by: Dan Murphy <[email protected]>
2014-04-22fdt_support: Add helper function to read "ranges" propertyAlexander Graf
This patch adds a helper function that can be used to interpret most "ranges" properties in the device tree. It reads the n'th range out of a "ranges" array and returns the node's virtual address of the range, the physical address that range starts at and the size of the range. Signed-off-by: Alexander Graf <[email protected]> Acked-by: Scott Wood <[email protected]> Reviewed-by: York Sun <[email protected]>
2014-04-22fdt_support: split fdt_getprop_u32_defaultAlexander Graf
We already have a nice helper to give us a property cell value with default fall back from a path. Split that into two helpers - one for the old path based lookup and one to give us a value based on a node offset. Signed-off-by: Alexander Graf <[email protected]> Acked-by: Scott Wood <[email protected]> Reviewed-by: York Sun <[email protected]>
2014-01-20fdt_support.c: Correct linux,initrd-start/end settingTom Rini
The change to add 64bit initrd support broke 32bit initrd support as it always set 64bits worth of data into the properties, even on 32bit systems. The fix is to use addr_cell_len (which already says how much data is in 'tmp') to set the property, rather than always setting 8. Thanks to Stephen Warren for pointing out the fix here. Reported-by: Otavio Salvador <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2014-01-10Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini
Bringing in the MMC tree means that CONFIG_BOUNCE_BUFFER needed to be added to include/configs/exynos5-dt.h now. Conflicts: include/configs/exynos5250-dt.h Signed-off-by: Tom Rini <[email protected]>
2014-01-09fdt_support: 64bit initrd start address supportDavid Feng
Signed-off-by: David Feng <[email protected]>