Home
last modified time | relevance | path

Searched refs:panel (Results 1 – 25 of 868) sorted by relevance

12345678910>>...35

/linux-6.6.21/drivers/gpu/drm/
Ddrm_panel.c57 void drm_panel_init(struct drm_panel *panel, struct device *dev, in drm_panel_init() argument
60 INIT_LIST_HEAD(&panel->list); in drm_panel_init()
61 INIT_LIST_HEAD(&panel->followers); in drm_panel_init()
62 mutex_init(&panel->follower_lock); in drm_panel_init()
63 panel->dev = dev; in drm_panel_init()
64 panel->funcs = funcs; in drm_panel_init()
65 panel->connector_type = connector_type; in drm_panel_init()
76 void drm_panel_add(struct drm_panel *panel) in drm_panel_add() argument
79 list_add_tail(&panel->list, &panel_list); in drm_panel_add()
90 void drm_panel_remove(struct drm_panel *panel) in drm_panel_remove() argument
[all …]
/linux-6.6.21/drivers/gpu/drm/panel/
DMakefile2 obj-$(CONFIG_DRM_PANEL_ABT_Y030XX067A) += panel-abt-y030xx067a.o
3 obj-$(CONFIG_DRM_PANEL_ARM_VERSATILE) += panel-arm-versatile.o
4 obj-$(CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596) += panel-asus-z00t-tm5p5-n35596.o
5 obj-$(CONFIG_DRM_PANEL_AUO_A030JTN01) += panel-auo-a030jtn01.o
6 obj-$(CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0) += panel-boe-bf060y8m-aj0.o
7 obj-$(CONFIG_DRM_PANEL_BOE_HIMAX8279D) += panel-boe-himax8279d.o
8 obj-$(CONFIG_DRM_PANEL_BOE_TV101WUM_NL6) += panel-boe-tv101wum-nl6.o
9 obj-$(CONFIG_DRM_PANEL_DSI_CM) += panel-dsi-cm.o
10 obj-$(CONFIG_DRM_PANEL_LVDS) += panel-lvds.o
11 obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o
[all …]
Dpanel-seiko-43wvf1g.c55 static inline struct seiko_panel *to_seiko_panel(struct drm_panel *panel) in to_seiko_panel() argument
57 return container_of(panel, struct seiko_panel, base); in to_seiko_panel()
60 static int seiko_panel_get_fixed_modes(struct seiko_panel *panel, in seiko_panel_get_fixed_modes() argument
66 if (!panel->desc) in seiko_panel_get_fixed_modes()
69 for (i = 0; i < panel->desc->num_timings; i++) { in seiko_panel_get_fixed_modes()
70 const struct display_timing *dt = &panel->desc->timings[i]; in seiko_panel_get_fixed_modes()
76 dev_err(panel->base.dev, "failed to add mode %ux%u\n", in seiko_panel_get_fixed_modes()
85 if (panel->desc->num_timings == 1) in seiko_panel_get_fixed_modes()
92 for (i = 0; i < panel->desc->num_modes; i++) { in seiko_panel_get_fixed_modes()
93 const struct drm_display_mode *m = &panel->desc->modes[i]; in seiko_panel_get_fixed_modes()
[all …]
Dpanel-samsung-atna33xc20.c46 static inline struct atana33xc20_panel *to_atana33xc20(struct drm_panel *panel) in to_atana33xc20() argument
48 return container_of(panel, struct atana33xc20_panel, base); in to_atana33xc20()
136 static int atana33xc20_disable(struct drm_panel *panel) in atana33xc20_disable() argument
138 struct atana33xc20_panel *p = to_atana33xc20(panel); in atana33xc20_disable()
166 static int atana33xc20_enable(struct drm_panel *panel) in atana33xc20_enable() argument
168 struct atana33xc20_panel *p = to_atana33xc20(panel); in atana33xc20_enable()
197 static int atana33xc20_unprepare(struct drm_panel *panel) in atana33xc20_unprepare() argument
199 struct atana33xc20_panel *p = to_atana33xc20(panel); in atana33xc20_unprepare()
214 ret = pm_runtime_put_sync_suspend(panel->dev); in atana33xc20_unprepare()
222 static int atana33xc20_prepare(struct drm_panel *panel) in atana33xc20_prepare() argument
[all …]
Dpanel-orisetech-ota5601a.c42 static inline struct ota5601a *to_ota5601a(struct drm_panel *panel) in to_ota5601a() argument
44 return container_of(panel, struct ota5601a, drm_panel); in to_ota5601a()
113 struct ota5601a *panel = to_ota5601a(drm_panel); in ota5601a_prepare() local
116 err = regulator_enable(panel->supply); in ota5601a_prepare()
123 gpiod_set_value_cansleep(panel->reset_gpio, 1); in ota5601a_prepare()
125 gpiod_set_value_cansleep(panel->reset_gpio, 0); in ota5601a_prepare()
129 err = regmap_multi_reg_write(panel->map, ota5601a_panel_regs, in ota5601a_prepare()
141 regulator_disable(panel->supply); in ota5601a_prepare()
147 struct ota5601a *panel = to_ota5601a(drm_panel); in ota5601a_unprepare() local
149 gpiod_set_value_cansleep(panel->reset_gpio, 1); in ota5601a_unprepare()
[all …]
Dpanel-novatek-nt39016.c65 static inline struct nt39016 *to_nt39016(struct drm_panel *panel) in to_nt39016() argument
67 return container_of(panel, struct nt39016, drm_panel); in to_nt39016()
120 struct nt39016 *panel = to_nt39016(drm_panel); in nt39016_prepare() local
123 err = regulator_enable(panel->supply); in nt39016_prepare()
135 gpiod_set_value_cansleep(panel->reset_gpio, 1); in nt39016_prepare()
137 gpiod_set_value_cansleep(panel->reset_gpio, 0); in nt39016_prepare()
141 err = regmap_multi_reg_write(panel->map, nt39016_panel_regs, in nt39016_prepare()
151 regulator_disable(panel->supply); in nt39016_prepare()
157 struct nt39016 *panel = to_nt39016(drm_panel); in nt39016_unprepare() local
159 gpiod_set_value_cansleep(panel->reset_gpio, 1); in nt39016_unprepare()
[all …]
Dpanel-edp.c239 static inline struct panel_edp *to_panel_edp(struct drm_panel *panel) in to_panel_edp() argument
241 return container_of(panel, struct panel_edp, base); in to_panel_edp()
244 static unsigned int panel_edp_get_timings_modes(struct panel_edp *panel, in panel_edp_get_timings_modes() argument
250 for (i = 0; i < panel->desc->num_timings; i++) { in panel_edp_get_timings_modes()
251 const struct display_timing *dt = &panel->desc->timings[i]; in panel_edp_get_timings_modes()
257 dev_err(panel->base.dev, "failed to add mode %ux%u\n", in panel_edp_get_timings_modes()
266 if (panel->desc->num_timings == 1) in panel_edp_get_timings_modes()
276 static unsigned int panel_edp_get_display_modes(struct panel_edp *panel, in panel_edp_get_display_modes() argument
282 for (i = 0; i < panel->desc->num_modes; i++) { in panel_edp_get_display_modes()
283 const struct drm_display_mode *m = &panel->desc->modes[i]; in panel_edp_get_display_modes()
[all …]
Dpanel-visionox-rm69299.c19 struct drm_panel panel; member
27 static inline struct visionox_rm69299 *panel_to_ctx(struct drm_panel *panel) in panel_to_ctx() argument
29 return container_of(panel, struct visionox_rm69299, panel); in panel_to_ctx()
62 static int visionox_rm69299_unprepare(struct drm_panel *panel) in visionox_rm69299_unprepare() argument
64 struct visionox_rm69299 *ctx = panel_to_ctx(panel); in visionox_rm69299_unprepare()
71 dev_err(ctx->panel.dev, "set_display_off cmd failed ret = %d\n", ret); in visionox_rm69299_unprepare()
78 dev_err(ctx->panel.dev, "enter_sleep cmd failed ret = %d\n", ret); in visionox_rm69299_unprepare()
87 static int visionox_rm69299_prepare(struct drm_panel *panel) in visionox_rm69299_prepare() argument
89 struct visionox_rm69299 *ctx = panel_to_ctx(panel); in visionox_rm69299_prepare()
103 dev_err(ctx->panel.dev, "cmd set tx 0 failed, ret = %d\n", ret); in visionox_rm69299_prepare()
[all …]
Dpanel-raydium-rm67191.c198 struct drm_panel panel; member
227 static inline struct rad_panel *to_rad_panel(struct drm_panel *panel) in to_rad_panel() argument
229 return container_of(panel, struct rad_panel, panel); in to_rad_panel()
265 static int rad_panel_prepare(struct drm_panel *panel) in rad_panel_prepare() argument
267 struct rad_panel *rad = to_rad_panel(panel); in rad_panel_prepare()
289 static int rad_panel_unprepare(struct drm_panel *panel) in rad_panel_unprepare() argument
291 struct rad_panel *rad = to_rad_panel(panel); in rad_panel_unprepare()
317 static int rad_panel_enable(struct drm_panel *panel) in rad_panel_enable() argument
319 struct rad_panel *rad = to_rad_panel(panel); in rad_panel_enable()
402 static int rad_panel_disable(struct drm_panel *panel) in rad_panel_disable() argument
[all …]
Dpanel-feiyang-fy07024di26a30d.c20 struct drm_panel panel; member
28 static inline struct feiyang *panel_to_feiyang(struct drm_panel *panel) in panel_to_feiyang() argument
30 return container_of(panel, struct feiyang, panel); in panel_to_feiyang()
47 static int feiyang_prepare(struct drm_panel *panel) in feiyang_prepare() argument
49 struct feiyang *ctx = panel_to_feiyang(panel); in feiyang_prepare()
94 static int feiyang_enable(struct drm_panel *panel) in feiyang_enable() argument
96 struct feiyang *ctx = panel_to_feiyang(panel); in feiyang_enable()
106 static int feiyang_disable(struct drm_panel *panel) in feiyang_disable() argument
108 struct feiyang *ctx = panel_to_feiyang(panel); in feiyang_disable()
113 static int feiyang_unprepare(struct drm_panel *panel) in feiyang_unprepare() argument
[all …]
DKconfig12 tristate "ABT Y030XX067A 320x480 LCD panel"
17 Y030XX067A 320x480 3.0" panel as found in the YLM RG-280M, RG-300
21 tristate "ARM Versatile panel driver"
27 reference designs. The panel is detected using special registers
31 tristate "ASUS Z00T TM5P5 NT35596 panel"
37 NT35596 1080x1920 video mode panel as found in some Asus
45 Say Y here to enable support for the AUO A030JTN01 320x480 3.0" panel
49 tristate "Boe BF060Y8M-AJ0 panel"
55 5.99" AMOLED modules. The panel has a 1080x2160 resolution and
60 tristate "Boe Himax8279d panel"
[all …]
Dpanel-innolux-ej030na.c31 struct drm_panel panel; member
41 static inline struct ej030na *to_ej030na(struct drm_panel *panel) in to_ej030na() argument
43 return container_of(panel, struct ej030na, panel); in to_ej030na()
86 static int ej030na_prepare(struct drm_panel *panel) in ej030na_prepare() argument
88 struct ej030na *priv = to_ej030na(panel); in ej030na_prepare()
118 static int ej030na_unprepare(struct drm_panel *panel) in ej030na_unprepare() argument
120 struct ej030na *priv = to_ej030na(panel); in ej030na_unprepare()
128 static int ej030na_enable(struct drm_panel *panel) in ej030na_enable() argument
130 struct ej030na *priv = to_ej030na(panel); in ej030na_enable()
135 if (panel->backlight) { in ej030na_enable()
[all …]
Dpanel-leadtek-ltk500hd1829.c26 struct drm_panel panel; member
264 struct ltk500hd1829 *panel_to_ltk500hd1829(struct drm_panel *panel) in panel_to_ltk500hd1829() argument
266 return container_of(panel, struct ltk500hd1829, panel); in panel_to_ltk500hd1829()
269 static int ltk500hd1829_unprepare(struct drm_panel *panel) in ltk500hd1829_unprepare() argument
271 struct ltk500hd1829 *ctx = panel_to_ltk500hd1829(panel); in ltk500hd1829_unprepare()
280 dev_err(panel->dev, "failed to set display off: %d\n", ret); in ltk500hd1829_unprepare()
284 dev_err(panel->dev, "failed to enter sleep mode: %d\n", ret); in ltk500hd1829_unprepare()
298 static int ltk500hd1829_prepare(struct drm_panel *panel) in ltk500hd1829_prepare() argument
300 struct ltk500hd1829 *ctx = panel_to_ltk500hd1829(panel); in ltk500hd1829_prepare()
331 dev_err(panel->dev, "failed to write init cmds: %d\n", ret); in ltk500hd1829_prepare()
[all …]
Dpanel-olimex-lcd-olinuxino.c62 struct drm_panel panel; member
76 static inline struct lcd_olinuxino *to_lcd_olinuxino(struct drm_panel *panel) in to_lcd_olinuxino() argument
78 return container_of(panel, struct lcd_olinuxino, panel); in to_lcd_olinuxino()
81 static int lcd_olinuxino_disable(struct drm_panel *panel) in lcd_olinuxino_disable() argument
83 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_disable()
93 static int lcd_olinuxino_unprepare(struct drm_panel *panel) in lcd_olinuxino_unprepare() argument
95 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_unprepare()
108 static int lcd_olinuxino_prepare(struct drm_panel *panel) in lcd_olinuxino_prepare() argument
110 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); in lcd_olinuxino_prepare()
126 static int lcd_olinuxino_enable(struct drm_panel *panel) in lcd_olinuxino_enable() argument
[all …]
/linux-6.6.21/drivers/input/misc/
Dibm-panel.c26 static u8 ibm_panel_calculate_checksum(struct ibm_panel *panel) in ibm_panel_calculate_checksum() argument
32 for (i = 0; i < sizeof(panel->command) - 1; ++i) { in ibm_panel_calculate_checksum()
33 sum += panel->command[i]; in ibm_panel_calculate_checksum()
47 static void ibm_panel_process_command(struct ibm_panel *panel) in ibm_panel_process_command() argument
52 if (panel->command[0] != 0xff && panel->command[1] != 0xf0) { in ibm_panel_process_command()
53 dev_dbg(&panel->input->dev, "command invalid: %02x %02x\n", in ibm_panel_process_command()
54 panel->command[0], panel->command[1]); in ibm_panel_process_command()
58 chksum = ibm_panel_calculate_checksum(panel); in ibm_panel_process_command()
59 if (chksum != panel->command[sizeof(panel->command) - 1]) { in ibm_panel_process_command()
60 dev_dbg(&panel->input->dev, in ibm_panel_process_command()
[all …]
/linux-6.6.21/drivers/gpu/drm/i915/display/
Dintel_backlight.c65 struct intel_panel *panel = &connector->panel; in clamp_user_to_hw() local
68 hw_level = scale(user_level, 0, user_max, 0, panel->backlight.max); in clamp_user_to_hw()
69 hw_level = clamp(hw_level, panel->backlight.min, panel->backlight.max); in clamp_user_to_hw()
78 struct intel_panel *panel = &connector->panel; in scale_hw_to_user() local
80 return scale(hw_level, panel->backlight.min, panel->backlight.max, in scale_hw_to_user()
87 struct intel_panel *panel = &connector->panel; in intel_backlight_invert_pwm_level() local
89 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0); in intel_backlight_invert_pwm_level()
96 return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min; in intel_backlight_invert_pwm_level()
106 struct intel_panel *panel = &connector->panel; in intel_backlight_set_pwm_level() local
110 panel->backlight.pwm_funcs->set(conn_state, val); in intel_backlight_set_pwm_level()
[all …]
Dintel_dp_aux_backlight.c120 struct intel_panel *panel = &connector->panel; in intel_dp_aux_supports_hdr_backlight() local
159 panel->backlight.edp.intel.sdr_uses_aux = in intel_dp_aux_supports_hdr_backlight()
169 struct intel_panel *panel = &connector->panel; in intel_dp_aux_hdr_get_backlight() local
181 if (!panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_get_backlight()
182 u32 pwm_level = panel->backlight.pwm_funcs->get(connector, pipe); in intel_dp_aux_hdr_get_backlight()
188 return panel->backlight.max; in intel_dp_aux_hdr_get_backlight()
222 struct intel_panel *panel = &connector->panel; in intel_dp_aux_hdr_set_backlight() local
224 if (panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_set_backlight()
238 struct intel_panel *panel = &connector->panel; in intel_dp_aux_hdr_enable_backlight() local
254 if (panel->backlight.edp.intel.sdr_uses_aux) { in intel_dp_aux_hdr_enable_backlight()
[all …]
Dintel_dsi_dcs_backlight.c50 struct intel_panel *panel = &connector->panel; in dcs_get_backlight() local
54 size_t len = panel->backlight.max > U8_MAX ? 2 : 1; in dcs_get_backlight()
56 for_each_dsi_port(port, panel->vbt.dsi.bl_ports) { in dcs_get_backlight()
69 struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel; in dcs_set_backlight() local
73 size_t len = panel->backlight.max > U8_MAX ? 2 : 1; in dcs_set_backlight()
83 for_each_dsi_port(port, panel->vbt.dsi.bl_ports) { in dcs_set_backlight()
96 struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel; in dcs_disable_backlight() local
102 for_each_dsi_port(port, panel->vbt.dsi.cabc_ports) { in dcs_disable_backlight()
110 for_each_dsi_port(port, panel->vbt.dsi.bl_ports) { in dcs_disable_backlight()
131 struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel; in dcs_enable_backlight() local
[all …]
Dintel_bios.c788 struct intel_panel *panel) in parse_panel_options() argument
791 int panel_type = panel->vbt.panel_type; in parse_panel_options()
798 panel->vbt.lvds_dither = lvds_options->pixel_dither; in parse_panel_options()
817 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_panel_options()
821 panel->vbt.drrs_type = DRRS_TYPE_SEAMLESS; in parse_panel_options()
826 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_panel_options()
835 struct intel_panel *panel, in parse_lfp_panel_dtd() argument
842 int panel_type = panel->vbt.panel_type; in parse_lfp_panel_dtd()
854 panel->vbt.lfp_lvds_vbt_mode = panel_fixed_mode; in parse_lfp_panel_dtd()
867 panel->vbt.bios_lvds_val = fp_timing->lvds_reg_val; in parse_lfp_panel_dtd()
[all …]
/linux-6.6.21/drivers/gpu/drm/msm/dp/
Ddp_panel.c23 static void dp_panel_read_psr_cap(struct dp_panel_private *panel) in dp_panel_read_psr_cap() argument
28 dp_panel = &panel->dp_panel; in dp_panel_read_psr_cap()
32 rlen = drm_dp_dpcd_read(panel->aux, DP_PSR_SUPPORT, in dp_panel_read_psr_cap()
35 drm_dbg_dp(panel->drm_dev, in dp_panel_read_psr_cap()
49 struct dp_panel_private *panel; in dp_panel_read_dpcd() local
56 panel = container_of(dp_panel, struct dp_panel_private, dp_panel); in dp_panel_read_dpcd()
59 rlen = drm_dp_dpcd_read(panel->aux, offset, in dp_panel_read_dpcd()
75 drm_dbg_dp(panel->drm_dev, in dp_panel_read_dpcd()
80 rlen = drm_dp_dpcd_read(panel->aux, offset, in dp_panel_read_dpcd()
107 drm_dbg_dp(panel->drm_dev, "version: %d.%d\n", major, minor); in dp_panel_read_dpcd()
[all …]
/linux-6.6.21/Documentation/devicetree/bindings/display/panel/
Dpanel-simple.yaml4 $id: http://devicetree.org/schemas/display/panel/panel-simple.yaml#
17 The panel may use an OF graph binding for the association to the display,
20 If the panel is more advanced a dedicated binding file is required.
23 - $ref: panel-common.yaml#
32 # Ampire AM-1280800N3TZQW-T00H 10.1" WQVGA TFT LCD panel
34 # Ampire AM-480272H3TMQW-T01H 4.3" WQVGA TFT LCD panel
36 # Ampire AM-800480L1TMQW-T00H 5" WVGA TFT LCD panel
38 # Ampire AM-800480R3TMQW-A1H 7.0" WVGA TFT LCD panel
40 # Ampire AM-800600P5TMQW-TB8H 8.0" SVGA TFT LCD panel
42 # AU Optronics Corporation 10.1" WSVGA TFT LCD panel
[all …]
Dpanel-simple-dsi.yaml4 $id: http://devicetree.org/schemas/display/panel/panel-simple-dsi.yaml#
17 The panel may use an OF graph binding for the association to the display,
20 If the panel is more advanced a dedicated binding file is required.
29 # AU Optronics Corporation 8.0" WUXGA TFT LCD panel
31 # Boe Corporation 8.0" WUXGA TFT LCD panel
33 # Innolux P079ZCA 7.85" 768x1024 TFT LCD panel
37 # Khadas TS050 5" 1080x1920 LCD panel
39 # Kingdisplay KD097D04 9.7" 1536x2048 TFT LCD panel
43 # LG Corporation 7" WXGA TFT LCD panel
45 # One Stop Displays OSD101T2587-53TS 10.1" 1920x1200 panel
[all …]
/linux-6.6.21/drivers/gpu/drm/bridge/
Dpanel.c21 struct drm_panel *panel; member
42 return drm_panel_get_modes(panel_bridge->panel, connector); in panel_bridge_connector_get_modes()
131 drm_panel_prepare(panel_bridge->panel); in panel_bridge_atomic_pre_enable()
151 drm_panel_enable(panel_bridge->panel); in panel_bridge_atomic_enable()
171 drm_panel_disable(panel_bridge->panel); in panel_bridge_atomic_disable()
191 drm_panel_unprepare(panel_bridge->panel); in panel_bridge_atomic_post_disable()
199 return drm_panel_get_modes(panel_bridge->panel, connector); in panel_bridge_get_modes()
206 struct drm_panel *panel = panel_bridge->panel; in panel_bridge_debugfs_init() local
209 if (panel->funcs->debugfs_init) in panel_bridge_debugfs_init()
210 panel->funcs->debugfs_init(panel, root); in panel_bridge_debugfs_init()
[all …]
/linux-6.6.21/include/drm/
Ddrm_panel.h81 int (*prepare)(struct drm_panel *panel);
90 int (*enable)(struct drm_panel *panel);
99 int (*disable)(struct drm_panel *panel);
108 int (*unprepare)(struct drm_panel *panel);
118 int (*get_modes)(struct drm_panel *panel,
128 enum drm_panel_orientation (*get_orientation)(struct drm_panel *panel);
138 int (*get_timings)(struct drm_panel *panel, unsigned int num_timings,
146 void (*debugfs_init)(struct drm_panel *panel, struct dentry *root);
185 struct drm_panel *panel; member
272 void drm_panel_init(struct drm_panel *panel, struct device *dev,
[all …]
/linux-6.6.21/drivers/video/fbdev/mmp/
Dcore.c46 if (path->panel && path->panel->get_modelist) in path_get_modelist()
47 return path->panel->get_modelist(path->panel, modelist); in path_get_modelist()
72 void mmp_register_panel(struct mmp_panel *panel) in mmp_register_panel() argument
79 list_add_tail(&panel->node, &panel_list); in mmp_register_panel()
83 if (!strcmp(panel->plat_path_name, path->name)) { in mmp_register_panel()
84 dev_info(panel->dev, "connect to path %s\n", in mmp_register_panel()
86 path->panel = panel; in mmp_register_panel()
102 void mmp_unregister_panel(struct mmp_panel *panel) in mmp_unregister_panel() argument
107 list_del(&panel->node); in mmp_unregister_panel()
110 if (path->panel && path->panel == panel) { in mmp_unregister_panel()
[all …]

12345678910>>...35