Skip to content

Commit f9fa012

Browse files
committed
Merge tag 'drm-misc-next-2025-05-08' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for v6.16-rc1: Cross-subsystem Changes: - Change vsprintf %p4cn to %p4chR, remove %p4cn. Core Changes: - Documentation updates (fb rendering, actual_brightness) Driver Changes: - Small fixes to appletbdrm, panthor, st7571-i2c, rockchip, renesas, panic handler, gpusvm, vkms, panel timings. - Add AUO B140QAN08.H, BOE NE140WUM-N6S, CSW MNE007QS3-8, BOE TD4320 panels. - Convert rk3066_hdmi to bridge driver. - Improve HPD on anx7625. - Speed up loading tegra firmware, and other small fixes to tegra & host1x. Signed-off-by: Dave Airlie <[email protected]> From: Maarten Lankhorst <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2 parents 8066904 + 78184f6 commit f9fa012

38 files changed

+717
-312
lines changed

Documentation/ABI/stable/sysfs-class-backlight

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ Date: March 2006
2626
KernelVersion: 2.6.17
2727
Contact: Richard Purdie <[email protected]>
2828
Description:
29-
Show the actual brightness by querying the hardware.
29+
Show the actual brightness by querying the hardware. Due
30+
to implementation differences in hardware this may not
31+
match the value in 'brightness'. For example some hardware
32+
may treat blanking differently or have custom power saving
33+
features. Userspace should generally use the values in
34+
'brightness' to make decisions.
3035
Users: HAL
3136

3237
What: /sys/class/backlight/<backlight>/max_brightness

Documentation/core-api/printk-formats.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -652,31 +652,31 @@ Generic FourCC code
652652
-------------------
653653

654654
::
655-
%p4c[hnlb] gP00 (0x67503030)
655+
%p4c[h[R]lb] gP00 (0x67503030)
656656

657657
Print a generic FourCC code, as both ASCII characters and its numerical
658658
value as hexadecimal.
659659

660660
The generic FourCC code is always printed in the big-endian format,
661661
the most significant byte first. This is the opposite of V4L/DRM FourCCs.
662662

663-
The additional ``h``, ``n``, ``l``, and ``b`` specifiers define what
663+
The additional ``h``, ``hR``, ``l``, and ``b`` specifiers define what
664664
endianness is used to load the stored bytes. The data might be interpreted
665-
using the host byte order, network byte order, little-endian, or big-endian.
665+
using the host, reversed host byte order, little-endian, or big-endian.
666666

667667
Passed by reference.
668668

669669
Examples for a little-endian machine, given &(u32)0x67503030::
670670

671671
%p4ch gP00 (0x67503030)
672-
%p4cn 00Pg (0x30305067)
672+
%p4chR 00Pg (0x30305067)
673673
%p4cl gP00 (0x67503030)
674674
%p4cb 00Pg (0x30305067)
675675

676676
Examples for a big-endian machine, given &(u32)0x67503030::
677677

678678
%p4ch gP00 (0x67503030)
679-
%p4cn 00Pg (0x30305067)
679+
%p4chR 00Pg (0x30305067)
680680
%p4cl 00Pg (0x30305067)
681681
%p4cb gP00 (0x67503030)
682682

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/display/panel/boe,td4320.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: BOE TD4320 MIPI-DSI panels
8+
9+
maintainers:
10+
- Barnabas Czeman <[email protected]>
11+
12+
description:
13+
BOE TD4320 6.3" 1080x2340 panel found in Xiaomi Redmi Note 7 smartphone.
14+
15+
allOf:
16+
- $ref: panel-common.yaml#
17+
18+
properties:
19+
compatible:
20+
items:
21+
- const: boe,td4320
22+
23+
reg:
24+
maxItems: 1
25+
26+
iovcc-supply:
27+
description: I/O voltage rail
28+
29+
vsn-supply:
30+
description: Negative source voltage rail
31+
32+
vsp-supply:
33+
description: Positive source voltage rail
34+
35+
required:
36+
- compatible
37+
- reg
38+
- reset-gpios
39+
- port
40+
41+
unevaluatedProperties: false
42+
43+
examples:
44+
- |
45+
#include <dt-bindings/gpio/gpio.h>
46+
47+
dsi {
48+
#address-cells = <1>;
49+
#size-cells = <0>;
50+
51+
panel@0 {
52+
compatible = "boe,td4320";
53+
reg = <0>;
54+
backlight = <&backlight>;
55+
reset-gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
56+
57+
port {
58+
panel_in: endpoint {
59+
remote-endpoint = <&dsi_out>;
60+
};
61+
};
62+
};
63+
};
64+
65+
...

Documentation/devicetree/bindings/display/panel/leadtek,ltk050h3146w.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ properties:
2323
maxItems: 1
2424

2525
backlight: true
26+
port: true
2627
reset-gpios: true
2728
iovcc-supply:
2829
description: regulator that supplies the iovcc voltage

Documentation/devicetree/bindings/display/panel/leadtek,ltk500hd1829.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ properties:
2222
maxItems: 1
2323

2424
backlight: true
25+
port: true
2526
reset-gpios: true
2627
iovcc-supply:
2728
description: regulator that supplies the iovcc voltage

Documentation/devicetree/bindings/display/rockchip/rockchip,inno-hdmi.yaml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,11 @@ properties:
2323
maxItems: 1
2424

2525
clocks:
26-
minItems: 1
2726
items:
2827
- description: The HDMI controller main clock
2928
- description: The HDMI PHY reference clock
3029

3130
clock-names:
32-
minItems: 1
3331
items:
3432
- const: pclk
3533
- const: ref
@@ -58,6 +56,12 @@ properties:
5856
- port@0
5957
- port@1
6058

59+
rockchip,grf:
60+
$ref: /schemas/types.yaml#/definitions/phandle
61+
description:
62+
Phandle to GRF used for control the polarity of hsync/vsync of rk3036
63+
HDMI.
64+
6165
required:
6266
- compatible
6367
- reg
@@ -77,6 +81,8 @@ allOf:
7781
const: rockchip,rk3036-inno-hdmi
7882

7983
then:
84+
required:
85+
- rockchip,grf
8086
properties:
8187
power-domains: false
8288

@@ -87,11 +93,6 @@ allOf:
8793
const: rockchip,rk3128-inno-hdmi
8894

8995
then:
90-
properties:
91-
clocks:
92-
minItems: 2
93-
clock-names:
94-
minItems: 2
9596
required:
9697
- power-domains
9798

@@ -106,10 +107,11 @@ examples:
106107
compatible = "rockchip,rk3036-inno-hdmi";
107108
reg = <0x20034000 0x4000>;
108109
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
109-
clocks = <&cru PCLK_HDMI>;
110-
clock-names = "pclk";
110+
clocks = <&cru PCLK_HDMI>, <&cru SCLK_LCDC>;
111+
clock-names = "pclk", "ref";
111112
pinctrl-names = "default";
112113
pinctrl-0 = <&hdmi_ctl>;
114+
rockchip,grf = <&grf>;
113115
#sound-dai-cells = <0>;
114116
115117
ports {

drivers/gpu/drm/bridge/analogix/anx7625.c

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,10 +1257,10 @@ static void anx7625_power_on(struct anx7625_data *ctx)
12571257
usleep_range(11000, 12000);
12581258

12591259
/* Power on pin enable */
1260-
gpiod_set_value(ctx->pdata.gpio_p_on, 1);
1260+
gpiod_set_value_cansleep(ctx->pdata.gpio_p_on, 1);
12611261
usleep_range(10000, 11000);
12621262
/* Power reset pin enable */
1263-
gpiod_set_value(ctx->pdata.gpio_reset, 1);
1263+
gpiod_set_value_cansleep(ctx->pdata.gpio_reset, 1);
12641264
usleep_range(10000, 11000);
12651265

12661266
DRM_DEV_DEBUG_DRIVER(dev, "power on !\n");
@@ -1280,9 +1280,9 @@ static void anx7625_power_standby(struct anx7625_data *ctx)
12801280
return;
12811281
}
12821282

1283-
gpiod_set_value(ctx->pdata.gpio_reset, 0);
1283+
gpiod_set_value_cansleep(ctx->pdata.gpio_reset, 0);
12841284
usleep_range(1000, 1100);
1285-
gpiod_set_value(ctx->pdata.gpio_p_on, 0);
1285+
gpiod_set_value_cansleep(ctx->pdata.gpio_p_on, 0);
12861286
usleep_range(1000, 1100);
12871287

12881288
ret = regulator_bulk_disable(ARRAY_SIZE(ctx->pdata.supplies),
@@ -1814,9 +1814,6 @@ static enum drm_connector_status anx7625_sink_detect(struct anx7625_data *ctx)
18141814

18151815
DRM_DEV_DEBUG_DRIVER(dev, "sink detect\n");
18161816

1817-
if (ctx->pdata.panel_bridge)
1818-
return connector_status_connected;
1819-
18201817
return ctx->hpd_status ? connector_status_connected :
18211818
connector_status_disconnected;
18221819
}
@@ -2475,6 +2472,22 @@ static const struct drm_edid *anx7625_bridge_edid_read(struct drm_bridge *bridge
24752472
return anx7625_edid_read(ctx);
24762473
}
24772474

2475+
static void anx7625_bridge_hpd_enable(struct drm_bridge *bridge)
2476+
{
2477+
struct anx7625_data *ctx = bridge_to_anx7625(bridge);
2478+
struct device *dev = ctx->dev;
2479+
2480+
pm_runtime_get_sync(dev);
2481+
}
2482+
2483+
static void anx7625_bridge_hpd_disable(struct drm_bridge *bridge)
2484+
{
2485+
struct anx7625_data *ctx = bridge_to_anx7625(bridge);
2486+
struct device *dev = ctx->dev;
2487+
2488+
pm_runtime_put_sync(dev);
2489+
}
2490+
24782491
static const struct drm_bridge_funcs anx7625_bridge_funcs = {
24792492
.attach = anx7625_bridge_attach,
24802493
.detach = anx7625_bridge_detach,
@@ -2488,6 +2501,8 @@ static const struct drm_bridge_funcs anx7625_bridge_funcs = {
24882501
.atomic_reset = drm_atomic_helper_bridge_reset,
24892502
.detect = anx7625_bridge_detect,
24902503
.edid_read = anx7625_bridge_edid_read,
2504+
.hpd_enable = anx7625_bridge_hpd_enable,
2505+
.hpd_disable = anx7625_bridge_hpd_disable,
24912506
};
24922507

24932508
static int anx7625_register_i2c_dummy_clients(struct anx7625_data *ctx,
@@ -2585,9 +2600,8 @@ static int anx7625_link_bridge(struct drm_dp_aux *aux)
25852600
platform->bridge.of_node = dev->of_node;
25862601
if (!anx7625_of_panel_on_aux_bus(dev))
25872602
platform->bridge.ops |= DRM_BRIDGE_OP_EDID;
2588-
if (!platform->pdata.panel_bridge)
2589-
platform->bridge.ops |= DRM_BRIDGE_OP_HPD |
2590-
DRM_BRIDGE_OP_DETECT;
2603+
if (!platform->pdata.panel_bridge || !anx7625_of_panel_on_aux_bus(dev))
2604+
platform->bridge.ops |= DRM_BRIDGE_OP_HPD | DRM_BRIDGE_OP_DETECT;
25912605
platform->bridge.type = platform->pdata.panel_bridge ?
25922606
DRM_MODE_CONNECTOR_eDP :
25932607
DRM_MODE_CONNECTOR_DisplayPort;

drivers/gpu/drm/drm_blend.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@
7575
* the currently visible vertical area of the &drm_crtc.
7676
* FB_ID:
7777
* Mode object ID of the &drm_framebuffer this plane should scan out.
78+
*
79+
* When a KMS client is performing front-buffer rendering, it should set
80+
* FB_ID to the same front-buffer FB on each atomic commit. This implies
81+
* to the driver that it needs to re-read the same FB again. Otherwise
82+
* drivers which do not employ continuously repeated scanout cycles might
83+
* not update the screen.
7884
* CRTC_ID:
7985
* Mode object ID of the &drm_crtc this plane should be connected to.
8086
*

drivers/gpu/drm/drm_gpusvm.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,7 +1330,6 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
13301330
unsigned long num_dma_mapped;
13311331
unsigned int order = 0;
13321332
unsigned long *pfns;
1333-
struct page **pages;
13341333
int err = 0;
13351334
struct dev_pagemap *pagemap;
13361335
struct drm_pagemap *dpagemap;
@@ -1369,7 +1368,6 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
13691368
if (err)
13701369
goto err_free;
13711370

1372-
pages = (struct page **)pfns;
13731371
map_pages:
13741372
/*
13751373
* Perform all dma mappings under the notifier lock to not
@@ -1444,8 +1442,6 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
14441442
err = -EFAULT;
14451443
goto err_unmap;
14461444
}
1447-
1448-
pages[i] = page;
14491445
} else {
14501446
dma_addr_t addr;
14511447

0 commit comments

Comments
 (0)