aboutsummaryrefslogtreecommitdiff
path: root/board/ge/bx50v3/bx50v3.c
AgeCommit message (Collapse)AuthorFilesLines
2021-05-02board: ge: bx50v3: fix crystal bitSebastian Reichel1-0/+26
The DA9063 enables the CRYSTAL bit by default, but there is no crystal populated on the BA16 system on module. Without explicitly clearing the CRYSTAL bit the system runs unstable and sometimes reboots unexpectedly. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2021-02-02common: Drop asm/global_data.h from common headerSimon Glass1-0/+1
Move this out of the common header and include it only where needed. In a number of cases this requires adding "struct udevice;" to avoid adding another large header or in other cases replacing / adding missing header files that had been pulled in, very indirectly. Finally, we have a few cases where we did not need to include <asm/global_data.h> at all, so remove that include. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com>
2020-12-26board: ge: bx50v3: cleanup phy configSebastian Reichel1-23/+12
The current PHY rework does the following things: 1. Configure 125MHz clock 2. Setup the TX clock delay (RX is enabled by default), 3. Setup reserved bits to avoid voltage peak The clock delays are nowadays already configured by the PHY driver (in ar803x_delay_config). The code for that can simply be dropped. The clock speed can also be configured by the PHY driver by adding the device tree property "qca,clk-out-frequency". What is left is setting up the undocumented reserved bits to avoid the voltage peak problem. I slightly improved its documentation while updating the board's PHY rework code. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-12-26board: ge: bx50v3: remove confidx magic numbersSebastian Reichel1-6/+10
Instead of hardcoding index magic numbers in the board code, also rely on board_fit_config_name_match choosing the right config for the fitImage containing the kernel. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-12-06board: ge: bx50v3: check b850v3 power management watchdogIan Ray1-0/+17
Set `bootcause' from b850v3 power management watchdog status. Boot cause "REVERT" is no longer used, remove it. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-12-06board: ge: bx50v3: reduce magic numbersSebastian Reichel1-21/+7
Use VPD product ID instead of confidx, so that we can easily reuse the product ID defines and avoid some magic numbers. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-12-06board: ge: bx50v3: drop unused pinmux definesSebastian Reichel1-15/+0
Remove pinmux defines, that are no longer used after converting the code to devicetree. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-11-01board: ge: common: vpd: separate I2C specific codeSebastian Reichel1-1/+1
This separates the I2C specific code from the generic GE vital product data code, so that the generic parts can be used on hardware with VPD stored in SPI flash memory. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-11-01board: ge: common: rename ge_common.c to ge_rtc.cSebastian Reichel1-1/+1
The file only contains RTC related code, so let's name it accordingly. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-07-17treewide: convert bd_t to struct bd_info by coccinelleMasahiro Yamada1-1/+1
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-05-18common: Drop linux/delay.h from common headerSimon Glass1-0/+1
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <sjg@chromium.org>
2020-05-18common: Drop image.h from common headerSimon Glass1-0/+1
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <sjg@chromium.org>
2020-02-09board: ge: bx50v3: use DM for uartRobert Beckett1-24/+0
Remove legacy uart pad and iomux code Enable DM serial and mxc uart Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-02-09board: ge: bx50v3: Enable DM PWM for backlightRobert Beckett1-65/+16
Add backlight and panel devicetree definitions Use UCLASS_PANEL to enable backlight via display enable handler Remove old explicit gpio code for handling backlight Use cls command to initiate display in HW agnostic manner Enable DM regulator and pwm Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-02-09board: ge: bx50v3, imx53ppd: use DM I2CRobert Beckett1-92/+22
Remove old (pre-DM) i2c setup code. Enable DM i2c. Convert common code to use DM rtc. Convert common code to read VPD from eeprom partition. Convert the generic i2c PMIC init code to use the new da9063 driver. mx53ppd only: Correct RTC compatible in device tree. Enable MXC DM i2c driver. Define CONFIG_SYS_MALLOC_F_LEN so that DM is available in pre-reloc. Make GPIO banks available during preloc, since initialisation is done in board_early_init_f(). Add gpio_request() calls to satisfy the DM_GPIO compatibility API. Remove unused power configuration. Signed-off-by: Robert Beckett <bob.beckett@collabora.com> Signed-off-by: Ian Ray <ian.ray@ge.com>
2020-01-07board: ge: pass rtc_status via device treeIan Ray1-1/+6
Pass rtc_status via the device tree, instead of on kernel command line. Additionally, the 2038 mitigation is reported, if applied successfully. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-01-07board: ge: bx50v3: Enable DM for PCI and ethernetDenis Zalevskiy1-62/+13
DM for PCI pulls DM for ethernet that also needs other changes described below to build u-boot and keep existing functionality - ability to update MAC addresses of FEC ethernet adapter and I210 adapter connected to the Marvell switch. - fec_mxc driver with DM needs PHYLIB; - configuration items are moved from ge_bx50v3.h to ge_bx50v3_defconfig; - FEC is marked as eth0 because it is always present, so indices changed: I210 are still probed in the same order; - board_eth_init() was used by legacy ethernet, setup for enet iomux and pcie is moved to the board_late_init(); - pci_init() is called from the board_late_init() to initiate PCI bus probing, so I210 devices are propagated to the device tree; Signed-off-by: Denis Zalevskiy <denis.zalevskiy@ge.com> [Describe PHY reset in device tree] Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-01-07board: ge: bx50v3: Fix message output to video consoleIan Ray1-7/+14
Use vidconsole for output to the LCD, now that DM_VIDEO is used. Write white text on a black background, like before migrating to DM_VIDEO. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-01-07board: ge: bx50v3: Fix run-time warningIan Ray1-10/+13
Fix GPIO reservation warning on code paths that do not need LVDS power. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2020-01-07board: ge: bx50v3: sync devicetrees from LinuxRobert Beckett1-1/+33
Copy device trees from linux, keeping them as separate files for each board to ease future sync. Update board code to use generic bx50v3 dt initially, then select the specific dt based on board detection. Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
2019-12-02common: Move some board functions out of common.hSimon Glass1-0/+1
A number of board function belong in init.h with the others. Move them. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
2019-08-11env: Move env_set() to env.hSimon Glass1-0/+1
Move env_set() over to the new header file. Acked-by: Joe Hershberger <joe.hershberger@ni.com> Signed-off-by: Simon Glass <sjg@chromium.org>
2019-06-23Convert to use fsl_esdhc_imx for i.MX platformsYangbo Lu1-1/+1
Converted to use fsl_esdhc_imx for i.MX platforms. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> Tested-by: Steffen Dirkwinkel <s.dirkwinkel@beckhoff.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Martyn Welch <martyn.welch@collabora.com> Acked-by: Jason Liu <Jason.hui.liu@nxp.com>
2019-04-13board: ge: store version information in fdtIan Ray1-0/+11
Add board-specific FDT function to store U-Boot version in device tree. Signed-off-by: Ian Ray <ian.ray@ge.com>
2019-04-13board: ge: bx50v3: Enable CONFIG_DM_SPI, CONFIG_DM_SPI_FLASHIan Ray1-25/+0
Use SPI flash device model, and remove SPI pin configuration code since the pinctrl driver is used. Signed-off-by: Ian Ray <ian.ray@ge.com>
2019-04-13board: ge: bx50v3: Enable CONFIG_DM_GPIOIan Ray1-1/+10
Enable CONFIG_DM_GPIO as a pre-requisite for enabling CONFIG_DM_SPI. Add explicit gpio_requests. Signed-off-by: Ian Ray <ian.ray@ge.com>
2019-04-13board: ge: bx50v3: Enable CONFIG_DM_MMCIan Ray1-113/+0
Use MMC device model, and remove USDHC pin configuration code since the pinctrl driver is used. Signed-off-by: Ian Ray <ian.ray@ge.com>
2019-01-01board: ge: Move VPD reading to the vpd_readerDenis Zalevskiy1-37/+11
Merge functionality duplicated in bx50v3 and mx53ppd: the logic is the same except that process_vpd is called at different phases. Also read_vpd could end up in error, so there is no VPD data in this case - it shouldn't be processed. Signed-off-by: Denis Zalevskiy <denis.zalevskiy@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-12-17board: ge: Move VPD EEPROM configuration to the defconfigDenis Zalevskiy1-13/+4
Use standard configuration logic to define EEPROM constants. Names are based on VPD_EEPROM_ prefix because EEPROM_ is already used by i2c_eeprom driver. Signed-off-by: Denis Zalevskiy <denis.zalevskiy@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-12-17board: ge: Remove EEPROM bus param from read_vpd()Denis Zalevskiy1-3/+3
The bus is statically defined, so remove redundant parameters from read_vpd() for PPD and Bx50v3. Signed-off-by: Denis Zalevskiy <denis.zalevskiy@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-10-22board: ge: bx50v3: fix initialization of i2c bus0Dan Cimpoca1-3/+3
I2C bus 0 was not initialized correctly. There is an offset between i2c index and the structure number of pad info. So i2c bus 0 can be in an inconsistent state. This problem become visible on B{4,6}50v3 with the CPUC HW watchdog enabled. Sometimes when the CPUC HW watchdog interrupted the boot process, U-Boot was not able to read VPD from I2C/EEPROM and the system failed to boot up again, because a device connected to that bus was stuck in data transfer state (from previous boot attempt) and there was no method to recover (struct mxc_i2c_bus::idle_bus_fn was not set) courtesy of incorrect initialization. Signed-off-by: Dan Cimpoca <dan.I.cimpoca@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-10-22board: ge: bx50v3: b{4,6}50v3 modelineIan Ray1-0/+2
The b{4,6}50v3 kernel framebuffer console requires a modeline otherwise the LVDS panel shows garbage. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-10-22board: ge: bx50v3: correct LDB clockIan Ray1-13/+17
Use Video PLL to provide 65MHz for all displays. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
2018-05-17board: ge: bx50v3: configure video arguments using VPDIan Ray1-0/+3
Configure video arguments at run-time instead of at compile-time. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-17board: ge: bx50v3: use VPD instead of compile-time checksIan Ray1-7/+8
B{46}50v3s have an internal LCD that needs to be configured, in comparison with B850v3 which has only external displays. Use VPD instead of `CONFIG_TARGET_GE_B{4,6,8}50V3' compile-time checks to correct initialize video based on the monitor type. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-17board: ge: bx50v3: detect the monitor type by reading VPD earlierNandor Han1-7/+29
Move the VPD reading earlier in order to establish the monitor type as soon as possible. The configuration of the specific environment variables needs to be done later after the environment is configured. Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-17board: ge: bx50v3: fix display support for b{46}50v3Ian Ray1-0/+2
Enable Video PLL to fix non-working display support for Bx50v3 internal displays. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-17board: ge: bx50v3: unify two switch statementsNandor Han1-10/+3
Simplify process_vpd() by unifying the switch statements handling product specific configurations. Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-17board: ge: bx50v3: rename detect_baseboard functionIan Ray1-2/+2
The detect_baseboard() function actually determines whether there is an internal LCD panel or not. Rename for clarity. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini1-2/+1
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-15board: ge: bx50v3: enable backlight on demandIan Ray1-17/+28
Enable display backlight only if a message needs to be displayed. The kernel re-initializes the backlight, which results in some unwanted artifacts. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board,ge,bx50v3 - rtc time validationNandor Han1-0/+3
Validate the time at startup: - in case rtc error add to kernel command line RTC_ERROR - clamp date to 1-Jan-2036 Signed-off-by: Nandor Han <nandor.han@ge.com> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board: ge: bx50v3: Support FIT and select configuration based on VPDIan Ray1-0/+12
Modify configuration to support FIT. Set variable `confidx' from VPD, in order to load the correct device tree. Modify/simplify U-Boot environment to support loading FIT image. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board: ge: bx50v3: Enable hardware watchdogMartyn Welch1-0/+1
Enable the hardware watchdog on bx50v3 to cause it to reset in the event the board hangs. Configure GPIO_9 pin as WDOG1_B so that a watchdog timeout results in a full system reset. The watchdog is used and reconfigured by systemd approximately 1.7 seconds into boot. Adding a few seconds for U-Boot and a few more seconds as a safety margin. Note that the PCIe controller is _not_ put back into a safe state prior to board reset. This is a problem if board reset is implemented as CPU reset. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board: ge: bx50v3: program MAC address to I210Hannu Lounento1-1/+36
There are two I210s on the b850v3 and one on the b450v3 and b650v3. One is connected to Marvell 88e6240 which is already programmed. Follow the flow documented in doc/README.enetaddr: set the enet[0-9]*addr environment variable and let the driver program the hardware. The mapping from the driver's index to the environment variable's name is documented in README: Note for Redundant Ethernet Interfaces. It is assumed that eth_devices for the controllers on the board are always indexed in the same order. The environment variables are removed after programming the hardware because the variables seem to influence MAC addresses also after U-Boot. Specifically the MAC address of FEC (MC interface) would be incorrectly set: 'ethaddr', which maps to the first I210 chip and is set to I210's default address read from the driver by eth_write_hwaddr in eth_legacy.c because the variable is undefined (not set even by bx50v3.c), would result in the eth0 interface's MAC address to be set to I210's default address. Signed-off-by: Hannu Lounento <hannu.lounento@ge.com> Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board: ge: bx50v3: move FEC MAC address programming to driverMartyn Welch1-40/+39
Instead of programming the hardware directly in the board implementation, follow the flow documented in doc/README.enetaddr: set the enet[0-9]*addr environment variable and let the driver program the hardware. This avoids duplicating the implementation as it already exists in the driver (drivers/net/fec_mxc.c: fec_set_hwaddr). The mapping from the driver's index to the environment variable's name is documented in README: Note for Redundant Ethernet Interfaces. It is assumed that eth_devices for the controllers on the board are always indexed in the same order, i.e. FEC always has the index 2. The FEC driver does *not* set the flag Set MAC Address on Transmit (bit set_eth0_mac_address used to do but this is unnecessary as the Linux networking stack fills in the MAC address. Signed-off-by: Hannu Lounento <hannu.lounento@ge.com> Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2018-02-04board: ge: Enable access to i2c bus 1 and 2Martyn Welch1-1/+1
The change in i2c configuration added to support access to the VPD has inadvertantly caused access to i2c buses 1 & 2 to be lost. This has resulted in the configuration for the PMIC to be attempted on the wrong bus and thus isn't taking effect. Add the required configuration to return access to buses 1 & 2. In order to ensure that any users of the bus numbering prior to addition in VPD patches work, add buses before configuration related to mux on bus 0 and tweak VPD bus usage to fit new numbering scheme. Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
2017-11-20board: ge: make VPD code commonMartyn Welch1-1/+1
The VPD data is used on a number of GE products. Move the parsing code to a common location so that we can share this code. Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Acked-by: Stefano Babic <sbabic@denx.de>
2017-10-12imx: Include <input.h> header fileDiego Dorta1-0/+1
When building with W=1 errors like the one below is seen: board/freescale/mx6sabresd/mx6sabresd.c:546:5: warning: no previous prototype for ‘overwrite_console’ [-Wmissing-prototypes] int overwrite_console(void) Fix the build warnings by including <input.h>. Signed-off-by: Diego Dorta <diego.dorta@nxp.com> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
2017-09-20board: ge: bx50v3: set eth0 MAC addressIan Ray1-0/+109
Define i2c mux configuration. Add new vpd_reader which is used to read vital product data. Read VPD from EEPROM and set eth0 MAC address. Signed-off-by: Ian Ray <ian.ray@ge.com> Signed-off-by: Jose Alarcon <jose.alarcon@ge.com>