summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-08-27pinctrl: pinctrl_stm32: cosmetic: Reorder include filesPatrice Chotard
Reorder include files Signed-off-by: Patrice Chotard <patrice.chotard@st.com> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
2019-08-27stm32mp1: cosmetic: remove commentPatrick Delaunay
Remove unnecessary comment. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
2019-08-27rtc: stm32: manage 2 digit limitation on yearPatrick Delaunay
STM32 RTC manages only 2 digits for YEAR (Year tens and units in BCD format in RTC_DR register). With this patch, RTC driver assumes that tm->tm_years is between 2000 and 2099; tm->tm_year - 2000 have only 2 digit (0 > and <= 99). Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
2019-08-27ARM: dts: stih410-b2260: Sync DT with kernel v5.2Patrice Chotard
Synchronize U-boot DT with kernel v5.2 for stih410-b2260. Update stih410-b2260-u-boot.dtsi accordingly. Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
2019-08-27mmc: sti_sdhci: Fix sdhci_setup_cfg() call.Patrice Chotard
host->mmc, host->mmc->dev and host->mmc->priv must be set before calling sdhci_setup_cfg() to avoid hang during mmc initialization. Thanks to commit 3d296365e4e8 ("mmc: sdhci: Add support for sdhci-caps-mask") which put this issue into evidence. Signed-off-by: Patrice Chotard <patrice.chotard@st.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
2019-08-27mmc: stm32_sdmmc2: Increase SDMMC_BUSYD0END_TIMEOUT_USPatrice Chotard
Increase SDMMC_BUSYD0END_TIMEOUT_US from 1s to 2s to avoid timeout error during blocks erase on some sdcard Issue seen on Kingston 16GB : Device: STM32 SDMMC2 Manufacturer ID: 27 OEM: 5048 Name: SD16G Bus Speed: 50000000 Mode: SD High Speed (50MHz) card capabilities: widths [4, 1] modes [SD Legacy, SD High Speed (50MHz)] host capabilities: widths [4, 1] modes [MMC legacy, SD Legacy, MMC High Speed (26MHz), SD High Speed (50MHz), MMC High Speed (52MHz)] Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 14.5 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes Issue reproduced with following command: STM32MP> mmc erase 0 100000 MMC erase: dev # 0, block # 0, count 1048576 ... mmc erase failed 16384 blocks erased: ERROR By setting SDMMC_BUSYD0END_TIMEOUT_US at 2 seconds and by adding time measurement in stm32_sdmmc2_end_cmd() as shown below: +start = get_timer(0); /* Polling status register */ ret = readl_poll_timeout(priv->base + SDMMC_STA, status, status & mask, SDMMC_BUSYD0END_TIMEOUT_US); +printf("time = %ld ms\n", get_timer(start)); We get the following trace: STM32MP> mmc erase 0 100000 MMC erase: dev # 0, block # 0, count 1048576 ... time = 17 ms time = 1 ms time = 1025 ms time = 54 ms time = 56 ms time = 1021 ms time = 57 ms time = 56 ms time = 1020 ms time = 53 ms time = 57 ms time = 1021 ms time = 53 ms time = 57 ms time = 1313 ms time = 54 ms time = 56 ms time = 1026 ms time = 54 ms time = 56 ms time = 1036 ms time = 54 ms time = 56 ms time = 1028 ms time = 53 ms time = 56 ms time = 1027 ms time = 54 ms time = 56 ms time = 1024 ms time = 54 ms time = 56 ms time = 1020 ms time = 54 ms time = 57 ms time = 1023 ms time = 54 ms time = 56 ms time = 1033 ms time = 53 ms time = 57 ms .... time = 53 ms time = 57 ms time = 1021 ms time = 56 ms time = 56 ms time = 1026 ms time = 54 ms time = 56 ms 1048576 blocks erased: OK We see that 1 second timeout is not enough, we also see one measurement up to 1313 ms. Set the timeout to 2 second to keep a security margin. Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
2019-08-27misc: i2c_eeprom: verify that the chip is functional at probe()Baruch Siach
Read a single byte from EEPROM to verify that it is actually there. This is equivalent to Linux kernel commit 00f0ea70d2b8 ("eeprom: at24: check if the chip is functional in probe()"). Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Baruch Siach <baruch@tkos.co.il> hs: fixed style check prefer kernel type 'u8' over 'uint8_t'
2019-08-27i2c: mxc_i2c: Remove i2c_idle_bus from probeYe Li
i2c_idle_bus is already used in i2c_init_transfer. So before each transfer if the bus is not ready, the i2c_idle_bus will be used to force idle. It is unnecessary to call it again in probe. We found a issue when enabling i2c mux with the mxc_i2c. The mxc_i2c is probed after mux probing. However, at this moment the mux is still in idle state not select any port. So if we call i2c_idle_bus in probe, it will fail and cause mxc_i2c probe failed. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-08-27i2c-mux-gpio: Fix GPIO request flag issueYe Li
When requesting GPIO, the GPIOD_IS_OUT is missed in flag, so the GPIO is set the input mode not output and cause mux not work. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-08-26Prepare v2019.10-rc3Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2019-08-26Merge branch '2019-08-26-master-imports'Tom Rini
- Assorted minor bugfixes
2019-08-26powerpc: Enable device tree support for MPC8548CDSHou Zhiqiang
Add device tree for MPC8548CDS board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: mpc8548cds: extend the reserved length for monitorHou Zhiqiang
Extend the reserved length for monitor to fix the following build error: BINMAN u-boot-with-dtb.bin Wrote map file './image.map' to show errors binman: Section '/binman': contents size 0x80000 (524288) exceeds section size 0x40000 (262144) Makefile:1373: recipe for target 'u-boot-with-dtb.bin' failed make: *** [u-boot-with-dtb.bin] Error 1 Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: dts: add default definition of CONFIG_RESET_VECTOR_ADDRESSHou Zhiqiang
Add CONFIG_RESET_VECTOR_ADDRESS definition with the default value in u-boot.dtsi to fix the build error below. In the configuration header file of some MPC85xx boards, there is not the definition of CONFIG_RESET_VECTOR_ADDRESS, while CONFIG_SYS_MPC85XX_NO_RESETVEC is also not defined. In this case, it will lack of definition of CONFIG_RESET_VECTOR_ADDRESS in u-boot.dtsi, and the address 0xfffffffc will be used as the boot page by default. Error log: DTC arch/powerpc/dts/mpc8548cds.dtb DTC arch/powerpc/dts/mpc8548cds_36b.dtb Error: arch/powerpc/dts/u-boot.dtsi:28.15-16 syntax error FATAL ERROR: Unable to parse input tree Error: arch/powerpc/dts/u-boot.dtsi:28.15-16 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:308: recipe for target 'arch/powerpc/dts/mpc8548cds.dtb' failed make[2]: *** [arch/powerpc/dts/mpc8548cds.dtb] Error 1 make[2]: *** Waiting for unfinished jobs.... scripts/Makefile.lib:308: recipe for target 'arch/powerpc/dts/mpc8548cds_36b.dtb' failed make[2]: *** [arch/powerpc/dts/mpc8548cds_36b.dtb] Error 1 dts/Makefile:38: recipe for target 'arch-dtbs' failed make[1]: *** [arch-dtbs] Error 2 Makefile:1038: recipe for target 'dts/dt.dtb' failed make: *** [dts/dt.dtb] Error 2 Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P5040DSHou Zhiqiang
Add device tree for P5040DS board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P4080DSHou Zhiqiang
Add device tree for P4080DS board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P3041DSHou Zhiqiang
Add device tree for P3041DS board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P2041RDBHou Zhiqiang
Add device tree for P1041RDB board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P2020RDBHou Zhiqiang
Add device tree for P1020RDB boards and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for P1020RDBHou Zhiqiang
Add device tree for P1020RDB boards and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for T1042D4RDBHou Zhiqiang
Add device tree for T1042D4RDB board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for T1024RDBHou Zhiqiang
Add device tree for T1024RDB board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for T4240RDBHou Zhiqiang
Add device tree for T4240RDB board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26powerpc: Enable device tree support for T2080RDBHou Zhiqiang
Add device tree for T2080RDB board and enable CONFIG_OF_CONTROL so that device tree can be compiled. Update board README for device tree usage. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26tools: remove easylogo and include/video_logo.hHeinrich Schuchardt
include/video_logo.h once was created via the tool easylogo and than used in cpu/mpc8xx/video.c to display Tux. video_logo.h has been replaced by include/linux_logo.h and is not needed anymore. Delete the include and the tool, Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2019-08-26ARM: am3517-evm: Disable CONFIG_USB_EHCI_OMAP in SPLAdam Ford
Found accidentally in omap3_logic, CONFIG_USB_EHCI_OMAP adds some code size to SPL, so this patch disables it on the am3517-evm to reduce the code a bit since it's tight for space. Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26ARM: da850evm_direct_nor: Enable DM_GPIOAdam Ford
The SPI and NAND variants enable DM_GPIO, so this patch enables DM_GPIO for the NOR / XIP version of the da850-evm. Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26ARM: da850evm_nand: Enable EthernetAdam Ford
The NAND configuration has had the ethernet missing, so this patch enables the on-board ethernet interface. Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26Kconfig: Varios: Fix more SPL, TPL dependenciesAdam Ford
Several options are presenting themselves on a various boards where the options are clearly not used. (ie, SPL/TPL options when SPL or TPL are not defined) This patch is not attempting to be a complete list of items, but more like low hanging fruit. In some instances, I wasn't sure of DM was required, so I simply made them SPL or TPL. This patch attempts to reduce some of the menuconfig noise by defining dependencies so they don't appear when not used. Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26MAINTAINERS,board/siemens: update maintainerSamuel Egli
Signed-off-by: Samuel Egli <samuel.egli@siemens.com> Acked-by: Roger Meier <r.meier@siemens.com> Cc: Heiko Schocher <hs@denx.de>
2019-08-26powerpc: mpc85xx: Add device tree support option for PBL boot imageHou Zhiqiang
The current Makefile always use u-boot.bin to generate PBL boot image (u-boot.pbl), this patch changes it to use u-boot-with-dtb.bin to support device tree when CONFIG_OF_SEPARATE is enabled. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26mailmap: Update mail addressRicardo Ribalda Delgado
Update my email address from gmail to my domain. Signed-off-by: Ricardo Ribalda Delgado <ricardo@ribalda.com>
2019-08-26board: ti: am43xx_evm_usbboot: Enable DM for USB, fix SPL build errorsSuniel Mahesh
To address the following warning message: ===================== WARNING ====================== This board does not use CONFIG_DM_USB. Please update the board to use CONFIG_DM_USB before the v2019.07 release. Failure to update by the deadline may result in board removal. See doc/driver-model/MIGRATION.txt for more info. ==================================================== CONFIG_DM_USB is enabled, this resulted in SPL build errors: drivers/built-in.o: In function 'xhci_dwc3_probe': u-boot/drivers/usb/host/xhci-dwc3.c:155: undefined reference to 'usb_get_dr_mode' scripts/Makefile.spl:404: recipe for target 'spl/u-boot-spl' failed make[1]: *** [spl/u-boot-spl] Error 1 Makefile:1721: recipe for target 'spl/u-boot-spl' failed make: *** [spl/u-boot-spl] Error 2 Enabling usb common library and usb ethernet drivers in SPL does the job. Target was compile tested, build was clean. Signed-off-by: Suniel Mahesh <sunil.m@techveda.org>
2019-08-26nvme: Fix PRP Offset InvalidAaron Williams
When large writes take place I saw a Samsung EVO 970+ return a status value of 0x13, PRP Offset Invalid. I tracked this down to the improper handling of PRP entries. The blocks the PRP entries are placed in cannot cross a page boundary and thus should be allocated on page boundaries. This is how the Linux kernel driver works. With this patch, the PRP pool is allocated on a page boundary and other than the very first allocation, the pool size is a multiple of the page size. Each page can hold (4096 / 8) - 1 entries since the last entry must point to the next page in the pool. Signed-off-by: Aaron Williams <awilliams@marvell.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-08-26cmd: pci: Adjust display of digits for 64bit address and sizeKunihiko Hayashi
The command "pci bar" and "pci region" display the address and size in 16 characters including "0x", so the command can only display 14 hexadecimal digits if the number of digits in the address and size is less than 14. ID Base Size Width Type ---------------------------------------------------------- 0 0x00000020000000 0x00000000100000 64 MEM Prefetchable 1 0xffff000080000000 0x00000000100000 64 MEM Prefetchable The 64-bit address and size should be displayed in 18(= 16+2) digits, so this patch adjusts them. Cc: Yehuda Yitschak <yehuday@marvell.com> Cc: Simon Glass <sjg@chromium.org> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-08-26ARM: omap3_logic: Fix SPL boot failure when EHCI enabledAdam Ford
Some of the USB code is still being built into SPL even when the SPL menu options have it explicitly disabled for SPL. Unit there is a better solution, This patch undefines CONFIG_USB_EHCI_OMAP when building SPL which reduces the code and lets the board boot again. Fixes: 25e4ff45b17d ("ARM: omap3_logic: Enable OMAP EHCI support for SOM-LV Boards") Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26cmd: gpio: remove redundant assignmentHeinrich Schuchardt
The assigned value NULL is overwritten before being used. Remove the assignment. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-08-26vexpress/aemv8a: drop CONFIG_ARMV8_SWITCH_TO_EL1Sudeep Holla
To support KVM, we need to drop at EL2 and not EL1 before we boot Linux kernel. This causes issues on platform with VHE and secondaries booting at EL2 via TF-A PSCI CPU_ON call. Cc: Ryan Harkin <ryan.harkin@linaro.org> Cc: Liviu Dudau <liviu.dudau@foss.arm.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: David Feng <fenghua@phytium.com.cn> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-08-26ARM: vexpress_*_defconfig: replace earlyprintk with earlyconSudeep Holla
earlyprintk no longer works on arm64 platforms. Replace it with earlycon which works fine. Cc: Ryan Harkin <ryan.harkin@linaro.org> Cc: Liviu Dudau <liviu.dudau@foss.arm.com> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
2019-08-26ddr, fsl: add DM_I2C supportHeiko Schocher
add DM_I2C support for this driver. Signed-off-by: Heiko Schocher <hs@denx.de> Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
2019-08-26fat: FAT filesystem premature release of info struct.Martin Vystrčil
File was found on specified location. Info about file was read, but then immediately destroyed using 'free' call. As a result file size was set to 0, hence fat process didn't read any data. Premature 'free' call removed. Resources are freed right before function return. File is read correctly. Signed-off-by: Martin Vystrcil <martin.vystrcil@m-linux.cz>
2019-08-26dm: scsi: Scan the actual number of portsPark, Aiden
The scsi_scan_dev() is looping over the number of uc_plat->max_id. The number of actual ports a AHCI controller has can be greater than max_id. Update uc_plat->max_id to make SCSI scan all detected ports. Signed-off-by: Aiden Park <aiden.park@intel.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-08-26ARM: dts: logicpd-som-lv: Fix i2c2 and i2c3 Pin muxAdam Ford
When the pinmux configuration was added, it was accidentally placed into the omap3_pmx_wkup node when it should have been placed into the omap3_pmx_core. This error was accidentally propagated to U-Boot by me when I blindly copied the device tree from Linux. This patch moves the i2c2_pins and i2c3_pins to the correct node which should eliminate i2c bus errors and timeouts due to the fact the bootloader uses the save device tree that no longer properly assigns these pins. Signed-off-by: Adam Ford <aford173@gmail.com>
2019-08-26board_f: reserve noncached space below malloc areaVikas Manocha
Noncached area at present is being initialized to random space after malloc area. It works in most the cases as it goes to stack area & stack is not overwriting it being far from it. Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
2019-08-26arm: ti: Fix regression in distro boot for mmcNuno Gonçalves
When devnum was changed to a local variable in distro_bootcmd we ran into a problem on TI platforms (confirmed on Beaglebone) as we had been using 'setenv devnum' there as well and it needs to match the other usage. Fixes: 13dd6665ed18 ("distro: not taint environment variables if possible") [trini: Review other platforms, re-word commit message] Signed-off-by: Tom Rini <trini@konsulko.com>
2019-08-26Merge https://gitlab.denx.de/u-boot/custodians/u-boot-riscvTom Rini
- Support SPL and OpenSBI (FW_DYNAMIC firmware) boot. - Fix qemu kconfig build warning.
2019-08-26Merge branch '2019-08-24-master-imports'Tom Rini
- Migrate SYS_SPI_U_BOOT_OFFS, SYS_NAND_USE_FLASH_BBT and ARCH_CPU_INIT to Kconfig
2019-08-26riscv: qemu: Fix kconfig build warningBin Meng
When 'make qemu-riscv64_defconfig', there is a build warning: board/emulation/qemu-riscv/Kconfig:24: warning: config symbol defined without type Fix it by specifying the config symbol type to 'hex'. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Rick Chen <rick@andestech.com> Reviewed-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
2019-08-26doc: update QEMU RISC-V documentationLukas Auer
The available defconfigs for RISC-V QEMU have changed. We now have configurations to compile U-Boot to run in supervisor mode and for U-Boot SPL. Update the QEMU RISC-V documentation to reflect these changes. Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
2019-08-26riscv: qemu: add SPL configurationLukas Auer
Add two new configurations (qemu-riscv{32,64}_spl_defconfig) with SPL enabled for RISC-V QEMU. QEMU does not require SPL to run U-Boot. The configurations are meant to help the development of SPL on RISC-V. The configurations enable RAM as the only SPL boot device. Images must be loaded at address 0x80200000. In the default boot flow, U-Boot SPL starts in machine mode, loads the OpenSBI FW_DYNAMIC firmware and U-Boot proper from the supplied FIT image, and starts OpenSBI. U-Boot proper is then started in supervisor mode by OpenSBI. Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>