Skip to content

Commit

Permalink
Merge tag 'drm-misc-fixes-2024-01-03' of git://anongit.freedesktop.or…
Browse files Browse the repository at this point in the history
…g/drm/drm-misc into drm-fixes

drm-misc-fixes for v6.7 final:
- 2 small qaic fixes.
- Fixes for overflow in aux xfer.
- Fix uninitialised gamma lut in gmag200.
- Small compiler warning fix for backports of a ps8640 fix.

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/9ba866b4-3144-47a9-a2c0-7313c67249d7@linux.intel.com
  • Loading branch information
Dave Airlie committed Jan 4, 2024
2 parents bc2fdea + 11f9eb8 commit faa21f4
Show file tree
Hide file tree
Showing 9 changed files with 48 additions and 14 deletions.
15 changes: 14 additions & 1 deletion drivers/accel/qaic/mhi_controller.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,21 @@ static struct mhi_controller_config aic100_config = {

static int mhi_read_reg(struct mhi_controller *mhi_cntrl, void __iomem *addr, u32 *out)
{
u32 tmp = readl_relaxed(addr);
u32 tmp;

/*
* SOC_HW_VERSION quirk
* The SOC_HW_VERSION register (offset 0x224) is not reliable and
* may contain uninitialized values, including 0xFFFFFFFF. This could
* cause a false positive link down error. Instead, intercept any
* reads and provide the correct value of the register.
*/
if (addr - mhi_cntrl->regs == 0x224) {
*out = 0x60110200;
return 0;
}

tmp = readl_relaxed(addr);
if (tmp == U32_MAX)
return -EIO;

Expand Down
6 changes: 2 additions & 4 deletions drivers/accel/qaic/qaic_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,6 @@ struct drm_gem_object *qaic_gem_prime_import(struct drm_device *dev, struct dma_
struct dma_buf_attachment *attach;
struct drm_gem_object *obj;
struct qaic_bo *bo;
size_t size;
int ret;

bo = qaic_alloc_init_bo();
Expand All @@ -795,13 +794,12 @@ struct drm_gem_object *qaic_gem_prime_import(struct drm_device *dev, struct dma_
goto attach_fail;
}

size = PAGE_ALIGN(attach->dmabuf->size);
if (size == 0) {
if (!attach->dmabuf->size) {
ret = -EINVAL;
goto size_align_fail;
}

drm_gem_private_object_init(dev, obj, size);
drm_gem_private_object_init(dev, obj, attach->dmabuf->size);
/*
* skipping dma_buf_map_attachment() as we do not know the direction
* just yet. Once the direction is known in the subsequent IOCTL to
Expand Down
7 changes: 4 additions & 3 deletions drivers/gpu/drm/bridge/parade-ps8640.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux,
struct ps8640 *ps_bridge = aux_to_ps8640(aux);
struct regmap *map = ps_bridge->regmap[PAGE0_DP_CNTL];
struct device *dev = &ps_bridge->page[PAGE0_DP_CNTL]->dev;
unsigned int len = msg->size;
size_t len = msg->size;
unsigned int data;
unsigned int base;
int ret;
Expand Down Expand Up @@ -330,11 +330,12 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux,
return ret;
}

buf[i] = data;
if (i < msg->size)
buf[i] = data;
}
}

return len;
return min(len, msg->size);
}

static ssize_t ps8640_aux_transfer(struct drm_dp_aux *aux,
Expand Down
4 changes: 3 additions & 1 deletion drivers/gpu/drm/bridge/ti-sn65dsi86.c
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux,
u32 request_val = AUX_CMD_REQ(msg->request);
u8 *buf = msg->buffer;
unsigned int len = msg->size;
unsigned int short_len;
unsigned int val;
int ret;
u8 addr_len[SN_AUX_LENGTH_REG + 1 - SN_AUX_ADDR_19_16_REG];
Expand Down Expand Up @@ -600,7 +601,8 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux,
}

if (val & AUX_IRQ_STATUS_AUX_SHORT) {
ret = regmap_read(pdata->regmap, SN_AUX_LENGTH_REG, &len);
ret = regmap_read(pdata->regmap, SN_AUX_LENGTH_REG, &short_len);
len = min(len, short_len);
if (ret)
goto exit;
} else if (val & AUX_IRQ_STATUS_NAT_I2C_FAIL) {
Expand Down
5 changes: 5 additions & 0 deletions drivers/gpu/drm/mgag200/mgag200_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,11 @@ void mgag200_primary_plane_helper_atomic_disable(struct drm_plane *plane,
.destroy = drm_plane_cleanup, \
DRM_GEM_SHADOW_PLANE_FUNCS

void mgag200_crtc_set_gamma_linear(struct mga_device *mdev, const struct drm_format_info *format);
void mgag200_crtc_set_gamma(struct mga_device *mdev,
const struct drm_format_info *format,
struct drm_color_lut *lut);

enum drm_mode_status mgag200_crtc_helper_mode_valid(struct drm_crtc *crtc,
const struct drm_display_mode *mode);
int mgag200_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *new_state);
Expand Down
5 changes: 5 additions & 0 deletions drivers/gpu/drm/mgag200/mgag200_g200er.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,11 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,

mgag200_g200er_reset_tagfifo(mdev);

if (crtc_state->gamma_lut)
mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
else
mgag200_crtc_set_gamma_linear(mdev, format);

mgag200_enable_display(mdev);

if (funcs->enable_vidrst)
Expand Down
5 changes: 5 additions & 0 deletions drivers/gpu/drm/mgag200/mgag200_g200ev.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,11 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,

mgag200_g200ev_set_hiprilvl(mdev);

if (crtc_state->gamma_lut)
mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
else
mgag200_crtc_set_gamma_linear(mdev, format);

mgag200_enable_display(mdev);

if (funcs->enable_vidrst)
Expand Down
5 changes: 5 additions & 0 deletions drivers/gpu/drm/mgag200/mgag200_g200se.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,11 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,

mgag200_g200se_set_hiprilvl(mdev, adjusted_mode, format);

if (crtc_state->gamma_lut)
mgag200_crtc_set_gamma(mdev, format, crtc_state->gamma_lut->data);
else
mgag200_crtc_set_gamma_linear(mdev, format);

mgag200_enable_display(mdev);

if (funcs->enable_vidrst)
Expand Down
10 changes: 5 additions & 5 deletions drivers/gpu/drm/mgag200/mgag200_mode.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* This file contains setup code for the CRTC.
*/

static void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
const struct drm_format_info *format)
void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
const struct drm_format_info *format)
{
int i;

Expand Down Expand Up @@ -65,9 +65,9 @@ static void mgag200_crtc_set_gamma_linear(struct mga_device *mdev,
}
}

static void mgag200_crtc_set_gamma(struct mga_device *mdev,
const struct drm_format_info *format,
struct drm_color_lut *lut)
void mgag200_crtc_set_gamma(struct mga_device *mdev,
const struct drm_format_info *format,
struct drm_color_lut *lut)
{
int i;

Expand Down

0 comments on commit faa21f4

Please sign in to comment.