Commit 671d2799 authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-misc-fixes-2020-10-29' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

First round of drm-misc-fixes with a couple of leftovers from
drm-misc-fixes next.

Some reset fixes for the mantix panel, some fixes for a scaler issue on
sun4i, many kernel-doc fixes and various fixes for vc4 (mostly HDMI audio
related)
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20201029173414.fxrl5jacsdwqheto@gilmour.lan
parents 14c90746 5066f42c
...@@ -37,6 +37,9 @@ properties: ...@@ -37,6 +37,9 @@ properties:
reset-gpios: true reset-gpios: true
'mantix,tp-rstn-gpios':
description: second reset line that triggers DSI config load
backlight: true backlight: true
required: required:
...@@ -63,6 +66,7 @@ examples: ...@@ -63,6 +66,7 @@ examples:
avee-supply = <&reg_avee>; avee-supply = <&reg_avee>;
vddi-supply = <&reg_1v8_p>; vddi-supply = <&reg_1v8_p>;
reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
mantix,tp-rstn-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
backlight = <&backlight>; backlight = <&backlight>;
}; };
}; };
......
...@@ -374,6 +374,10 @@ static bool is_edid_digital_input_dp(const struct edid *edid) ...@@ -374,6 +374,10 @@ static bool is_edid_digital_input_dp(const struct edid *edid)
* drm_dp_downstream_is_type() - is the downstream facing port of certain type? * drm_dp_downstream_is_type() - is the downstream facing port of certain type?
* @dpcd: DisplayPort configuration data * @dpcd: DisplayPort configuration data
* @port_cap: port capabilities * @port_cap: port capabilities
* @type: port type to be checked. Can be:
* %DP_DS_PORT_TYPE_DP, %DP_DS_PORT_TYPE_VGA, %DP_DS_PORT_TYPE_DVI,
* %DP_DS_PORT_TYPE_HDMI, %DP_DS_PORT_TYPE_NON_EDID,
* %DP_DS_PORT_TYPE_DP_DUALMODE or %DP_DS_PORT_TYPE_WIRELESS.
* *
* Caveat: Only works with DPCD 1.1+ port caps. * Caveat: Only works with DPCD 1.1+ port caps.
* *
...@@ -870,6 +874,7 @@ EXPORT_SYMBOL(drm_dp_downstream_444_to_420_conversion); ...@@ -870,6 +874,7 @@ EXPORT_SYMBOL(drm_dp_downstream_444_to_420_conversion);
/** /**
* drm_dp_downstream_mode() - return a mode for downstream facing port * drm_dp_downstream_mode() - return a mode for downstream facing port
* @dev: DRM device
* @dpcd: DisplayPort configuration data * @dpcd: DisplayPort configuration data
* @port_cap: port capabilities * @port_cap: port capabilities
* *
...@@ -1028,7 +1033,8 @@ EXPORT_SYMBOL(drm_dp_downstream_debug); ...@@ -1028,7 +1033,8 @@ EXPORT_SYMBOL(drm_dp_downstream_debug);
/** /**
* drm_dp_subconnector_type() - get DP branch device type * drm_dp_subconnector_type() - get DP branch device type
* * @dpcd: DisplayPort configuration data
* @port_cap: port capabilities
*/ */
enum drm_mode_subconnector enum drm_mode_subconnector
drm_dp_subconnector_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], drm_dp_subconnector_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
...@@ -1079,6 +1085,10 @@ EXPORT_SYMBOL(drm_dp_subconnector_type); ...@@ -1079,6 +1085,10 @@ EXPORT_SYMBOL(drm_dp_subconnector_type);
/** /**
* drm_mode_set_dp_subconnector_property - set subconnector for DP connector * drm_mode_set_dp_subconnector_property - set subconnector for DP connector
* @connector: connector to set property on
* @status: connector status
* @dpcd: DisplayPort configuration data
* @port_cap: port capabilities
* *
* Called by a driver on every detect event. * Called by a driver on every detect event.
*/ */
......
...@@ -3741,7 +3741,7 @@ drm_add_cmdb_modes(struct drm_connector *connector, u8 svd) ...@@ -3741,7 +3741,7 @@ drm_add_cmdb_modes(struct drm_connector *connector, u8 svd)
/** /**
* drm_display_mode_from_cea_vic() - return a mode for CEA VIC * drm_display_mode_from_cea_vic() - return a mode for CEA VIC
* @dev: DRM device * @dev: DRM device
* @vic: CEA VIC of the mode * @video_code: CEA VIC of the mode
* *
* Creates a new mode matching the specified CEA VIC. * Creates a new mode matching the specified CEA VIC.
* *
......
...@@ -1085,6 +1085,8 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size, ...@@ -1085,6 +1085,8 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
*/ */
drm_gem_object_get(obj); drm_gem_object_get(obj);
vma->vm_private_data = obj;
if (obj->funcs && obj->funcs->mmap) { if (obj->funcs && obj->funcs->mmap) {
ret = obj->funcs->mmap(obj, vma); ret = obj->funcs->mmap(obj, vma);
if (ret) { if (ret) {
...@@ -1107,8 +1109,6 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size, ...@@ -1107,8 +1109,6 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot); vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
} }
vma->vm_private_data = obj;
return 0; return 0;
} }
EXPORT_SYMBOL(drm_gem_mmap_obj); EXPORT_SYMBOL(drm_gem_mmap_obj);
......
...@@ -593,8 +593,13 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) ...@@ -593,8 +593,13 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
/* Remove the fake offset */ /* Remove the fake offset */
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node); vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
if (obj->import_attach) if (obj->import_attach) {
/* Drop the reference drm_gem_mmap_obj() acquired.*/
drm_gem_object_put(obj);
vma->vm_private_data = NULL;
return dma_buf_mmap(obj->dma_buf, vma, 0); return dma_buf_mmap(obj->dma_buf, vma, 0);
}
shmem = to_drm_gem_shmem_obj(obj); shmem = to_drm_gem_shmem_obj(obj);
......
...@@ -794,6 +794,7 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = { ...@@ -794,6 +794,7 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
/** /**
* drm_prime_pages_to_sg - converts a page array into an sg list * drm_prime_pages_to_sg - converts a page array into an sg list
* @dev: DRM device
* @pages: pointer to the array of page pointers to convert * @pages: pointer to the array of page pointers to convert
* @nr_pages: length of the page vector * @nr_pages: length of the page vector
* *
......
...@@ -26,7 +26,9 @@ ...@@ -26,7 +26,9 @@
struct mantix { struct mantix {
struct device *dev; struct device *dev;
struct drm_panel panel; struct drm_panel panel;
struct gpio_desc *reset_gpio; struct gpio_desc *reset_gpio;
struct gpio_desc *tp_rstn_gpio;
struct regulator *avdd; struct regulator *avdd;
struct regulator *avee; struct regulator *avee;
...@@ -124,6 +126,10 @@ static int mantix_unprepare(struct drm_panel *panel) ...@@ -124,6 +126,10 @@ static int mantix_unprepare(struct drm_panel *panel)
{ {
struct mantix *ctx = panel_to_mantix(panel); struct mantix *ctx = panel_to_mantix(panel);
gpiod_set_value_cansleep(ctx->tp_rstn_gpio, 1);
usleep_range(5000, 6000);
gpiod_set_value_cansleep(ctx->reset_gpio, 1);
regulator_disable(ctx->avee); regulator_disable(ctx->avee);
regulator_disable(ctx->avdd); regulator_disable(ctx->avdd);
/* T11 */ /* T11 */
...@@ -165,13 +171,10 @@ static int mantix_prepare(struct drm_panel *panel) ...@@ -165,13 +171,10 @@ static int mantix_prepare(struct drm_panel *panel)
return ret; return ret;
} }
/* T3+T5 */ /* T3 + T4 + time for voltage to become stable: */
usleep_range(10000, 12000); usleep_range(6000, 7000);
gpiod_set_value_cansleep(ctx->reset_gpio, 1);
usleep_range(5150, 7000);
gpiod_set_value_cansleep(ctx->reset_gpio, 0); gpiod_set_value_cansleep(ctx->reset_gpio, 0);
gpiod_set_value_cansleep(ctx->tp_rstn_gpio, 0);
/* T6 */ /* T6 */
msleep(50); msleep(50);
...@@ -204,7 +207,7 @@ static int mantix_get_modes(struct drm_panel *panel, ...@@ -204,7 +207,7 @@ static int mantix_get_modes(struct drm_panel *panel,
if (!mode) { if (!mode) {
dev_err(ctx->dev, "Failed to add mode %ux%u@%u\n", dev_err(ctx->dev, "Failed to add mode %ux%u@%u\n",
default_mode.hdisplay, default_mode.vdisplay, default_mode.hdisplay, default_mode.vdisplay,
drm_mode_vrefresh(mode)); drm_mode_vrefresh(&default_mode));
return -ENOMEM; return -ENOMEM;
} }
...@@ -236,12 +239,18 @@ static int mantix_probe(struct mipi_dsi_device *dsi) ...@@ -236,12 +239,18 @@ static int mantix_probe(struct mipi_dsi_device *dsi)
if (!ctx) if (!ctx)
return -ENOMEM; return -ENOMEM;
ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
if (IS_ERR(ctx->reset_gpio)) { if (IS_ERR(ctx->reset_gpio)) {
dev_err(dev, "cannot get reset gpio\n"); dev_err(dev, "cannot get reset gpio\n");
return PTR_ERR(ctx->reset_gpio); return PTR_ERR(ctx->reset_gpio);
} }
ctx->tp_rstn_gpio = devm_gpiod_get(dev, "mantix,tp-rstn", GPIOD_OUT_HIGH);
if (IS_ERR(ctx->tp_rstn_gpio)) {
dev_err(dev, "cannot get tp-rstn gpio\n");
return PTR_ERR(ctx->tp_rstn_gpio);
}
mipi_dsi_set_drvdata(dsi, ctx); mipi_dsi_set_drvdata(dsi, ctx);
ctx->dev = dev; ctx->dev = dev;
......
...@@ -407,6 +407,7 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend, ...@@ -407,6 +407,7 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,
struct drm_framebuffer *fb = state->fb; struct drm_framebuffer *fb = state->fb;
const struct drm_format_info *format = fb->format; const struct drm_format_info *format = fb->format;
uint64_t modifier = fb->modifier; uint64_t modifier = fb->modifier;
unsigned int ch1_phase_idx;
u32 out_fmt_val; u32 out_fmt_val;
u32 in_fmt_val, in_mod_val, in_ps_val; u32 in_fmt_val, in_mod_val, in_ps_val;
unsigned int i; unsigned int i;
...@@ -442,18 +443,19 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend, ...@@ -442,18 +443,19 @@ int sun4i_frontend_update_formats(struct sun4i_frontend *frontend,
* I have no idea what this does exactly, but it seems to be * I have no idea what this does exactly, but it seems to be
* related to the scaler FIR filter phase parameters. * related to the scaler FIR filter phase parameters.
*/ */
ch1_phase_idx = (format->num_planes > 1) ? 1 : 0;
regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG,
frontend->data->ch_phase[0].horzphase); frontend->data->ch_phase[0]);
regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG,
frontend->data->ch_phase[1].horzphase); frontend->data->ch_phase[ch1_phase_idx]);
regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG,
frontend->data->ch_phase[0].vertphase[0]); frontend->data->ch_phase[0]);
regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG,
frontend->data->ch_phase[1].vertphase[0]); frontend->data->ch_phase[ch1_phase_idx]);
regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG,
frontend->data->ch_phase[0].vertphase[1]); frontend->data->ch_phase[0]);
regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG,
frontend->data->ch_phase[1].vertphase[1]); frontend->data->ch_phase[ch1_phase_idx]);
/* /*
* Checking the input format is sufficient since we currently only * Checking the input format is sufficient since we currently only
...@@ -687,30 +689,12 @@ static const struct dev_pm_ops sun4i_frontend_pm_ops = { ...@@ -687,30 +689,12 @@ static const struct dev_pm_ops sun4i_frontend_pm_ops = {
}; };
static const struct sun4i_frontend_data sun4i_a10_frontend = { static const struct sun4i_frontend_data sun4i_a10_frontend = {
.ch_phase = { .ch_phase = { 0x000, 0xfc000 },
{
.horzphase = 0,
.vertphase = { 0, 0 },
},
{
.horzphase = 0xfc000,
.vertphase = { 0xfc000, 0xfc000 },
},
},
.has_coef_rdy = true, .has_coef_rdy = true,
}; };
static const struct sun4i_frontend_data sun8i_a33_frontend = { static const struct sun4i_frontend_data sun8i_a33_frontend = {
.ch_phase = { .ch_phase = { 0x400, 0xfc400 },
{
.horzphase = 0x400,
.vertphase = { 0x400, 0x400 },
},
{
.horzphase = 0x400,
.vertphase = { 0x400, 0x400 },
},
},
.has_coef_access_ctrl = true, .has_coef_access_ctrl = true,
}; };
......
...@@ -115,11 +115,7 @@ struct reset_control; ...@@ -115,11 +115,7 @@ struct reset_control;
struct sun4i_frontend_data { struct sun4i_frontend_data {
bool has_coef_access_ctrl; bool has_coef_access_ctrl;
bool has_coef_rdy; bool has_coef_rdy;
u32 ch_phase[2];
struct {
u32 horzphase;
u32 vertphase[2];
} ch_phase[2];
}; };
struct sun4i_frontend { struct sun4i_frontend {
......
...@@ -568,7 +568,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data, ...@@ -568,7 +568,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
ret = v3d_job_init(v3d, file_priv, &bin->base, ret = v3d_job_init(v3d, file_priv, &bin->base,
v3d_job_free, args->in_sync_bcl); v3d_job_free, args->in_sync_bcl);
if (ret) { if (ret) {
kfree(bin);
v3d_job_put(&render->base); v3d_job_put(&render->base);
kfree(bin); kfree(bin);
return ret; return ret;
......
...@@ -314,6 +314,7 @@ static int vc4_drm_bind(struct device *dev) ...@@ -314,6 +314,7 @@ static int vc4_drm_bind(struct device *dev)
component_unbind_all(dev, drm); component_unbind_all(dev, drm);
gem_destroy: gem_destroy:
vc4_gem_destroy(drm); vc4_gem_destroy(drm);
drm_mode_config_cleanup(drm);
vc4_bo_cache_destroy(drm); vc4_bo_cache_destroy(drm);
dev_put: dev_put:
drm_dev_put(drm); drm_dev_put(drm);
......
...@@ -287,7 +287,7 @@ struct vc4_bo { ...@@ -287,7 +287,7 @@ struct vc4_bo {
static inline struct vc4_bo * static inline struct vc4_bo *
to_vc4_bo(struct drm_gem_object *bo) to_vc4_bo(struct drm_gem_object *bo)
{ {
return (struct vc4_bo *)bo; return container_of(to_drm_gem_cma_obj(bo), struct vc4_bo, base);
} }
struct vc4_fence { struct vc4_fence {
...@@ -300,7 +300,7 @@ struct vc4_fence { ...@@ -300,7 +300,7 @@ struct vc4_fence {
static inline struct vc4_fence * static inline struct vc4_fence *
to_vc4_fence(struct dma_fence *fence) to_vc4_fence(struct dma_fence *fence)
{ {
return (struct vc4_fence *)fence; return container_of(fence, struct vc4_fence, base);
} }
struct vc4_seqno_cb { struct vc4_seqno_cb {
...@@ -347,7 +347,7 @@ struct vc4_plane { ...@@ -347,7 +347,7 @@ struct vc4_plane {
static inline struct vc4_plane * static inline struct vc4_plane *
to_vc4_plane(struct drm_plane *plane) to_vc4_plane(struct drm_plane *plane)
{ {
return (struct vc4_plane *)plane; return container_of(plane, struct vc4_plane, base);
} }
enum vc4_scaling_mode { enum vc4_scaling_mode {
...@@ -423,7 +423,7 @@ struct vc4_plane_state { ...@@ -423,7 +423,7 @@ struct vc4_plane_state {
static inline struct vc4_plane_state * static inline struct vc4_plane_state *
to_vc4_plane_state(struct drm_plane_state *state) to_vc4_plane_state(struct drm_plane_state *state)
{ {
return (struct vc4_plane_state *)state; return container_of(state, struct vc4_plane_state, base);
} }
enum vc4_encoder_type { enum vc4_encoder_type {
...@@ -499,7 +499,7 @@ struct vc4_crtc { ...@@ -499,7 +499,7 @@ struct vc4_crtc {
static inline struct vc4_crtc * static inline struct vc4_crtc *
to_vc4_crtc(struct drm_crtc *crtc) to_vc4_crtc(struct drm_crtc *crtc)
{ {
return (struct vc4_crtc *)crtc; return container_of(crtc, struct vc4_crtc, base);
} }
static inline const struct vc4_crtc_data * static inline const struct vc4_crtc_data *
...@@ -537,7 +537,7 @@ struct vc4_crtc_state { ...@@ -537,7 +537,7 @@ struct vc4_crtc_state {
static inline struct vc4_crtc_state * static inline struct vc4_crtc_state *
to_vc4_crtc_state(struct drm_crtc_state *crtc_state) to_vc4_crtc_state(struct drm_crtc_state *crtc_state)
{ {
return (struct vc4_crtc_state *)crtc_state; return container_of(crtc_state, struct vc4_crtc_state, base);
} }
#define V3D_READ(offset) readl(vc4->v3d->regs + offset) #define V3D_READ(offset) readl(vc4->v3d->regs + offset)
......
...@@ -922,6 +922,7 @@ static int vc4_hdmi_audio_hw_params(struct snd_pcm_substream *substream, ...@@ -922,6 +922,7 @@ static int vc4_hdmi_audio_hw_params(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai); struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
struct device *dev = &vc4_hdmi->pdev->dev; struct device *dev = &vc4_hdmi->pdev->dev;
u32 audio_packet_config, channel_mask; u32 audio_packet_config, channel_mask;
u32 channel_map; u32 channel_map;
...@@ -981,6 +982,8 @@ static int vc4_hdmi_audio_hw_params(struct snd_pcm_substream *substream, ...@@ -981,6 +982,8 @@ static int vc4_hdmi_audio_hw_params(struct snd_pcm_substream *substream,
HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config); HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config);
vc4_hdmi_set_n_cts(vc4_hdmi); vc4_hdmi_set_n_cts(vc4_hdmi);
vc4_hdmi_set_audio_infoframe(encoder);
return 0; return 0;
} }
...@@ -988,11 +991,9 @@ static int vc4_hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd, ...@@ -988,11 +991,9 @@ static int vc4_hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai); struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
switch (cmd) { switch (cmd) {
case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_START:
vc4_hdmi_set_audio_infoframe(encoder);
vc4_hdmi->audio.streaming = true; vc4_hdmi->audio.streaming = true;
if (vc4_hdmi->variant->phy_rng_enable) if (vc4_hdmi->variant->phy_rng_enable)
...@@ -1076,6 +1077,7 @@ static const struct snd_soc_dapm_route vc4_hdmi_audio_routes[] = { ...@@ -1076,6 +1077,7 @@ static const struct snd_soc_dapm_route vc4_hdmi_audio_routes[] = {
}; };
static const struct snd_soc_component_driver vc4_hdmi_audio_component_drv = { static const struct snd_soc_component_driver vc4_hdmi_audio_component_drv = {
.name = "vc4-hdmi-codec-dai-component",
.controls = vc4_hdmi_audio_controls, .controls = vc4_hdmi_audio_controls,
.num_controls = ARRAY_SIZE(vc4_hdmi_audio_controls), .num_controls = ARRAY_SIZE(vc4_hdmi_audio_controls),
.dapm_widgets = vc4_hdmi_audio_widgets, .dapm_widgets = vc4_hdmi_audio_widgets,
......
...@@ -1836,7 +1836,7 @@ static inline void drm_dp_cec_unset_edid(struct drm_dp_aux *aux) ...@@ -1836,7 +1836,7 @@ static inline void drm_dp_cec_unset_edid(struct drm_dp_aux *aux)
* @link_rate: Requested Link rate from DPCD 0x219 * @link_rate: Requested Link rate from DPCD 0x219
* @num_lanes: Number of lanes requested by sing through DPCD 0x220 * @num_lanes: Number of lanes requested by sing through DPCD 0x220
* @phy_pattern: DP Phy test pattern from DPCD 0x248 * @phy_pattern: DP Phy test pattern from DPCD 0x248
* @hb2_reset: DP HBR2_COMPLIANCE_SCRAMBLER_RESET from DCPD 0x24A and 0x24B * @hbr2_reset: DP HBR2_COMPLIANCE_SCRAMBLER_RESET from DCPD 0x24A and 0x24B
* @custom80: DP Test_80BIT_CUSTOM_PATTERN from DPCDs 0x250 through 0x259 * @custom80: DP Test_80BIT_CUSTOM_PATTERN from DPCDs 0x250 through 0x259
* @enhanced_frame_cap: flag for enhanced frame capability. * @enhanced_frame_cap: flag for enhanced frame capability.
*/ */
......
...@@ -359,13 +359,6 @@ drm_load_edid_firmware(struct drm_connector *connector) ...@@ -359,13 +359,6 @@ drm_load_edid_firmware(struct drm_connector *connector)
} }
#endif #endif
/**
* drm_edid_are_equal - compare two edid blobs.
* @edid1: pointer to first blob
* @edid2: pointer to second blob
* This helper can be used during probing to determine if
* edid had changed.
*/
bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2); bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2);
int int
......
...@@ -338,7 +338,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, ...@@ -338,7 +338,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
const char *format, ...); const char *format, ...);
/** /**
* Error output. * DRM_DEV_ERROR() - Error output.
* *
* @dev: device pointer * @dev: device pointer
* @fmt: printf() like format string. * @fmt: printf() like format string.
...@@ -347,10 +347,12 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, ...@@ -347,10 +347,12 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
drm_dev_printk(dev, KERN_ERR, "*ERROR* " fmt, ##__VA_ARGS__) drm_dev_printk(dev, KERN_ERR, "*ERROR* " fmt, ##__VA_ARGS__)
/** /**
* Rate limited error output. Like DRM_ERROR() but won't flood the log. * DRM_DEV_ERROR_RATELIMITED() - Rate limited error output.
* *
* @dev: device pointer * @dev: device pointer
* @fmt: printf() like format string. * @fmt: printf() like format string.
*
* Like DRM_ERROR() but won't flood the log.
*/ */
#define DRM_DEV_ERROR_RATELIMITED(dev, fmt, ...) \ #define DRM_DEV_ERROR_RATELIMITED(dev, fmt, ...) \
({ \ ({ \
...@@ -375,15 +377,27 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, ...@@ -375,15 +377,27 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
}) })
/** /**
* Debug output. * DRM_DEV_DEBUG() - Debug output for generic drm code
* *
* @dev: device pointer * @dev: device pointer
* @fmt: printf() like format string. * @fmt: printf() like format string.
*/ */
#define DRM_DEV_DEBUG(dev, fmt, ...) \ #define DRM_DEV_DEBUG(dev, fmt, ...) \
drm_dev_dbg(dev, DRM_UT_CORE, fmt, ##__VA_ARGS__) drm_dev_dbg(dev, DRM_UT_CORE, fmt, ##__VA_ARGS__)
/**
* DRM_DEV_DEBUG_DRIVER() - Debug output for vendor specific part of the driver
*
* @dev: device pointer
* @fmt: printf() like format string.
*/
#define DRM_DEV_DEBUG_DRIVER(dev, fmt, ...) \ #define DRM_DEV_DEBUG_DRIVER(dev, fmt, ...) \
drm_dev_dbg(dev, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) drm_dev_dbg(dev, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
/**
* DRM_DEV_DEBUG_KMS() - Debug output for modesetting code
*
* @dev: device pointer
* @fmt: printf() like format string.
*/
#define DRM_DEV_DEBUG_KMS(dev, fmt, ...) \ #define DRM_DEV_DEBUG_KMS(dev, fmt, ...) \
drm_dev_dbg(dev, DRM_UT_KMS, fmt, ##__VA_ARGS__) drm_dev_dbg(dev, DRM_UT_KMS, fmt, ##__VA_ARGS__)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment