drm: bridge: Add NWL MIPI DSI host controller support
Subsystems (4)
v7 cover drm: bridge: Add NWL MIPI DSI host controller support
This adds initial support for the NWL MIPI DSI Host controller found on i.MX8 SoCs.
It adds support for the i.MX8MQ but the same IP core can also be found on e.g. i.MX8QXP. I added the necessary hooks to support other imx8 variants but since I only have imx8mq boards to test I omitted the platform data for other SoCs.
The code is based on NXPs BSP so I added Robert Chiras as Co-authored-by.
The most notable changes over the BSP driver are
- Calculate HS mode timing from phy_configure_opts_mipi_dphy
- Perform all clock setup via DT
- Merge nwl-imx and nwl drivers
- Add B0 silion revision quirk
- become a bridge driver to hook into mxsfb / dcss imx-display-subsystem so it makes sense to make it drive a bridge for dsi as well).
- Use panel_bridge to attach the panel
- Use multiplex framework instead of accessing syscon directly
This has been tested on a Librem 5 devkit using mxsfb with Robert's patches[1] and the rocktech-jh057n00900 panel driver on next-20191018. The DCSS can later on also act as input source too.
Changes from v7:
- Per review comments by Andrzej Hajda
https://lore.kernel.org/linux-arm-kernel/[email protected]/
- Drop spare empty line
- handle nwl_dsi_write errors
- better handle read errors
- unwind in case of error in nwl_dsi_enable
- use bridge_to_dsi() instead of accessing driver_private
- don't log on -EPROBEDEFER when fething the reset controller
- use endpoint number to determine input
- Spotted by kbuild test robot <[email protected]>
https://lore.kernel.org/linux-arm-kernel/201909230644.qfSKbNf9%[email protected]/
Use signed return type for nwl_dsi_get_dpi_pixel_format
- Drop connector type from drm_panel_bridge_add
- Don't forget to set an error value on dsi reads
Changes from v5:
- Per review comments by Andrzej Hajda
https://lists.freedesktop.org/archives/dri-devel/2019-September/235281.html
- Fix include file ordering
- Add a comment to nwl_dsi_platform_data that will allow to add support at least for the i.MX8QM
- Merge driver into a single file plus the register defs in a separate header
- Make more functions and structs static
Changes from v4:
- Collect Reviewed-by: from Rob Herring, thanks!
https://lists.freedesktop.org/archives/dri-devel/2019-September/233979.html
- Spotted by kbuild test robot <[email protected]>
https://lists.freedesktop.org/archives/dri-devel/2019-September/233860.html
https://lists.freedesktop.org/archives/dri-devel/2019-September/233863.html
- fix format string for size_t
- Use DIV64_U64_ROUND_UP to fix build on 32 bit architectures We can't use simple shift sind d and n are similar in size and we need full precision
- Fix debug cfg_t_post debug print out
- Avoid PSEC_PER_SEC
- Move timeout / overflow handling out of nwl_dsi_finish_transmission, it would never end up being reported since the call to the function was guarded by flags.
- Drop 'support for' from KConfig title to make it match the other drivers in that submenu
Changes from v3:
- Per review comments by Robert Chiras
https://lists.freedesktop.org/archives/dri-devel/2019-August/232580.html
- Add Robert's {Signed-off,Tested}-by:
- Respect number of lanes when calculting bandwidth limits
- Drop duplicate NWL_DSI_ENABLE_MULT_PKTS setup
- Per testing by Rober Chiras
https://lists.freedesktop.org/archives/dri-devel/2019-August/233688.html
- Drop duplicate (and too early) drm_bridge_add() in nwl_dir_probe() that made mxsfb fail to connect to the bridge since the panel_bridge was not up yet. drm_bridge_add() happens in nwl_dsi_host_attach() where after the panel_bridge was set up.
- Per review comments by Rob Herring on bindings
https://lists.freedesktop.org/archives/dri-devel/2019-August/233196.html
- drop description from power-domains and resets
- allow BSD 2 clause license as well
- make ports more specific
- add #address-cells, #size-cells as required
- use additionalProperties
- panel is of type object
Changes from v2:
- Per review comments by Rob Herring
https://lists.freedesktop.org/archives/dri-devel/2019-August/230448.html
- bindings:
- Simplify by restricting to fsl,imx8mq-nwl-dsi
- document reset lines
- add port@{0,1}
- use a real compatible string for the panel
- resets are required
- Per review comments by Arnd Bergmann
https://lists.freedesktop.org/archives/dri-devel/2019-August/230868.html
- Don't access iomuxc_gpr regs directly. This allows us to drop the first patch in the series with the iomuxc_gpr field defines.
- Per review comments by Laurent Pinchart
Fix wording in bindings
- Add mux-controls to bindings
- Don't print error message on dphy probe deferral
Changes from v1:
- Per review comments by Sam Ravnborg
https://lists.freedesktop.org/archives/dri-devel/2019-July/228130.html
- Change binding docs to YAML
- build: Don't always visit imx-nwl/
- build: Add header-test-y
- Sort headers according to DRM convention
- Use drm_display_mode instead of videmode
- Per review comments by Fabio Estevam
https://lists.freedesktop.org/archives/dri-devel/2019-July/228299.html
- Don't restrict build to ARCH_MXC
- Drop unused includes
- Drop unreachable code in imx_nwl_dsi_bridge_mode_fixup()
- Drop remaining calls of dev_err() and use DRM_DEV_ERR() consistently.
- Use devm_platform_ioremap_resource()
- Drop devm_free_irq() in probe() error path
- Use single line comments where sufficient
- Use <linux/time64.h> instead of defining USEC_PER_SEC
- Make input source select imx8 specific
- Drop <asm/unaligned.h> inclusion (after removal of get_unaligned_le32)
- Drop all EXPORT_SYMBOL_GPL() for functions used in the same module but different source files.
- Drop nwl_dsi_enable_{rx,tx}_clock() by invoking clk_prepare_enable() directly
- Remove pointless comment
- Laurent Pinchart
https://lists.freedesktop.org/archives/dri-devel/2019-July/228313.html
https://lists.freedesktop.org/archives/dri-devel/2019-July/228308.html
- Drop (on iMX8MQ) unused csr regmap
- Use NWL_MAX_PLATFORM_CLOCKS everywhere
- Drop get_unaligned_le32() usage
- remove duplicate 'for the' in binding docs
- Don't include unused <linux/clk-provider.h>
- Don't include unused <linux/component.h>
- Drop dpms_mode for tracking state, trust the drm layer on that
- Use pm_runtime_put() instead of pm_runtime_put_sync()
- Don't overwrite encoder type
- Make imx_nwl_platform_data const
- Use the reset controller API instead of open coding that platform specific part
- Use <linux/bitfield.h> intead of making up our own defines
- name mipi_dsi_transfer less generic: nwl_dsi_transfer
- ensure clean in .remove by calling mipi_dsi_host_unregister.
- prefix constants by NWL_DSI_
- properly format transfer_direction enum
- simplify platform clock handling
- Don't modify state in mode_fixup() and use mode_set() instead
- Drop bridge detach(), already handle by nwl_dsi_host_detach()
- Drop USE_*_QUIRK() macros
- Drop (for now) unused clock defnitions. 'pixel' and 'bypass' clock will be used for i.MX8 SoCs but since they're unused atm drop the definitions - but keep the logic to enable/disable several clocks in place since we know we'll need it in the future.
Changes from v0:
- Add quirk for IMQ8MQ silicon B0 revision to not mess with the system reset controller on power down since enable() won't work otherwise.
- Drop devm_free_irq() handled by the device driver core
- Disable tx esc clock after the phy power down to unbreak disable/enable (unblank/blank)
- Add ports to dt binding docs
- Select GENERIC_PHY_MIPI_DPHY instead of GENERIC_PHY for phy_mipi_dphy_get_default_config
- Select DRM_MIPI_DSI
- Include drm_print.h to fix build on next-20190408
- Drop some debugging messages
- Newline terminate all DRM_ printouts
- Turn component driver into a drm bridge
[0]: https://lists.freedesktop.org/archives/dri-devel/2019-May/219484.html
[1]: https://patchwork.freedesktop.org/series/62822/
Guido Günther (2):
dt-bindings: display/bridge: Add binding for NWL mipi dsi host
controller
drm/bridge: Add NWL MIPI DSI host controller support
.../bindings/display/bridge/nwl-dsi.yaml | 203 +++ drivers/gpu/drm/bridge/Kconfig | 16 + drivers/gpu/drm/bridge/Makefile | 3 + drivers/gpu/drm/bridge/nwl-dsi.c | 1235 +++++++++++++++++ drivers/gpu/drm/bridge/nwl-dsi.h | 144 ++ 5 files changed, 1601 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/nwl-dsi.yaml create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.c create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.h
Signature · 1 line
2.23.0.rc1
PATCH v7 1/2 dt-bindings: display/bridge: Add binding for NWL mipi dsi host controller
The Northwest Logic MIPI DSI IP core can be found in NXPs i.MX8 SoCs.
--- .../bindings/display/bridge/nwl-dsi.yaml | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/nwl-dsi.yaml
Documentation/devicetree/bindings/display/bridge/nwl-dsi.yaml new file +203 -0
@@ -0,0 +1,203 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/bridge/nwl-dsi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Northwest Logic MIPI-DSI controller on i.MX SoCs + +maintainers: + - Guido Gúnther <[email protected]> + - Robert Chiras <[email protected]> + +description: | + NWL MIPI-DSI host controller found on i.MX8 platforms. This is a dsi bridge for + the SOCs NWL MIPI-DSI host controller. + +properties: + compatible: + const: fsl,imx8mq-nwl-dsi + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + clocks: + items: + - description: DSI core clock + - description: RX_ESC clock (used in escape mode) + - description: TX_ESC clock (used in escape mode) + - description: PHY_REF clock + + clock-names: + items: + - const: core + - const: rx_esc + - const: tx_esc + - const: phy_ref + + mux-controls: + description: + mux controller node to use for operating the input mux + + phys: + maxItems: 1 + description: + A phandle to the phy module representing the DPHY + + phy-names: + items: + - const: dphy + + power-domains: + maxItems: 1 + + resets: + items: + - description: dsi byte reset line + - description: dsi dpi reset line + - description: dsi esc reset line + - description: dsi pclk reset line + + reset-names: + items: + - const: byte + - const: dpi + - const: esc + - const: pclk + + ports: + type: object + description: + A node containing DSI input & output port nodes with endpoint + definitions as documented in + Documentation/devicetree/bindings/graph.txt. + properties: + port@0: + type: object + description: + Input port node to receive pixel data from the + display controller. Exactly one endpoint must be + specified. + properties: + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + endpoint@0: + description: sub-node describing the input from LCDIF + type: object + + endpoint@1: + description: sub-node describing the input from DCSS + type: object + + reg: + const: 0 + + required: + - '#address-cells' + - '#size-cells' + - reg + additionalProperties: false + + port@1: + type: object + description: + DSI output port node to the panel or the next bridge + in the chain + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + required: + - '#address-cells' + - '#size-cells' + - port@0 + - port@1 + + additionalProperties: false + +patternProperties: + "^panel@[0-9]+$": + type: object + +required: + - '#address-cells' + - '#size-cells' + - clock-names + - clocks + - compatible + - interrupts + - mux-controls + - phy-names + - phys + - ports + - reg + - reset-names + - resets + +additionalProperties: false + +examples: + - | + + mipi_dsi: mipi_dsi@30a00000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,imx8mq-nwl-dsi"; + reg = <0x30A00000 0x300>; + clocks = <&clk 163>, <&clk 244>, <&clk 245>, <&clk 164>; + clock-names = "core", "rx_esc", "tx_esc", "phy_ref"; + interrupts = <0 34 4>; + mux-controls = <&mux 0>; + power-domains = <&pgc_mipi>; + resets = <&src 0>, <&src 1>, <&src 2>, <&src 3>; + reset-names = "byte", "dpi", "esc", "pclk"; + phys = <&dphy>; + phy-names = "dphy"; + + panel@0 { + compatible = "rocktech,jh057n00900"; + reg = <0>; + port@0 { + panel_in: endpoint { + remote-endpoint = <&mipi_dsi_out>; + }; + }; + }; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + #size-cells = <0>; + #address-cells = <1>; + reg = <0>; + mipi_dsi_in: endpoint@0 { + reg = <0>; + remote-endpoint = <&lcdif_mipi_dsi>; + }; + }; + port@1 { + reg = <1>; + mipi_dsi_out: endpoint { + remote-endpoint = <&panel_in>; + }; + }; + }; + };
Signature · 1 line
2.23.0.rc1
PATCH v7 2/2 drm/bridge: Add NWL MIPI DSI host controller support
In reply to Guido GüntherThis adds initial support for the NWL MIPI DSI Host controller found on i.MX8 SoCs.
It adds support for the i.MX8MQ but the same IP can be found on e.g. the i.MX8QXP.
It has been tested on the Librem 5 devkit using mxsfb.
--- drivers/gpu/drm/bridge/Kconfig | 16 + drivers/gpu/drm/bridge/Makefile | 3 + drivers/gpu/drm/bridge/nwl-dsi.c | 1235 ++++++++++++++++++++++++++++++ drivers/gpu/drm/bridge/nwl-dsi.h | 144 ++++ 4 files changed, 1398 insertions(+) create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.c create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.h
drivers/gpu/drm/bridge/Kconfig +16 -0
@@ -65,6 +65,22 @@ config DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW to DP++. This is used with the i.MX6 imx-ldb driver. You are likely to say N here. +config DRM_NWL_MIPI_DSI + tristate "Northwest Logic MIPI DSI Host controller" + depends on DRM + depends on COMMON_CLK + depends on OF && HAS_IOMEM + select DRM_KMS_HELPER + select DRM_MIPI_DSI + select DRM_PANEL_BRIDGE + select GENERIC_PHY_MIPI_DPHY + select MFD_SYSCON + select MULTIPLEXER + select REGMAP_MMIO + help + This enables the Northwest Logic MIPI DSI Host controller as + for example found on NXP's i.MX8 Processors. + config DRM_NXP_PTN3460 tristate "NXP PTN3460 DP/LVDS bridge" depends on OF
drivers/gpu/drm/bridge/Makefile +3 -0
@@ -16,4 +16,7 @@ obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/ obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/ obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o +obj-$(CONFIG_DRM_NWL_MIPI_DSI) += nwl-dsi.o obj-y += synopsys/ + +header-test-y += nwl-dsi.h
drivers/gpu/drm/bridge/nwl-dsi.c new file +1235 -0
1,235 lines not on this page · raw message
drivers/gpu/drm/bridge/nwl-dsi.h new file +144 -0
144 lines not on this page · raw message
Signature · 7 lines
2.23.0.rc1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
kbuild test robot
build botRe: [PATCH v7 2/2] drm/bridge: Add NWL MIPI DSI host controller support
I love your patch! Yet something to improve:
Hi "Guido,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc4 next-20191018]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Guido-G-nther/dt-bindings-display-bridge-Add-binding-for-NWL-mipi-dsi-host-controller/20191021-180825 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7d194c2100ad2a6dded545887d02754948ca5241 config: mips-allmodconfig (attached as .config) compiler: mips-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag
All errors (new ones prefixed by >>):
drivers/gpu/drm/bridge/nwl-dsi.c: In function 'nwl_dsi_host_attach':
>> drivers/gpu/drm/bridge/nwl-dsi.c:384:12: error: too few arguments to function 'drm_panel_bridge_add'
bridge = drm_panel_bridge_add(panel);
^~~~~~~~~~~~~~~~~~~~ In file included from include/drm/drm_crtc.h:44:0,
from include/drm/drm_atomic_helper.h:31, from drivers/gpu/drm/bridge/nwl-dsi.c:24:
include/drm/drm_bridge.h:432:20: note: declared here
struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel,
^~~~~~~~~~~~~~~~~~~~
vim +/drm_panel_bridge_add +384 drivers/gpu/drm/bridge/nwl-dsi.c
358
359 static int nwl_dsi_host_attach(struct mipi_dsi_host *dsi_host,
360 struct mipi_dsi_device *device)
361 {
362 struct nwl_dsi *dsi = container_of(dsi_host, struct nwl_dsi, dsi_host);
363 struct device *dev = dsi->dev;
364 struct drm_bridge *bridge;
365 struct drm_panel *panel;
366 int ret;
367
368 DRM_DEV_INFO(dev, "lanes=%u, format=0x%x flags=0x%lx\n", device->lanes,
369 device->format, device->mode_flags);
370
371 if (device->lanes < 1 || device->lanes > 4)
372 return -EINVAL;
373
374 dsi->lanes = device->lanes;
375 dsi->format = device->format;
376 dsi->dsi_mode_flags = device->mode_flags;
377
378 ret = drm_of_find_panel_or_bridge(dsi->dev->of_node, 1, 0, &panel,
379 &bridge);
380 if (ret)
381 return ret;
382
383 if (panel) {
> 384 bridge = drm_panel_bridge_add(panel);
385 if (IS_ERR(bridge))
386 return PTR_ERR(bridge);
387 }
388
389 dsi->panel_bridge = bridge;
390 drm_bridge_add(&dsi->bridge);
391
392 return 0;
393 }
394
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH v7 2/2] drm/bridge: Add NWL MIPI DSI host controller support
Hi,
Quoted 10 lines · kbuild test robot
Hi "Guido,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc4 next-20191018]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see
https://stackoverflow.com/a/37406982]
The base for this series is next-20191018 where drm_panel_bridge_add() list it's second argument (89958b7cd9555a5d82556cc9a1f4c62fffda6f96).
Cheers,
-- Guido
Quoted 72 lines
url: https://github.com/0day-ci/linux/commits/Guido-G-nther/dt-bindings-display-bridge-Add-binding-for-NWL-mipi-dsi-host-controller/20191021-180825 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7d194c2100ad2a6dded545887d02754948ca5241 config: mips-allmodconfig (attached as .config) compiler: mips-linux-gcc (GCC) 7.4.0reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=mipsIf you fix the issue, kindly add following tag
Reported-by kbuild test robot <[email protected]>All errors (new ones prefixed by >>):
drivers/gpu/drm/bridge/nwl-dsi.c: In function 'nwl_dsi_host_attach':Quoted 1 line
Quoted 1 line
drivers/gpu/drm/bridge/nwl-dsi.c:384:12: error: too few arguments to function 'drm_panel_bridge_add'bridge = drm_panel_bridge_add(panel); ^~~~~~~~~~~~~~~~~~~~In file included from
include/drm/drm_crtc.h:44:0,
frominclude/drm/drm_atomic_helper.h:31, fromdrivers/gpu/drm/bridge/nwl-dsi.c:24:
include/drm/drm_bridge.h:432:20: note: declared here
structdrm_bridge*drm_panel_bridge_add(structdrm_panel*panel,
^~~~~~~~~~~~~~~~~~~~vim +/drm_panel_bridge_add +384
drivers/gpu/drm/bridge/nwl-dsi.c358 359 static int nwl_dsi_host_attach(struct mipi_dsi_host *dsi_host, 360 struct mipi_dsi_device *device) 361 { 362 struct nwl_dsi *dsi = container_of(dsi_host, struct nwl_dsi, dsi_host); 363 struct device *dev = dsi->dev; 364 struct drm_bridge *bridge; 365 struct drm_panel *panel; 366 int ret; 367 368 DRM_DEV_INFO(dev, "lanes=%u, format=0x%x flags=0x%lx\n", device->lanes, 369 device->format, device->mode_flags); 370 371 if (device->lanes < 1 || device->lanes > 4) 372 return -EINVAL; 373 374 dsi->lanes = device->lanes; 375 dsi->format = device->format; 376 dsi->dsi_mode_flags = device->mode_flags; 377 378 ret = drm_of_find_panel_or_bridge(dsi->dev->of_node, 1, 0, &panel, 379 &bridge); 380 if (ret) 381 return ret; 382 383 if (panel) {Quoted 1 line
384 bridge =
drm_panel_bridge_add(panel);385 if (
IS_ERR(bridge))386 return PTR_ERR(bridge); 387 } 388 389 dsi->panel_bridge = bridge; 390 drm_bridge_add(&dsi->bridge); 391 392 return 0; 393 } 394---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Quoted 4 lines
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi,
Quoted 2 lines · Guido Günther
This adds initial support for the NWL MIPI DSI Host controller found on i.MX8 SoCs.
Is there anything i can do to move this forward? As far as i can tell all review comments should be addressed.
Cheers,
-- Guido
Quoted 184 lines
It adds support for the i.MX8MQ but the same IP core can also be found on e.g. i.MX8QXP. I added the necessary hooks to support other imx8 variants but since I only have imx8mq boards to test I omitted the platform data for other SoCs.
The code is based on NXPs BSP so I added Robert Chiras as Co-authored-by.
The most notable changes over the BSP driver are
- Calculate HS mode timing fromphy_configure_opts_mipi_dphy
- Perform all clock setup via DT
- Merge nwl-imx and nwl drivers
- Add B0 silion revision quirk
- become a bridge driver to hook into mxsfb / dcss imx-display-subsystem so it makes sense to make it drive a bridge for dsi as well).
- Usepanel_bridgeto attach the panel
- Use multiplex framework instead of accessing syscon directlyThis has been tested on a Librem 5 devkit using mxsfb with Robert's patches[1] and the rocktech-jh057n00900 panel driver on next-20191018. The DCSS can later on also act as input source too.
Changes from v7:
- Per review comments by Andrzej Hajda
https://lore.kernel.org/linux-arm-kernel/[email protected]/
- Drop spare empty line
- handlenwl_dsi_writeerrors
- better handle read errors
- unwind in case of error innwl_dsi_enable
- usebridge_to_dsi()instead of accessingdriver_private
- don't log on-EPROBEDEFERwhen fething the reset controller
- use endpoint number to determine input
- Spotted by kbuild test robot <[email protected]>
https://lore.kernel.org/linux-arm-kernel/201909230644.qfSKbNf9%[email protected]/
Use signed return type fornwl_dsi_get_dpi_pixel_format
- Drop connector type fromdrm_panel_bridge_add
- Don't forget to set an error value on dsi readsChanges from v5:
- Per review comments by Andrzej Hajda
https://lists.freedesktop.org/archives/dri-devel/2019-September/235281.html
- Fix include file ordering
- Add a comment tonwl_dsi_platform_datathat will allow to add support at least for the i.MX8QM
- Merge driver into a single file plus the register defs in a separate header
- Make more functions and structs staticChanges from v4:
- Collect Reviewed-by: from Rob Herring, thanks!
https://lists.freedesktop.org/archives/dri-devel/2019-September/233979.html
- Spotted by kbuild test robot <[email protected]>
https://lists.freedesktop.org/archives/dri-devel/2019-September/233860.html
https://lists.freedesktop.org/archives/dri-devel/2019-September/233863.html
- fix format string forsize_t
- UseDIV64_U64_ROUND_UPto fix build on 32 bit architectures We can't use simple shift sind d and n are similar in size and we need full precision
- Fix debugcfg_t_postdebug print out
- AvoidPSEC_PER_SEC
- Move timeout / overflow handling out ofnwl_dsi_finish_transmission, it would never end up being reported since the call to the function was guarded by flags.
- Drop 'support for' from KConfig title to make it match the other drivers in that submenuChanges from v3:
- Per review comments by Robert Chiras
https://lists.freedesktop.org/archives/dri-devel/2019-August/232580.html
- Add Robert's {Signed-off,Tested}-by:
- Respect number of lanes when calculting bandwidth limits
- Drop duplicateNWL_DSI_ENABLE_MULT_PKTSsetup
- Per testing by Rober Chiras
https://lists.freedesktop.org/archives/dri-devel/2019-August/233688.html
- Drop duplicate (and too early)drm_bridge_add()innwl_dir_probe()that made mxsfb fail to connect to the bridge since thepanel_bridgewas not up yet.drm_bridge_add()happens innwl_dsi_host_attach()where after thepanel_bridgewas set up.
- Per review comments by Rob Herring on bindings
https://lists.freedesktop.org/archives/dri-devel/2019-August/233196.html
- drop description from power-domains and resets
- allow BSD 2 clause license as well
- make ports more specific
- add #address-cells, #size-cells as required
- use additionalProperties
- panel is of type objectChanges from v2:
- Per review comments by Rob Herring
https://lists.freedesktop.org/archives/dri-devel/2019-August/230448.html
- bindings:
- Simplify by restricting to fsl,imx8mq-nwl-dsi
- document reset lines
- add port@{0,1}
- use a real compatible string for the panel
- resets are required
- Per review comments by Arnd Bergmann
https://lists.freedesktop.org/archives/dri-devel/2019-August/230868.html
- Don't accessiomuxc_gprregs directly. This allows us to drop the first patch in the series with theiomuxc_gprfield defines.
- Per review comments by Laurent Pinchart
Fix wording in bindings
- Add mux-controls to bindings
- Don't print error message on dphy probe deferralChanges from v1:
- Per review comments by Sam Ravnborg
https://lists.freedesktop.org/archives/dri-devel/2019-July/228130.html
- Change binding docs to YAML
- build: Don't always visit imx-nwl/
- build: Add header-test-y
- Sort headers according to DRM convention
- Usedrm_display_modeinstead of videmode
- Per review comments by Fabio Estevam
https://lists.freedesktop.org/archives/dri-devel/2019-July/228299.html
- Don't restrict build toARCH_MXC
- Drop unused includes
- Drop unreachable code inimx_nwl_dsi_bridge_mode_fixup()
- Drop remaining calls ofdev_err()and useDRM_DEV_ERR()consistently.
- Usedevm_platform_ioremap_resource()
- Dropdevm_free_irq()inprobe()error path
- Use single line comments where sufficient
- Use <linux/time64.h> instead of definingUSEC_PER_SEC
- Make input source select imx8 specific
- Drop <asm/unaligned.h> inclusion (after removal ofget_unaligned_le32)
- Drop allEXPORT_SYMBOL_GPL()for functions used in the same module but different source files.
- Drop nwl_dsi_enable_{rx,tx}_clock() by invokingclk_prepare_enable()directly
- Remove pointless comment
- Laurent Pinchart
https://lists.freedesktop.org/archives/dri-devel/2019-July/228313.html
https://lists.freedesktop.org/archives/dri-devel/2019-July/228308.html
- Drop (on iMX8MQ) unused csr regmap
- UseNWL_MAX_PLATFORM_CLOCKSeverywhere
- Dropget_unaligned_le32()usage
- remove duplicate 'for the' in binding docs
- Don't include unused <linux/clk-provider.h>
- Don't include unused <linux/component.h>
- Dropdpms_modefor tracking state, trust the drm layer on that
- Usepm_runtime_put()instead ofpm_runtime_put_sync()
- Don't overwrite encoder type
- Makeimx_nwl_platform_dataconst
- Use the reset controller API instead of open coding that platform specific part
- Use <linux/bitfield.h> intead of making up our own defines
- namemipi_dsi_transferless generic:nwl_dsi_transfer
- ensure clean in .remove by callingmipi_dsi_host_unregister.
- prefix constants byNWL_DSI_
- properly formattransfer_directionenum
- simplify platform clock handling
- Don't modify state inmode_fixup()and usemode_set()instead
- Drop bridgedetach(), already handle bynwl_dsi_host_detach()
- Drop USE_*_QUIRK() macros
- Drop (for now) unused clock defnitions. 'pixel' and 'bypass' clock will be used for i.MX8 SoCs but since they're unused atm drop the definitions - but keep the logic to enable/disable several clocks in place since we know we'll need it in the future.Changes from v0:
- Add quirk for IMQ8MQ silicon B0 revision to not mess with the system reset controller on power down sinceenable()won't work otherwise.
- Dropdevm_free_irq()handled by the device driver core
- Disable tx esc clock after the phy power down to unbreak disable/enable (unblank/blank)
- Add ports to dt binding docs
- SelectGENERIC_PHY_MIPI_DPHYinstead ofGENERIC_PHYforphy_mipi_dphy_get_default_config
- SelectDRM_MIPI_DSI
- Includedrm_print.hto fix build on next-20190408
- Drop some debugging messages
- Newline terminate allDRM_printouts
- Turn component driver into a drm bridge[0]: https://lists.freedesktop.org/archives/dri-devel/2019-May/219484.html
[1]: https://patchwork.freedesktop.org/series/62822/Guido Günther (2):
dt-bindings: display/bridge: Add binding for NWL mipi dsi host
controller
drm/bridge: Add NWL MIPI DSI host controller support
Quoted 18 lines
.../bindings/display/bridge/nwl-dsi.yaml | 203 +++ drivers/gpu/drm/bridge/Kconfig | 16 + drivers/gpu/drm/bridge/Makefile | 3 + drivers/gpu/drm/bridge/nwl-dsi.c | 1235 +++++++++++++++++ drivers/gpu/drm/bridge/nwl-dsi.h | 144 ++ 5 files changed, 1601 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/nwl-dsi.yaml create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.c create mode 100644 drivers/gpu/drm/bridge/nwl-dsi.hSignature · 7 lines
2.23.0.rc1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel