Re: [PATCH v4 2/3] dt-bindings: display: panel: Add binding document for Leadtek LTK500HD1829
On Tue, 24 Dec 2019 12:26:40 +0100, Heiko Stuebner wrote: > From: Heiko Stuebner > > The LTK500HD1829 is a 5.0" 720x1280 DSI display. > > changes in v2: > - fix id (Maxime) > - drop port (Maxime) > > Signed-off-by: Heiko Stuebner > Acked-by: Maxime Ripard > --- > .../display/panel/leadtek,ltk500hd1829.yaml | 47 +++ > 1 file changed, 47 insertions(+) > create mode 100644 > Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml > Reviewed-by: Rob Herring ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v4 1/3] dt-bindings: Add vendor prefix for Leadtek Technology
On Tue, 24 Dec 2019 12:26:39 +0100, Heiko Stuebner wrote: > From: Heiko Stuebner > > Shenzhen Leadtek Technology Co., Ltd. produces for example display > and touch panels. > > Signed-off-by: Heiko Stuebner > --- > Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ > 1 file changed, 2 insertions(+) > Acked-by: Rob Herring ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v5 3/5] dt-bindings: display: ti, j721e-dss: Add dt-schema yaml binding
On Fri, 20 Dec 2019 17:55:11 +0200, Jyri Sarha wrote: > Add dt-schema yaml bindig for J721E DSS, J721E version TI Keystone > Display SubSystem. > > Version history: > > v2: no change > > v3: - reg-names: "wp" -> "wb" > - Add ports node > - Add includes to dts example > - reindent dts example > > v4: - Add descriptions to reg, clocks, and interrups properties > - Remove minItems when its value is the same as maxItems value > > v5: - itemize reg, clocks and interrupts properties' descriptions > - there is no "vp" reg-name, only "wb" for write back > > Signed-off-by: Jyri Sarha > --- > .../bindings/display/ti/ti,j721e-dss.yaml | 208 ++ > 1 file changed, 208 insertions(+) > create mode 100644 > Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml > Reviewed-by: Rob Herring ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v5 2/5] dt-bindings: display: ti, am65x-dss: Add dt-schema yaml binding
On Fri, 20 Dec 2019 17:55:10 +0200, Jyri Sarha wrote: > Add dt-schema yaml bindig for AM65x DSS, AM65x version TI Keystone > Display SubSystem. > > Version history: > > v2: no change > > v3: - Add ports node > - use allOf in ti,am65x-oldi-io-ctrl to add both $ref and maxItems > - Add includes to dts example > - reindent dts example > > v4: - Add descriptions to reg and clocks properties > - Remove minItems when its value is the same as maxItems value > > v5: - itemize reg and clocks properties' descriptions > > Signed-off-by: Jyri Sarha > --- > .../bindings/display/ti/ti,am65x-dss.yaml | 152 ++ > 1 file changed, 152 insertions(+) > create mode 100644 > Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > Reviewed-by: Rob Herring ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v5 1/5] dt-bindings: display: ti,k2g-dss: Add dt-schema yaml binding
On Fri, 20 Dec 2019 17:55:09 +0200, Jyri Sarha wrote: > Add dt-schema yaml bindig for K2G DSS, an ultra-light version of TI > Keystone Display SubSystem. > > Version history: > > v2: no change > > v3: - Add ports node > - Add includes to dts example > - reindent dts example > > v4: - Add descriptions to reg and clocks properties > - Remove minItems when its value is the same as maxItems value > - Remove ports node > > v5: - itemize reg and clocks properties' descriptions > > Signed-off-by: Jyri Sarha > --- > .../bindings/display/ti/ti,k2g-dss.yaml | 109 ++ > 1 file changed, 109 insertions(+) > create mode 100644 > Documentation/devicetree/bindings/display/ti/ti,k2g-dss.yaml > Reviewed-by: Rob Herring ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH 1/2] dt-bindings: display: bridge: Add documentation for Toshiba tc358768
On Tue, Dec 17, 2019 at 12:15:05PM +0200, Peter Ujfalusi wrote: > TC358768/TC358778 is a Parallel RGB to MIPI DSI bridge. > > Signed-off-by: Peter Ujfalusi > --- > .../display/bridge/toshiba,tc358768.yaml | 158 ++ > 1 file changed, 158 insertions(+) > create mode 100644 > Documentation/devicetree/bindings/display/bridge/toshiba,tc358768.yaml > > diff --git > a/Documentation/devicetree/bindings/display/bridge/toshiba,tc358768.yaml > b/Documentation/devicetree/bindings/display/bridge/toshiba,tc358768.yaml > new file mode 100644 > index ..8f96867caca0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/bridge/toshiba,tc358768.yaml > @@ -0,0 +1,158 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/bridge/toshiba,tc358768.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Toschiba TC358768/TC358778 Parallel RGB to MIPI DSI bridge > + > +maintainers: > + - Peter Ujfalusi > + > +description: | > + The TC358768/TC358778 is bridge device which converts RGB to DSI. > + > +properties: > + compatible: > +enum: > + - toshiba,tc358768 > + - toshiba,tc358778 > + > + reg: > +maxItems: 1 > +description: base I2C address of the device > + > + reset-gpios: > +maxItems: 1 > +description: GPIO connected to active low RESX pin > + > + vddc-supply: > +maxItems: 1 Drop this. Not an array. *-supply doesn't need further constraints. > +description: Regulator for 1.2V internal core power. > + > + vddmipi-supply: > +maxItems: 1 > +description: Regulator for 1.2V for the MIPI. > + > + vddio-supply: > +maxItems: 1 > +description: Regulator for 1.8V - 3.3V IO power. Blank line here. > + clocks: > +maxItems: 1 > + > + clock-names: > +const: refclk > + > + ports: > +type: object > + > +properties: > + "#address-cells": > +const: 1 > + > + "#size-cells": > +const: 0 > + > + port@0: > +type: object > +additionalProperties: false > + > +description: | > + Video port for RGB input > + > +properties: > + reg: > +const: 0 > + > +patternProperties: > + endpoint: > +type: object > +additionalProperties: false > + > +properties: > + data-lines: > +enum: [ 16, 18, 24 ] > + > + remote-endpoint: true > + > +required: > + - reg > + > + port@1: > +type: object > +description: | > + Video port for DSI output (panel or connector). > + > +properties: > + reg: > +const: 1 > + > +patternProperties: > + endpoint: > +type: object > +additionalProperties: false > + > +properties: > + remote-endpoint: true > + > +required: > + - reg No additionalProperties on this one? > + > +required: > + - "#address-cells" > + - "#size-cells" > + - port@0 > + - port@1 > + > +required: > + - compatible > + - reg > + - vddc-supply > + - vddmipi-supply > + - vddio-supply > + - ports > + > +additionalProperties: false > + > +examples: > + - | > +i2c1 { > + #address-cells = <1>; > + #size-cells = <0>; > + > + dsi_bridge: tc358768@0e { > +compatible = "toshiba,tc358768"; > +reg = <0x0e>; > + > +clocks = <&tc358768_refclk>; > +clock-names = "refclk"; > + > +/* GPIO line is inverted before going to the bridge */ > +reset-gpios = <&pcf_display_board 0 1 /* GPIO_ACTIVE_LOW */>; > + > +vddc-supply = <&v1_2d>; > +vddmipi-supply = <&v1_2d>; > +vddio-supply = <&v3_3d>; > + > +dsi_bridge_ports: ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > +reg = <0>; > +rgb_in: endpoint { > + remote-endpoint = <&dpi_out>; > + data-lines = <24>; > +}; > + }; > + > + port@1 { > +reg = <1>; > +dsi_out: endpoint { > + remote-endpoint = <&lcd_in>; > +}; > + }; > +}; > + }; > +}; > + > -- > Peter > > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. > Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[Bug 205979] New: [amdgpu] Vega10 forcing power_dpm_force_performance_level to "high" or "profile_peak", followed by "auto", "low", or "profile_min_mclk" has memory clock stuck at max state
https://bugzilla.kernel.org/show_bug.cgi?id=205979 Bug ID: 205979 Summary: [amdgpu] Vega10 forcing power_dpm_force_performance_level to "high" or "profile_peak", followed by "auto", "low", or "profile_min_mclk" has memory clock stuck at max state Product: Drivers Version: 2.5 Kernel Version: 5.4.6-gentoo Hardware: All OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Video(DRI - non Intel) Assignee: drivers_video-...@kernel-bugs.osdl.org Reporter: stefansp...@gmail.com Regression: No Memory can only be brought back to lower clocks when setting power_dpm_force_performance_level to "manual" and forcing a lower socclk state eg. "2" in pp_dpm_socclk or by rebooting. -- You are receiving this mail because: You are watching the assignee of the bug. ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[Bug 205977] New: [amdgpu] Vega10 dpm defaults cause card to overvolt and overboost
https://bugzilla.kernel.org/show_bug.cgi?id=205977 Bug ID: 205977 Summary: [amdgpu] Vega10 dpm defaults cause card to overvolt and overboost Product: Drivers Version: 2.5 Kernel Version: 5.4.6-gentoo Hardware: All OS: Linux Tree: Mainline Status: NEW Severity: high Priority: P1 Component: Video(DRI - non Intel) Assignee: drivers_video-...@kernel-bugs.osdl.org Reporter: stefansp...@gmail.com Regression: No On a Vega 64 with completely stock settings, boost clocks of 1800mhz+ can be observed when running Minecraft with shader mod or Outward (DXVK) or any OpenCL workload, sometimes leading to driver crashes. When no changes to overdrive settings are made, AVFS will also overvolt the card accordingly (I've seen up to 1.35V Vcore). This can potentially damage the hardware. When disabling AVFS through enabling ppfeaturemask=fffd7fff and using a custom pp_table, the max voltage of 1.2V is respected, but the core clocks are still exceeded like before. But there is a workaround: pp_table + echoing "profile_peak" or "high" to "power_dpm_force_performance_level", leads to max clocks AND voltages being respected. Even when setting it to "auto" afterwards. Maybe this points to where to look for the bug. This is also an issue under Windows, so hopefully resolving this bug on Linux will also lead to a fix on that platform (I figure, there is some code sharing, considering I get the same behavior on both). This behaviour is present since the launch of Vega. -- You are receiving this mail because: You are watching the assignee of the bug. ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v22 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
Hi Enric, Note that this series is marked as v22, but it's really the 23th. Some minor comments below, it's looking really now. Reviewed-by: Ezequiel Garcia On Mon, 2019-12-23 at 15:35 +0100, Enric Balletbo i Serra wrote: > From: Jitao Shi > > This patch adds drm_bridge driver for parade DSI to eDP bridge chip. > > Signed-off-by: Jitao Shi > Reviewed-by: Daniel Kurtz > [uli: followed API changes, removed FW update feature] > Signed-off-by: Ulrich Hecht > Signed-off-by: Enric Balletbo i Serra > Tested-by: Hsin-Yi Wang > --- > One of the reviews from Laurent was to use 'i2c_new_ancillary_device'. I > didn't change this for two reasons. > 1) It doesn't have a devm version, so the remove path is more simple > using the devm_i2c_new_dummy_device family. > 2) IIUC the ancillary function is useful when you want to retrieve the > address from the firmware or DT, that's not really the case here, as we > have a base address and fixed offset to the base address which I think > is not configurable. > > Let me know if you still think that I should use the ancillary call. > > Changes in v23: > - Merge mute/unmute functions into one (Nicolas Boichat) > - Use enum for ENABLE/DISABLE instead of bool (Ezequiel Garcia) > - Rename mute/unmute to vdo_control and fix error messages (Nicolas Boichat > and Enric) > - Add space between address and address parameter 'address%02x' (Nicolas > Boichat) > - Add Tested-by Hsin-Yi > - Added me as author after the refactor > > Changes in v22: > - Remove sysfs attributes because are not really used (Enric Balletbo) > - Use enum for address page offsets (Ezequiel Garcia) > - Remove enable tracking (Enric Balletbo) > - Use panel_bridge API (Laurent Pinchart) > - Do not use kernel-doc format for non kernel-doc formatted commands (Enric > Balletbo) > - Remove verbose message for PAGE1_VSTART command (Ezequiel Garcia) > - Use time_is_after_jiffies idiom (Ezequiel Garcia) > - Remove unused macros (Ezequiel Garcia) > - Fix weird alignment in dsi->mode_flags (Laurent Pinchart) > - Use drm_of_find_panel_or_bridge helper (Laurent Pinchart) > - Remove mode-sel-gpios as is not used (Laurent Pinchart) > - Remove error messages to get gpios as the core will already report it > (Enric Balletbo) > - Remove redundant message getting the regulators (Laurent Pinchart) > - Rename sleep-gpios to powerdown-gpios (Laurent Pinchart) > - Use ARRAY_SIZE(ps_bridge->page) instead of MAX_DEV when possible (Laurent > Pinchart) > - Fix race with userspace accessing the sysfs attributes (Laurent Pinchart) > - Remove id_table as is only used on DR platforms (Laurent Pinchart) > - Convert to new i2c device probe() (Laurent Pinchart) > - Use i2c_smbus_read/write helpers instead of open coding it (Laurent > Pinchart) > - Remove unnused global variables (Laurent Pinchart) > - Remove unnused fields in ps8640 struct (Laurent Pinchart) > - Remove commented-out headers (Laurent Pinchart) > > Changes in v21: > - Use devm_i2c_new_dummy_device and fix build issue using deprecated > i2c_new_dummy > - Fix build issue due missing drm_bridge.h > - Do not remove in ps8640_remove device managed resources > > Changes in v19: > - fixed return value of ps8640_probe() when no panel is found > > Changes in v18: > - followed DRM API changes > - use DEVICE_ATTR_RO() > - remove firmware update code > - add SPDX identifier > > Changes in v17: > - remove some unused head files. > - add macros for ps8640 pages. > - remove ddc_i2c client > - add mipi_dsi_device_register_full > - remove the manufacturer from the name and i2c_device_id > > Changes in v16: > - Disable ps8640 DSI MCS Function. > - Rename gpios name more clearly. > - Tune the ps8640 power on sequence. > > Changes in v15: > - Drop drm_connector_(un)register calls from parade ps8640. >The main DRM driver mtk_drm_drv now calls >drm_connector_register_all() after drm_dev_register() in the >mtk_drm_bind() function. That function should iterate over all >connectors and call drm_connector_register() for each of them. >So, remove drm_connector_(un)register calls from parade ps8640. > > Changes in v14: > - update copyright info. > - change bridge_to_ps8640 and connector_to_ps8640 to inline function. > - fix some coding style. > - use sizeof as array counter. > - use drm_get_edid when read edid. > - add mutex when firmware updating. > > Changes in v13: > - add const on data, ps8640_write_bytes(struct i2c_client *client, const u8 > *data, u16 data_len) > - fix PAGE2_SW_REST tyro. > - move the buf[3] init to entrance of the function. > > Changes in v12: > - fix hw_chip_id build warning > > Changes in v11: > - Remove depends on I2C, add DRM depends > - Reuse ps8640_write_bytes() in ps8640_write_byte() > - Use timer check for polling like the routines in > - Fix no drm_connector_unregister/drm_connector_cleanup when > ps8640_bridge_attach fail > - Check the ps8640 hardware id in ps8640_validate_firmware > - Remove f
Re: [Regression drm-tip] Internal audio device missing
On Thu, 26 Dec 2019 15:41:34 +0100, Paul Menzel wrote: > > Dear Takashi, > > > Am 26.12.19 um 11:03 schrieb Takashi Iwai: > > On Thu, 26 Dec 2019 10:47:18 +0100, Paul Menzel wrote: > > >> With > >> > >> $ git describe --tags drm-tip/drm-tip > >> v5.5-rc3-1481-ga20d8cd6901a > >> > >> the internal audio device is not available, and just a dummy device. > >> > >> Running `alsa-info.sh` [1], the messages below are shown with the > >> problematic Linux kernel. > >> > >> alsactl: get_controls:567: snd_ctl_open error: Sound protocol is > >> not compatible > >> cat: /tmp/alsa-info.ateDlDjrZX/alsactl.tmp: No such file or directory > > > > That's an unexpected side-effect of the recent protocol version bump > > in sound.git for-next branch. It seems that we can't change the minor > > version unless we really want to break something. > > > > Below is the fix patch. Please give it a try. > > Thank you for the quick reply and fix. > > > -- 8< -- > > From: Takashi Iwai > > Subject: [PATCH] ALSA: control: Fix incompatible protocol error > > > > The recent change to bump the ALSA control API protocol version from > > 2.0.7 to 2.1.0 caused a regression on user-space; while the user-space > > expects both the major and the minor versions to be identical with the > > supported numbers, we changed the minor number from 0 to 1. > > > > For recovering from the incompatibility, this patch changes the > > protocol version again to 2.0.8, which is compatible, but yet higher > > than the original number 2.0.7, indicating that the protocol change. > > > > Fixes: bd3eb4e87eb3 ("ALSA: ctl: bump protocol version up to v2.1.0") > > Reported-by: Paul Menzel > > Signed-off-by: Takashi Iwai > > --- > > include/uapi/sound/asound.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h > > index e36dadaf84ba..30ebb2a42983 100644 > > --- a/include/uapi/sound/asound.h > > +++ b/include/uapi/sound/asound.h > > @@ -936,7 +936,7 @@ struct snd_timer_tread { > >* > > * > > > > / > > -#define SNDRV_CTL_VERSIONSNDRV_PROTOCOL_VERSION(2, 1, > > 0) > > +#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8) > > struct snd_ctl_card_info { > > int card; /* card number */ > > > > Tested-by: Paul Menzel > > Are there CI systems, which should have caught this problem? > > Which user-space component should forward this problem to the user > (desktop environment displaying a warning)? Unfortunately no -- I'd love to have it, though. I usually test and push more carefully, but it was a bit rush before the holidays :) Now merged and pushed out. thanks, Takashi ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH] drm/dp_mst: Avoid NULL pointer dereference
[AMD Official Use Only - Internal Distribution Only] Thanks for the catch, Reviewed-by: Mikita Lipski From: Wayne Lin Sent: Wednesday, December 25, 2019 9:31 PM To: dri-devel@lists.freedesktop.org ; amd-...@lists.freedesktop.org Cc: ly...@redhat.com ; Kazlauskas, Nicholas ; Wentland, Harry ; Lipski, Mikita ; Zuo, Jerry ; sta...@vger.kernel.org ; Lin, Wayne Subject: [PATCH] drm/dp_mst: Avoid NULL pointer dereference [Why] Found kernel NULL pointer dereference under the below situation: src — HDMI_Monitor src — HDMI_Monitor e.g.: \=> MSTB — MSTB (unplug) MSTB — MSTB When display 1 HDMI and 2 DP daisy chain monitors, unplugging the dp cable connected to source causes kernel NULL pointer dereference at drm_dp_mst_atomic_check_bw_limit(). When calculating pbn_limit, if branch is null, accessing "&branch->ports" causes the problem. [How] Judge branch is null or not at the beginning. If it is null, return 0. Signed-off-by: Wayne Lin Cc: sta...@vger.kernel.org --- drivers/gpu/drm/drm_dp_mst_topology.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 7d2d31eaf003..a6473e3ab448 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -4707,6 +4707,9 @@ int drm_dp_mst_atomic_check_bw_limit(struct drm_dp_mst_branch *branch, struct drm_dp_vcpi_allocation *vcpi; int pbn_limit = 0, pbn_used = 0; + if (!branch) + return 0; + list_for_each_entry(port, &branch->ports, next) { if (port->mstb) if (drm_dp_mst_atomic_check_bw_limit(port->mstb, mst_state)) -- 2.17.1 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: KASAN: use-after-free Read in fb_mode_is_equal
syzbot has bisected this bug to: commit 13ff178ccd6d3b8074c542a911300b79c4eec255 Author: Daniel Vetter Date: Tue May 28 09:02:53 2019 + fbcon: Call fbcon_mode_deleted/new_modelist directly bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1737c63ee0 start commit: 46cf053e Linux 5.5-rc3 git tree: upstream final crash:https://syzkaller.appspot.com/x/report.txt?x=14b7c63ee0 console output: https://syzkaller.appspot.com/x/log.txt?x=10b7c63ee0 kernel config: https://syzkaller.appspot.com/x/.config?x=ed9d672709340e35 dashboard link: https://syzkaller.appspot.com/bug?extid=f11cda116c57db68c227 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=12bf72c6e0 Reported-by: syzbot+f11cda116c57db68c...@syzkaller.appspotmail.com Fixes: 13ff178ccd6d ("fbcon: Call fbcon_mode_deleted/new_modelist directly") For information about bisection process see: https://goo.gl/tpsmEJ#bisection ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH] drm/radeon: remove three set but not used variable
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/radeon/radeon_atombios.c: In function ‘radeon_get_atom_connector_info_from_object_table’: drivers/gpu/drm/radeon/radeon_atombios.c:651:26: warning: variable ‘grph_obj_num’ set but not used [-Wunused-but-set-variable] drivers/gpu/drm/radeon/radeon_atombios.c:651:13: warning: variable ‘grph_obj_id’ set but not used [-Wunused-but-set-variable] drivers/gpu/drm/radeon/radeon_atombios.c:573:37: warning: variable ‘con_obj_type’ set but not used [-Wunused-but-set-variable] They are never used, and so can be removed. Signed-off-by: yu kuai --- drivers/gpu/drm/radeon/radeon_atombios.c | 15 ++- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 072e6daedf7a..848ef68d9086 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c @@ -570,7 +570,7 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) path_size += le16_to_cpu(path->usSize); if (device_support & le16_to_cpu(path->usDeviceTag)) { - uint8_t con_obj_id, con_obj_num, con_obj_type; + uint8_t con_obj_id, con_obj_num; con_obj_id = (le16_to_cpu(path->usConnObjectId) & OBJECT_ID_MASK) @@ -578,9 +578,6 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) con_obj_num = (le16_to_cpu(path->usConnObjectId) & ENUM_ID_MASK) >> ENUM_ID_SHIFT; - con_obj_type = - (le16_to_cpu(path->usConnObjectId) & -OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT; /* TODO CV support */ if (le16_to_cpu(path->usDeviceTag) == @@ -648,15 +645,7 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) router.ddc_valid = false; router.cd_valid = false; for (j = 0; j < ((le16_to_cpu(path->usSize) - 8) / 2); j++) { - uint8_t grph_obj_id, grph_obj_num, grph_obj_type; - - grph_obj_id = - (le16_to_cpu(path->usGraphicObjIds[j]) & -OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; - grph_obj_num = - (le16_to_cpu(path->usGraphicObjIds[j]) & -ENUM_ID_MASK) >> ENUM_ID_SHIFT; - grph_obj_type = + uint8_t grph_obj_type = (le16_to_cpu(path->usGraphicObjIds[j]) & OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT; -- 2.17.2 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[Regression drm-tip] Internal audio device missing
Dear Linux folks, With $ git describe --tags drm-tip/drm-tip v5.5-rc3-1481-ga20d8cd6901a the internal audio device is not available, and just a dummy device. Running `alsa-info.sh` [1], the messages below are shown with the problematic Linux kernel. alsactl: get_controls:567: snd_ctl_open error: Sound protocol is not compatible cat: /tmp/alsa-info.ateDlDjrZX/alsactl.tmp: No such file or directory Please find the output of `alsa-info.sh` with Linux 5.5-rc3 and drm-tip attached. Kind regards, Paul [1]: https://www.alsa-project.org/alsa-info.sh upload=true&script=true&cardinfo= !! !!ALSA Information Script v 0.4.64 !! !!Script ran on: Thu Dec 26 09:26:49 UTC 2019 !!Linux Distribution !!-- Debian GNU/Linux bullseye/sid \n \l PRETTY_NAME="Debian GNU/Linux bullseye/sid" NAME="Debian GNU/Linux" ID=debian HOME_URL="https://www.debian.org/"; SUPPORT_URL="https://www.debian.org/support"; BUG_REPORT_URL="https://bugs.debian.org/"; !!DMI Information !!--- Manufacturer: Micro-Star International Co., Ltd. Product Name: MS-7A37 Product Version: 1.0 Firmware Version: 1.MR Board Vendor: MSI Board Name:B350M MORTAR (MS-7A37) !!ACPI Device Status Information !!--- /sys/bus/acpi/devices/AMDI0030:00/status 15 /sys/bus/acpi/devices/AMDIF030:00/status 15 /sys/bus/acpi/devices/LNXVIDEO:01/status 15 /sys/bus/acpi/devices/PNP0103:00/status 15 /sys/bus/acpi/devices/PNP0501:00/status 15 /sys/bus/acpi/devices/PNP0A08:00/status 15 /sys/bus/acpi/devices/PNP0C01:00/status 15 /sys/bus/acpi/devices/PNP0C02:02/status 15 /sys/bus/acpi/devices/PNP0C02:04/status 15 /sys/bus/acpi/devices/PNP0C0C:00/status 11 /sys/bus/acpi/devices/PNP0C0F:00/status 11 /sys/bus/acpi/devices/PNP0C0F:01/status 11 /sys/bus/acpi/devices/PNP0C0F:02/status 11 /sys/bus/acpi/devices/PNP0C0F:03/status 11 /sys/bus/acpi/devices/PNP0C0F:04/status 11 /sys/bus/acpi/devices/PNP0C0F:05/status 11 /sys/bus/acpi/devices/PNP0C0F:06/status 11 /sys/bus/acpi/devices/PNP0C0F:07/status 11 /sys/bus/acpi/devices/device:11/status 11 /sys/bus/acpi/devices/device:12/status 11 /sys/bus/acpi/devices/device:23/status 15 !!Kernel Information !!-- Kernel release:5.5.0-rc3-01525-gf5797232f233 Operating System: GNU/Linux Architecture: x86_64 Processor: unknown SMP Enabled: Yes !!ALSA Version !! Driver version: k5.5.0-rc3-01525-gf5797232f233 Library version:1.1.9 Utilities version: 1.1.9 !!Loaded ALSA modules !!--- snd_hda_intel snd_hda_intel !!Sound Servers on this system !! Pulseaudio: Installed - Yes (/usr/bin/pulseaudio) Running - Yes !!Soundcards recognised by ALSA !!- 0 [Generic]: HDA-Intel - HD-Audio Generic HD-Audio Generic at 0xfcc88000 irq 54 1 [Generic_1 ]: HDA-Intel - HD-Audio Generic HD-Audio Generic at 0xfcc8 irq 55 !!PCI Soundcards installed in the system !!-- 26:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller 26:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller !!Advanced information - PCI Vendor/Device/Subsystem ID's !!--- 26:00.1 0403: 1002:15de Subsystem: 1002:15de -- 26:00.6 0403: 1022:15e3 Subsystem: 1462:fa37 !!Modprobe options (Sound related) !! snd_pcsp: index=-2 snd_usb_audio: index=-2 snd_atiixp_modem: index=-2 snd_intel8x0m: index=-2 snd_via82xx_modem: index=-2 !!Loaded sound module options !!--- !!Module: snd_hda_intel align_buffer_size : -1 bdl_pos_adj : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 beep_mode : N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N dsp_driver : Y enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 jackpoll_ms : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 model : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(
[PATCH] drm/bridge: cdns: remove set but not used variable 'nlanes'
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/bridge/cdns-dsi.c: In function ‘cdns_dsi_mode2cfg’: drivers/gpu/drm/bridge/cdns-dsi.c:515:11: warning: variable ‘nlanes’ set but not used [-Wunused-but-set-variable] It is never used, and so can be removed. Signed-off-by: yu kuai --- drivers/gpu/drm/bridge/cdns-dsi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c index 3a5bd4e7fd1e..a6ab2d281a9b 100644 --- a/drivers/gpu/drm/bridge/cdns-dsi.c +++ b/drivers/gpu/drm/bridge/cdns-dsi.c @@ -512,7 +512,7 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, struct cdns_dsi_output *output = &dsi->output; unsigned int tmp; bool sync_pulse = false; - int bpp, nlanes; + int bpp; memset(dsi_cfg, 0, sizeof(*dsi_cfg)); @@ -520,7 +520,6 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, sync_pulse = true; bpp = mipi_dsi_pixel_format_to_bpp(output->dev->format); - nlanes = output->dev->lanes; if (mode_valid_check) tmp = mode->htotal - -- 2.17.2 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH] drm/v3d: remove duplicated kfree in v3d_submit_cl_ioctl
v3d_submit_cl_ioctl call kfree() with variable 'bin' twice. Fix it by removing the latter one. Signed-off-by: yu kuai --- drivers/gpu/drm/v3d/v3d_gem.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c index 549dde83408b..37515e47b47e 100644 --- a/drivers/gpu/drm/v3d/v3d_gem.c +++ b/drivers/gpu/drm/v3d/v3d_gem.c @@ -568,7 +568,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data, ret = v3d_job_init(v3d, file_priv, &bin->base, v3d_job_free, args->in_sync_bcl); if (ret) { - kfree(bin); v3d_job_put(&render->base); kfree(bin); return ret; -- 2.17.2 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH] drm: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
no functional change, just to make the code simpler Signed-off-by: yu kuai --- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 5 + drivers/gpu/drm/omapdrm/dss/hdmi4_core.c| 6 ++ drivers/gpu/drm/omapdrm/dss/hdmi5_core.c| 4 +--- drivers/gpu/drm/omapdrm/dss/hdmi_phy.c | 4 +--- drivers/gpu/drm/sun4i/sun4i_dotclock.c | 4 +--- drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c | 4 +--- drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c | 4 +--- drivers/gpu/drm/sun4i/sun8i_hdmi_phy_clk.c | 5 + drivers/gpu/drm/tegra/drm.c | 4 +--- drivers/gpu/drm/tegra/gem.c | 4 +--- 10 files changed, 11 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c index 0f557fad4513..eb71baedf19e 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c @@ -587,10 +587,7 @@ static int hdmi_audio_register(struct omap_hdmi *hdmi) &hdmi->pdev->dev, "omap-hdmi-audio", PLATFORM_DEVID_AUTO, &pdata, sizeof(pdata)); - if (IS_ERR(hdmi->audio_pdev)) - return PTR_ERR(hdmi->audio_pdev); - - return 0; + return PTR_ERR_OR_ZERO(hdmi->audio_pdev); } /* - diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4_core.c b/drivers/gpu/drm/omapdrm/dss/hdmi4_core.c index ea5d5c228534..fdd73fb73653 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi4_core.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4_core.c @@ -924,8 +924,6 @@ int hdmi4_core_init(struct platform_device *pdev, struct hdmi_core_data *core) res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "core"); core->base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(core->base)) - return PTR_ERR(core->base); - - return 0; + + return PTR_ERR_OR_ZERO(core->base); } diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c index ff4d35c8771f..30454bc9de78 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5_core.c @@ -908,8 +908,6 @@ int hdmi5_core_init(struct platform_device *pdev, struct hdmi_core_data *core) res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "core"); core->base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(core->base)) - return PTR_ERR(core->base); - return 0; + return PTR_ERR_OR_ZERO(core->base); } diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi_phy.c b/drivers/gpu/drm/omapdrm/dss/hdmi_phy.c index 00bbf24488c1..bbc02d5aa8fb 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi_phy.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi_phy.c @@ -191,8 +191,6 @@ int hdmi_phy_init(struct platform_device *pdev, struct hdmi_phy_data *phy, res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy"); phy->base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(phy->base)) - return PTR_ERR(phy->base); - return 0; + return PTR_ERR_OR_ZERO(phy->base); } diff --git a/drivers/gpu/drm/sun4i/sun4i_dotclock.c b/drivers/gpu/drm/sun4i/sun4i_dotclock.c index 417ade3d2565..84c04d8192b3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_dotclock.c +++ b/drivers/gpu/drm/sun4i/sun4i_dotclock.c @@ -191,10 +191,8 @@ int sun4i_dclk_create(struct device *dev, struct sun4i_tcon *tcon) dclk->hw.init = &init; tcon->dclk = clk_register(dev, &dclk->hw); - if (IS_ERR(tcon->dclk)) - return PTR_ERR(tcon->dclk); - return 0; + return PTR_ERR_OR_ZERO(tcon->dclk); } EXPORT_SYMBOL(sun4i_dclk_create); diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c index b66fa27fe6ea..12a7b7b1c99c 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c @@ -278,10 +278,8 @@ static int sun4i_hdmi_init_regmap_fields(struct sun4i_hdmi *hdmi) hdmi->field_ddc_sck_en = devm_regmap_field_alloc(hdmi->dev, hdmi->regmap, hdmi->variant->field_ddc_sck_en); - if (IS_ERR(hdmi->field_ddc_sck_en)) - return PTR_ERR(hdmi->field_ddc_sck_en); - return 0; + return PTR_ERR_OR_ZERO(hdmi->field_ddc_sck_en); } int sun4i_hdmi_i2c_create(struct device *dev, struct sun4i_hdmi *hdmi) diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c index fbf7da9d9592..41044f013933 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_tmds_clk.c @@ -229,8 +229,6 @@ int sun4i_tmds_create(struct sun4i_hdmi *hdmi) tmds->div_offset = hdmi->variant->tmds_clk_div_offset; hdmi->tmds_clk = devm_clk_register(hdmi->dev, &tmds->hw); - if (IS_ERR(hdmi->tmds_clk)) - return PTR_ERR(hdmi->tmds_clk); -
[PATCH] drm/bridge: cdns: remove set but not used variable 'bpp'
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/bridge/cdns-dsi.c: In function ‘cdns_dsi_bridge_enable’: drivers/gpu/drm/bridge/cdns-dsi.c:788:6: warning: variable ‘bpp’ set but not used [-Wunused-but-set-variable] It is never used, and so can be removed. Signed-off-by: yu kuai --- drivers/gpu/drm/bridge/cdns-dsi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c index a6ab2d281a9b..b7c97f060241 100644 --- a/drivers/gpu/drm/bridge/cdns-dsi.c +++ b/drivers/gpu/drm/bridge/cdns-dsi.c @@ -784,13 +784,12 @@ static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) unsigned long tx_byte_period; struct cdns_dsi_cfg dsi_cfg; u32 tmp, reg_wakeup, div; - int bpp, nlanes; + int nlanes; if (WARN_ON(pm_runtime_get_sync(dsi->base.dev) < 0)) return; mode = &bridge->encoder->crtc->state->adjusted_mode; - bpp = mipi_dsi_pixel_format_to_bpp(output->dev->format); nlanes = output->dev->lanes; WARN_ON_ONCE(cdns_dsi_check_conf(dsi, mode, &dsi_cfg, false)); -- 2.17.2 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v22 1/2] Documentation: bridge: Add documentation for ps8640 DT properties
Hi Enric, Rob, On Mon, 2019-12-23 at 15:35 +0100, Enric Balletbo i Serra wrote: > From: Jitao Shi > > Add documentation for DT properties supported by > ps8640 DSI-eDP converter. > > Signed-off-by: Jitao Shi > Acked-by: Rob Herring > Reviewed-by: Philipp Zabel > Signed-off-by: Ulrich Hecht > Signed-off-by: Enric Balletbo i Serra [..] > + > + ports: > +type: object > +description: > + A node containing DSI input & output port nodes with endpoint > + definitions as documented in > + Documentation/devicetree/bindings/media/video-interfaces.txt > + Documentation/devicetree/bindings/graph.txt > +properties: > + port@0: > +type: object > +description: | > + Video port for DSI input > + > + port@1: > +type: object > +description: | > + Video port for eDP output (panel or connector). > + > +required: > + - port@0 > + Is it correct to require port@0 ? This could be called port@1 or port@2, and IIUC it should bind the same. Thanks, Ezequiel > +required: > + - compatible > + - reg > + - powerdown-gpios > + - reset-gpios > + - vdd12-supply > + - vdd33-supply > + - ports > + > +additionalProperties: false > + > +examples: > + - | > +#include > +i2c0 { > +#address-cells = <1>; > +#size-cells = <0>; > + > +ps8640: edp-bridge@18 { > +compatible = "parade,ps8640"; > +reg = <0x18>; > +powerdown-gpios = <&pio 116 GPIO_ACTIVE_LOW>; > +reset-gpios = <&pio 115 GPIO_ACTIVE_LOW>; > +vdd12-supply = <&ps8640_fixed_1v2>; > +vdd33-supply = <&mt6397_vgp2_reg>; > + > +ports { > +#address-cells = <1>; > +#size-cells = <0>; > + > +port@0 { > +reg = <0>; > +ps8640_in: endpoint { > +remote-endpoint = <&dsi0_out>; > +}; > +}; > + > +port@1 { > +reg = <1>; > +ps8640_out: endpoint { > +remote-endpoint = <&panel_in>; > + }; > +}; > +}; > +}; > +}; > + > -- > 2.20.1 > > ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [Regression drm-tip] Internal audio device missing
On Thu, 26 Dec 2019 10:47:18 +0100, Paul Menzel wrote: > > Dear Linux folks, > > > With > > $ git describe --tags drm-tip/drm-tip > v5.5-rc3-1481-ga20d8cd6901a > > the internal audio device is not available, and just a dummy device. > > Running `alsa-info.sh` [1], the messages below are shown with the > problematic Linux kernel. > > alsactl: get_controls:567: snd_ctl_open error: Sound protocol is > not compatible > cat: /tmp/alsa-info.ateDlDjrZX/alsactl.tmp: No such file or directory That's an unexpected side-effect of the recent protocol version bump in sound.git for-next branch. It seems that we can't change the minor version unless we really want to break something. Below is the fix patch. Please give it a try. thanks, Takashi -- 8< -- From: Takashi Iwai Subject: [PATCH] ALSA: control: Fix incompatible protocol error The recent change to bump the ALSA control API protocol version from 2.0.7 to 2.1.0 caused a regression on user-space; while the user-space expects both the major and the minor versions to be identical with the supported numbers, we changed the minor number from 0 to 1. For recovering from the incompatibility, this patch changes the protocol version again to 2.0.8, which is compatible, but yet higher than the original number 2.0.7, indicating that the protocol change. Fixes: bd3eb4e87eb3 ("ALSA: ctl: bump protocol version up to v2.1.0") Reported-by: Paul Menzel Signed-off-by: Takashi Iwai --- include/uapi/sound/asound.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h index e36dadaf84ba..30ebb2a42983 100644 --- a/include/uapi/sound/asound.h +++ b/include/uapi/sound/asound.h @@ -936,7 +936,7 @@ struct snd_timer_tread { * * / -#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 1, 0) +#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8) struct snd_ctl_card_info { int card; /* card number */ -- 2.16.4 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v14 0/7] drm/sun4i: Allwinner A64 MIPI-DSI support
On Sun, Dec 22, 2019 at 06:52:22PM +0530, Jagan Teki wrote: > This is v14 version for Allwinner A64 MIPI-DSI support > and here is the previous version set[1] I applied the patches 1 to 6, and fixed checkpatch warnings in the patch 5. Make sure to run it before sending patches. Thanks, Maxime signature.asc Description: PGP signature ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel