summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2023-06-29net: phy: micrel: ksz9131 led errata workaroundtoradex_5.15-2.1.x-imxFrancesco Dolcini
Micrel KSZ9131 PHY LED behavior is not correct when configured in Individual Mode, LED1 (Activity LED) is in the ON state when there is no-link. Workaround this by setting bit 9 of register 0x1e after verifying that the LED configuration is Individual Mode. This issue is described in KSZ9131RNX Silicon Errata DS80000693B [*] and according to that it will not be corrected in a future silicon revision. [*] https://ww1.microchip.com/downloads/en/DeviceDoc/KSZ9131RNX-Silicon-Errata-and-Data-Sheet-Clarification-80000863B.pdf Upstream-Status: Backport [0316c7e66bbd16cf2d01a4e2f5afa6afb01278f2] Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Philippe Schenker <philippe.schenker@toradex.com>
2023-06-07usb: dwc3: imx8mp: fix bus_early device tree property nameStefan Eichenberger
When adding the bus_early device tree property, bus_early_clk was incorrectly used as name. This commit changes the property name to bus_early, which is consistent with the other clocks. Upstream-Status: Inappropriate [other] This fix is only needed for the downstream kernel. In the upstream kernel they added a power-domain for all hsio devices (usb, pcie, etc.) and enable the clock there. However, backporting this solution would probably cause more issues for now. Fixes: 4d948676c55f("usb: dwc3: imx8mp: add bus_early_clk") Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-05-24usb: dwc3: imx8mp: add bus_early_clkStefan Eichenberger
Add a bus_early_clk which is the same clock as for the usb controllers child. This is necessary because the mentioned commit in fixes is accessing registers which need the IMX8MP_CLK_HSI_AXI clock to be enabled. Without this fix suspend/resume is not working properly if no USB-devices are connected. rtcwake -s 5 -m mem -d rtc1 It will try to wakeup after 5 seconds but hangs afterward. Upstream-Status: Inappropriate [other] This fix is only needed for the downstream kernel. In the upstream kernel they added a power-domain for all hsio devices (usb, pcie, etc.) and enable the clock there. However, backporting this solution would probably cause more issues for now. Fixes: cbd09f688623 ("usb: dwc3: imx8mp: Add support for setting SOC specific flags") Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-05-05usb: chipidea: host: add suspend/resume support for host controllerXu Yang
The controller's power may be powered off during system suspend. This will add suspend/resume support when the controller suffers power lost. Upstream-Status: Backport [2f64d6a6cdfbd992e8a8c481ebf79bfa9a71325b] Signed-off-by: Xu Yang <xu.yang_2@nxp.com> Link: https://lore.kernel.org/r/20221013151442.3262951-4-xu.yang_2@nxp.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-05-05usb: chipidea: remove broken suspend/resume downstream codeStefan Eichenberger
The suspend/resume code is broken for i.MX 8 CPUs. When waking up from suspend it might happen that devices are not recognized anymore. To reproduce do: root@apalis-imx8-07107223:~# lsusb -t /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M |__ Port 1: Dev 4, If 0, Class=Wireless, Driver=btusb, 480M |__ Port 1: Dev 4, If 1, Class=Wireless, Driver=btusb, 480M |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M root@apalis-imx8-12345678:~# rtcwake -s 1 -m mem -d rtc1 root@apalis-imx8-07107223:~# lsusb -t /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M We remove this broken code to replace it with the upstream code for suspend and resume. Upstream-Status: Inappropriate [other] This is an issue of the downstream driver. We replace the broken suspend/resume with the upstream solution. Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-04-28PCI: imx: Disable vpcie in case that the PCIe PLL does not lockStefan Eichenberger
If the PCIe PLL locking fails we also have to disable vpcie because it was already enabled before. Without this commit we get a warning when the kernel tries to free the vpcie regulator. Upstream-Status: Pending Mainline for i.MX 8X does not support PCIe yet, this patch cannot be upstreamed as of now. Fixes: f6bf1945c5d5 ("PCI: imx: Do not hang if REFCLK is missing") Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-04-28Revert "ata: ahci-imx: Do not disable APB clock"Stefan Eichenberger
This reverts commit 2b311be08a61793e26757d5239ad9b79222962e5. This patch breaks SATA. We will apply another workaround which is known to work. Upstream-Status: Inappropriate [other] The reverted commit was never sent upstream Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-04-27ata: ahci-imx: Do not disable APB clockStefan Eichenberger
There is a clock dependency between the ahci-imx driver and the PCIe driver on i.MX8 which causes the PCIe link to never come up. It happens every 20-100 reboots when the SATA driver probes before PCIe. By never disabling the APB clock in the SATA driver this issue goes away. In BSP5 we compiled the SATA driver as a module and the SATA driver was probing after the PCIe driver, therefore we could not see the issue there. Upstream-Status: Inappropriate [other] This is an ugly workaround that should not land upstream. We try to get help from NXP regarding this issue to find a proper solution. Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-03-29PCI: imx: Do not hang if REFCLK is missingPhilippe Schenker
Fails the probe with ENODEV when the REFCLK is missing and the PCIe PLL cannot be locked. Without this change the driver just hang during probe, completing freezing the system. Upstream-Status: Pending This is required to solve a specific issue we have on Colibri-iMX8X, in which we have the PCIe node enabled for non Wi-Fi variant and the PCIe REFCLK generator is not assembled. Upstream driver does not support i.MX8QXP at the moment, therefore there is nothing we can upstream. Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: Use register defines consistently"Max Krummenacher
This reverts commit 1d3d34c377dc78e18c483e7c748964a8750c6ec4. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [not upstream] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: Drop wrong shifting"Max Krummenacher
This reverts commit 6733dd9e5c95fef0a74cd35154fa385cf32745d2. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: Use FIELD_GET/FIELD_PREP"Max Krummenacher
This reverts commit f57690a9374745357c290b56e6007a7820f11461. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: consolidate rate calculation"Max Krummenacher
This reverts commit 164ceca07ae13052a9db49125d4b42f0c1413671. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: name variables after usage"Max Krummenacher
This reverts commit e435f17a00caf52cc3f0154367308888c4e7d676. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: explicitly return lowest rate"Max Krummenacher
This reverts commit 963141684eb2bd5166096f03865696e341598bb1. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: Add pr_fmt"Max Krummenacher
This reverts commit 90722e5666993df76bb203e0ad60b42cd4111781. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "clk: imx: pll14xx: Support dynamic rates"Max Krummenacher
This reverts commit e3b41fa9c03182c51c93f54dfd2f31c87aec8a49. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-29Revert "drm/imx: imx8mp-ldb: fix check on LDB valid clock"Max Krummenacher
This reverts commit fd34ae5146f2df6d4f9f2a0046b697ff6b5a267e. This series broke our 10" capacitive LVDS panel. Revert until fixed. Upstream-Status: Inappropriate [revert of backport] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-03-23drm/bridge: lt8912b: return EPROBE_DEFER if bridge is not foundMatheus Castello
Returns EPROBE_DEFER when of_drm_find_bridge() fails, this is consistent with what all the other DRM bridge drivers are doing and this is required since the bridge might not be there when the driver is probed and this should not be a fatal failure. Cc: <stable@vger.kernel.org> Fixes: 30e2ae943c26 ("drm/bridge: Introduce LT8912B DSI to HDMI bridge") Upstream-Status: Submitted [https://lore.kernel.org/all/20230322143821.109744-1-francesco@dolcini.it/] Signed-off-by: Matheus Castello <matheus.castello@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20230322143821.109744-1-francesco@dolcini.it
2023-03-22PCI: imx6: Fix PERST# start-up sequenceFrancesco Dolcini
According to the PCIe standard the PERST# signal (reset-gpio in fsl,imx* compatible dts) should be kept asserted for at least 100 usec before the PCIe refclock is stable, should be kept asserted for at least 100 msec after the power rails are stable and the host should wait at least 100 msec after it is de-asserted before accessing the configuration space of any attached device. From PCIe CEM r2.0, sec 2.6.2 T-PVPERL: Power stable to PERST# inactive - 100 msec T-PERST-CLK: REFCLK stable before PERST# inactive - 100 usec. From PCIe r5.0, sec 6.6.1 With a Downstream Port that does not support Link speeds greater than 5.0 GT/s, software must wait a minimum of 100 ms before sending a Configuration Request to the device immediately below that Port. Failure to do so could prevent PCIe devices to be working correctly, and this was experienced with real devices. Move reset assert to imx6_pcie_assert_core_reset(), this way we ensure that PERST# is asserted before enabling any clock, move de-assert to the end of imx6_pcie_deassert_core_reset() after the clock is enabled and deemed stable and add a new delay of 100 msec just afterward. Link: https://lore.kernel.org/all/20220211152550.286821-1-francesco.dolcini@toradex.com Link: https://lore.kernel.org/r/20220404081509.94356-1-francesco.dolcini@toradex.com Fixes: bb38919ec56e ("PCI: imx6: Add support for i.MX6 PCIe controller") Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Acked-by: Richard Zhu <hongxing.zhu@nxp.com> Upstream-Status: Backport - This patch is already backported to stable linux 5.15.y but was overwritten by NXP patches. Do backport it again from upstream commit a6809941c1f17f455db2cf4ca19c6d8c8746ec25 Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
2023-03-21drm/imx: imx8mp-ldb: fix check on LDB valid clockRafael Beims
Remove wrong mode-fixup on the LDB driver that limited the pixel clocks to 74.25MHz in single channel mode and 148.5MHz in dual channel mode. According to the iMX8MP Reference manual, the LDB peripheral supports: " - Single channel (4 lanes) output at up to 80MHz pixel clock and LVDS clock. This supports resolutions up to 1366x768p60. - Dual asynchronous channels (8 data, 2 clocks). This is intended for a single panel with two interfaces, transferring across two channels (even pixel/odd pixel). This is supported at up to 160MHz pixel clock, which is up to 80MHz LVDS clock (due to 2 pixels per LVDS clock). This supports resolutions above 1366x768p60, up to 1080p60. " We contacted NXP trying to find the real reason for this seemingly random limitation, but we didn't get any response. The forced pixel clock values were removed and now it's possible to drive LVDS displays that have pixel clock requirements out of the previously limited range, but that are still within the hardware limitations. A check was added to ensure that clocks out of range are denied. With this change, it is now possible to use this display: - LVDS display (CMT1210A07R00 800x600 - 40MHz pixel clock) Also, the Toradex 10" Capacitive touch display (68.93MHz pixel clock) continues to work. Upstream-Status: Pending The file where this change was applied doesn't exist upstream. Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: Support dynamic ratesSascha Hauer
The pll1443x PLL so far only supports rates from a rate table passed during initialization. Calculating PLL settings dynamically helps audio applications to get their desired rates, so support for this is added in this patch. The strategy to get to the PLL setting for a rate is: - First try to only adjust kdiv which specifies the fractional part of the PLL. This setting can be changed without glitches on the output and is therefore preferred - When that isn't possible then the rate table is searched for suitable rates, so for standard rates the same settings are used as without this patch - As a last resort the best settings are calculated dynamically The code in this patch is based on patches from Adrian Alonso <adrian.alonso@nxp.com> and Mads Bligaard Nielsen <bli@bang-olufsen.dk> Upstream-Status: Backport [b09c68dc57c9d44071d83bb935b733f53ea2b2b4] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-9-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: Add pr_fmtSascha Hauer
Print all messages from within the pll14xx driver with a common prefix using pr_fmt. No need to print function names anymore, so drop them from the messages. Upstream-Status: Backport [80cbc80612a01461a257f2c2eb9976cbadfb7be2] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-8-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: explicitly return lowest rateSascha Hauer
clk_pll14xx_round_rate() returns the lowest rate by indexing into the rate table with the variable i. i is actually pll->rate_count as this is the value we come out of the loop with. Use pll->rate_count explicitly to make it a bit more clear what is being done. While at it fix a typo in the comment. No functional change. Upstream-Status: Backport [5ff50031cb8852bfcf587d003ba6bad3c2336852] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-7-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: name variables after usageSascha Hauer
In clk_pll1443x_set_rate() 'tmp' is used for the content of different registers which makes it a bit hard to follow. Use different variables named after the registers to make it clearer. No functional change intended. Upstream-Status: Backport [052d03a043afebb8e26ec17de52e8cdc8b217ef9] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-6-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: consolidate rate calculationSascha Hauer
The PLL driver has support for two different PLLs: The pll1416x and the pll1443x. The latter has support for an additional kdiv value. recalc_rate can be the same calculation when kdiv is assumed to be zero for the PLL which doesn't support that value. Upstream-Status: Backport [53990cf9d5b489fc0ec08e5c4df7139fc311a824] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-5-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> [Rafael: fixed conflicts in the clk_pll1443x_recalc_rate function caused by some additions on the downstream branch in commit 9425151a59a4. The changes in the downstream branch implement the same functionality of this commit but without the other improvements in the patch series. Additionally, the change in the downstream branch adds a function to change the "k" value of the PLL which gets exposed through sysfs. This function was also fixed to be compatible with the changes in the patch series.] Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: Use FIELD_GET/FIELD_PREPSascha Hauer
Linux has these marvelous FIELD_GET/FIELD_PREP macros for easy access to bitfields in registers. Use them and remove the now unused *_SHIFT defines. Upstream-Status: Backport [58f4980ccbecf633df1fcb113e2a9f04842eccc6] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-4-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: Drop wrong shiftingSascha Hauer
The code tries to mask the bits in SDIV_MASK from 'tmp'. SDIV_MASK already contains the shifted value, so shifting it again is wrong. No functional change though as SDIV_SHIFT is zero. Upstream-Status: Backport [d77461a616b659bd88dc153e3a86dba5bf78aa8a] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-3-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-21clk: imx: pll14xx: Use register defines consistentlySascha Hauer
The driver has defines for the registers, but they are mostly unused. Use the defines consistently throughout the driver. While at it rename DIV_CTL to DIV_CTL0 because that's the name in the reference manual. Upstream-Status: Backport [485b4ff57c2777c15bfe2e6e6a204200b040e131] Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Abel Vesa <abel.vesa@nxp.com> Link: https://lore.kernel.org/r/20220304125256.2125023-2-s.hauer@pengutronix.de Signed-off-by: Abel Vesa <abel.vesa@nxp.com> Signed-off-by: Rafael Beims <rafael.beims@toradex.com>
2023-03-17usb: misc: usb3503: support usb3803 and bypass modeEmanuele Ghidoli
Add support for USB3803 and bypass mode, with this change is also possible to move the component out of bypass mode. In bypass mode the downstream port 3 is connected to the upstream port with low switch resistance R_on. Controlling mode of operations: | RESET_N | BYPASS_N | Mode | -------------------------------- | 0 | 0 | standby | | 1 | 0 | bypass | | 1 | 1 | hub | Upstream-Status: Submitted [https://lore.kernel.org/all/20230313165039.255579-1-francesco@dolcini.it/] Datasheet: https://ww1.microchip.com/downloads/aemDocuments/documents/UNG/ProductDocuments/DataSheets/00001691D.pdf Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Link: https://lore.kernel.org/r/20230313165039.255579-4-francesco@dolcini.it Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> [fdolcini: backport: fixed error path on IS_ERR(hub->bypass)] Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
2023-03-17usb: misc: usb3503: refactor code to prepare for usb3803 additionEmanuele Ghidoli
Refactor code to simplify adding support for USB3803 and bypass mode. Remove static usb3503_reset() and move it to usb3503_switch_mode(), with the addition of the bypass mode we need to drive the various control signals to the expected configuration, not just to assert/release the reset. In addition to that the usb3503_connect() needs to be called only for HUB mode. No functional changes expected nor intended because of this change. Upstream-Status: Submitted [https://lore.kernel.org/all/20230313165039.255579-1-francesco@dolcini.it/] Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Link: https://lore.kernel.org/r/20230313165039.255579-3-francesco@dolcini.it Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-03-16gpio: fxl6408: add I2C GPIO expander driverEmanuele Ghidoli
Add minimal driver for Fairchild FXL6408 8-bit I2C-controlled GPIO expander using the generic regmap based GPIO driver (GPIO_REGMAP). The driver implements setting the GPIO direction, reading inputs and writing outputs. In addition to that the FXL6408 has the following functionalities: - allows to monitor input ports for data transitions with an interrupt pin - all inputs can be configured with pull-up or pull-down resistors Upstream-Status: Submitted [https://lore.kernel.org/all/20230313170950.256964-1-francesco@dolcini.it/] Datasheet: https://www.onsemi.com/download/data-sheet/pdf/fxl6408-d.pdf Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Co-developed-by: Francesco Dolcini <francesco.dolcini@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> [Bartosz: order includes alphabetically] Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2023-02-17Bluetooth: hci_mrvl: Add serdev support for 88W8997Stefan Eichenberger
Add serdev support for the 88W8997 from NXP (previously Marvell). It includes support for changing the baud rate. The command to change the baud rate is taken from the user manual UM11483 Rev. 9 in section 7 (Bring-up of Bluetooth interfaces) from NXP. Upstream-Status: Submitted [https://lore.kernel.org/linux-bluetooth/20230213120926.8166-1-francesco@dolcini.it/] Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
2023-02-17Bluetooth: hci_mrvl: use maybe_unused macro for device tree idsStefan Eichenberger
Use the maybe_unused macro for the device tree ids instead of #ifdef CONFIG_OF. This makes it easier to add support for new devices. Upstream-Status: Submitted [https://lore.kernel.org/linux-bluetooth/20230213120926.8166-1-francesco@dolcini.it/] Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
2023-02-15rtc: allow rtc_read_alarm without read_alarm callbackAlexandre Belloni
.read_alarm is not necessary to read the current alarm because it is recorded in the aie_timer and so rtc_read_alarm() will never call rtc_read_alarm_internal() which is the only function calling the callback. Upstream-Status: Submitted [https://lore.kernel.org/all/20230214222754.582582-1-alexandre.belloni@bootlin.com/] Reported-by: Zhipeng Wang <zhipeng.wang_1@nxp.com> Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Fixes: 7ae41220ef58 ("rtc: introduce features bitfield") Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
2023-01-28drm/imx: lcdif: crtc increase pixel clock tolerance to 10%Stefan Eichenberger
Set a pixel clock tolerance of 10% for the DSI interface of the i.MX 8MM SoCs. There are some resolutions e.g. 1280x1024@60 Hz that do not work without this commit. Upstream-Status: Pending This driver is not upstream and probably never will. It looks like the function will become part of mxsfb. They don't verify the pixel clock frequency there. Related-to: ELB-4728 Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-01-28drm/imx: lcdifv3: crtc increase pixel clock tolerance to 10%Stefan Eichenberger
Set a pixel clock tolerance of 10% for the DSI interface of the i.MX 8MP SoCs. There are some resolutions e.g. 1280x1024@60 Hz that do not work without this commit. Upstream-Status: Pending This driver is not upstream and probably never will. It looks like the function will become part of mxsfb. They don't verify the pixel clock frequency there. Related-to: ELB-4728 Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2023-01-28drm/imx: dw_hdmi-imx: increase pixel clock tolerance to 10%Stefan Eichenberger
Set a pixel clock tolerance of 10% for the native HDMI interface of the i.MX 8MP SoCs. There are some resolutions e.g. 1280x1024@60 Hz that do not work without this commit. Upstream-Status: Pending The dw_hdmi-imx.c file is available upstream but they do not verify the pixel clock frequency. Adding this check would harm more than it solves. Related-to: ELB-4728 Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2022-12-21drm: imx8: fix hdmi firmware loadStefan Eichenberger
Loading the hdmi firmware from kernel is broken. The firmware is loaded from filesystem but never sent to the hdmi controller. This commit fixes it by waiting for the firmware load to complete and afterwards transfer it to the controller. Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com> Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com> Upstream-Status: Pending Downstream specific, i.MX 8 HDMI subsystem not yet in upstream. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-12-07imx8mp: native hdmi: allow pixelclocks being slightly offMax Krummenacher
The HDMI PHY driver currently can only generate a discrete set of pixelclock frequencies. Any mode read from a monitor's EDID with a non matching frequency is rejected. Change that to find the closest possible frequency and accept the mode if it deviates less than 6%. 6% is chosen as with that any pixelclock in the range of 22.25Mhz - 297MHz should be accepted. Related-to: ELB-4015 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit c6944a48583f6dc2d698df387fd648075491bf81) Upstream-Status: Inappropriate [Downstream specific, i.MX 8M Plus HDMI subsystem not yet ready] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-12-07tty: serial: fsl_lpuart: set rxiden in non dma caseMax Krummenacher
In the case of not using edma set the RXIDEN field. This sets the RDRF flag even if there are received characters in the FIFO and the receiver has been idle for the specified number of characters. Related-to: ELB-3517 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit 35a34002c3c946195d72a12aa7cae91a21cdfb0a) Upstream-Status: Inappropriate [Downstream specific, it requires additional patches on fsl_lpuart not available in upstream] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-12-07tty: serial: lpuart: Disable transmitter on setting modem registerPhilippe Schenker
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> Conflicts: drivers/tty/serial/fsl_lpuart.c Upstream-Status: Inappropriate [Downstream specific, it requires additional patches on fsl_lpuart not available in upstream] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-12-07tty: serial: lpuart: Make sure watermark stuff doesn't touch rs485Philippe Schenker
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> (cherry picked from commit e35977dc853918aa9ff58a54df1073eb20160c57) Upstream-Status: Inappropriate [Downstream specific, it requires additional patches on fsl_lpuart not available in upstream] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-12-07Input: colibri-vf50-ts - don't depend on VF610_ADCMax Krummenacher
Any IIO ADC can be used with the driver, so do not depend on VF610_ADC. Upstream-Status: Backport [8a32cff217b7a0f1ab3b744fc9cd0626f08f7f15] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Link: https://lore.kernel.org/r/20220712101619.326120-2-francesco.dolcini@toradex.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2022-12-06i2c: imx: Remove unnecessary clock reconfigurationAlexander Stein
The I2C clock is already reconfigured within the clock notifier. This also fixes an ABBA locking deadlock if some other I2C device reconfigures clocks it provides, e.g. tlv320aic32x4 during probe. Fixes: 4f7ad5de1107 ("MLK-20368 i2c-imx: Coverity: fix divide by zero warning") Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
2022-12-06Revert "serial: fsl_lpuart: Reset prior to registration"Max Krummenacher
This reverts commit 4199425b11325e893661d03f92330dd1adae03b0. The lpuart_global_reset() uses fields set by the registration to find out if we are a console or not. Executing it before registration may make it fail. E.g. on a imx8qm-mek the kernel stops booting without any visable output when the switch to a console is done. [ 1.219604] mxs-dma 5b810000.dma-apbh: initialized [ 1.228743] Bus freq driver module loaded [ 1.241522] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.252161] 5a060000.serial: ttyLP0 at MMIO 0x5a060010 (irq = 69, base_baud = 5000000) is a FSL_LPUAR[ 1.261335] printk: console [ttyLP0] enabled [ 1.261335] printk: console [ttyLP0] enabled [ 1.269756] printk: bootconsole [lpuart32] disabled [ 1.269756] printk: bootconsole [lpuart32] disabled While at it also remove the second call to uart_add_one_port() which sneaked in during merging of stable patches. Also, since we now reset after uart_add_one_port() call sport->port.rs485_config() explicitely again. The reset may have reverted the effects of the uart_add_one_port -> sport->port.rs485_config call chain. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2022-11-30drm/bridge: lt8912b: Add hot plug detectionStefan Eichenberger
Enable hot plug detection when it is available on the HDMI port. Without this connecting to a different monitor with incompatible timing before the 10 seconds poll period will lead to a broken display output. Upstream-Status: Submitted [https://lore.kernel.org/all/20221128112320.25708-1-francesco@dolcini.it/] Fixes: 30e2ae943c26 ("drm/bridge: Introduce LT8912B DSI to HDMI bridge") Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
2022-11-16mmc: sdhci-esdhc-imx: use the correct host caps for MMC_CAP_8_BIT_DATAHaibo Chen
commit f002f45a00ee14214d96b18b9a555fe2c56afb20 upstream. MMC_CAP_8_BIT_DATA belongs to struct mmc_host, not struct sdhci_host. So correct it here. Upstream-Status: Backport [from 5.15.79, commit 29100c674208] Fixes: 1ed5c3b22fc7 ("mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus") Signed-off-by: Haibo Chen <haibo.chen@nxp.com> Cc: stable@vger.kernel.org Acked-by: Adrian Hunter <adrian.hunter@intel.com> Link: https://lore.kernel.org/r/1667893503-20583-1-git-send-email-haibo.chen@nxp.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-15usb: dwc3: imx8mp: Add support for setting SOC specific flagsAlexander Stein
The i.MX8MP glue layer has support for the following flags: * over-current polarity * PWR pad polarity * controlling PPC flag in HCCPARAMS register * permanent port attach for usb2 & usb3 port Allow setting these flags by supporting specific flags in the glue node. In order to get this to work an additional IORESOURCE_MEM and clock is necessary. For backward compatibility this is purely optional. Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Link: https://lore.kernel.org/r/20220218152707.2198357-4-alexander.stein@ew.tq-group.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Upstream-Status: Backport [9d52107185b646d449b682e10e95e6b3037b79cf]
2022-11-15usb: dwc3: imx8mp: rename iomem base pointerAlexander Stein
Until now the iomem used is not USB glue as the name suggests, but HSIO BLK_CTL. Rename the struct member accordingly. This is a preparing patch for when USB glue is actually used. Reviewed-by: Li Jun <jun.li@nxp.com> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Link: https://lore.kernel.org/r/20220218152707.2198357-2-alexander.stein@ew.tq-group.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Upstream-Status: Backport [81915384b5d127c67bfb4d19a62ec193e12eaaef]