mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 13:16:22 +00:00
drm/mipi-dsi: add mipi_dsi_compression_mode_ext()
Add the extended version of mipi_dsi_compression_mode(). It provides a way to specify the algorithm and PPS selector. Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240408-lg-sw43408-panel-v5-3-4e092da22991@linaro.org
This commit is contained in:
parent
de1c705c50
commit
b724455e89
@ -644,6 +644,43 @@ int mipi_dsi_set_maximum_return_packet_size(struct mipi_dsi_device *dsi,
|
||||
}
|
||||
EXPORT_SYMBOL(mipi_dsi_set_maximum_return_packet_size);
|
||||
|
||||
/**
|
||||
* mipi_dsi_compression_mode_ext() - enable/disable DSC on the peripheral
|
||||
* @dsi: DSI peripheral device
|
||||
* @enable: Whether to enable or disable the DSC
|
||||
* @algo: Selected compression algorithm
|
||||
* @pps_selector: Select PPS from the table of pre-stored or uploaded PPS entries
|
||||
*
|
||||
* Enable or disable Display Stream Compression on the peripheral.
|
||||
*
|
||||
* Return: 0 on success or a negative error code on failure.
|
||||
*/
|
||||
int mipi_dsi_compression_mode_ext(struct mipi_dsi_device *dsi, bool enable,
|
||||
enum mipi_dsi_compression_algo algo,
|
||||
unsigned int pps_selector)
|
||||
{
|
||||
u8 tx[2] = { };
|
||||
struct mipi_dsi_msg msg = {
|
||||
.channel = dsi->channel,
|
||||
.type = MIPI_DSI_COMPRESSION_MODE,
|
||||
.tx_len = sizeof(tx),
|
||||
.tx_buf = tx,
|
||||
};
|
||||
int ret;
|
||||
|
||||
if (algo > 3 || pps_selector > 3)
|
||||
return -EINVAL;
|
||||
|
||||
tx[0] = (enable << 0) |
|
||||
(algo << 1) |
|
||||
(pps_selector << 4);
|
||||
|
||||
ret = mipi_dsi_device_transfer(dsi, &msg);
|
||||
|
||||
return (ret < 0) ? ret : 0;
|
||||
}
|
||||
EXPORT_SYMBOL(mipi_dsi_compression_mode_ext);
|
||||
|
||||
/**
|
||||
* mipi_dsi_compression_mode() - enable/disable DSC on the peripheral
|
||||
* @dsi: DSI peripheral device
|
||||
@ -656,17 +693,7 @@ EXPORT_SYMBOL(mipi_dsi_set_maximum_return_packet_size);
|
||||
*/
|
||||
int mipi_dsi_compression_mode(struct mipi_dsi_device *dsi, bool enable)
|
||||
{
|
||||
/* Note: Needs updating for non-default PPS or algorithm */
|
||||
u8 tx[2] = { enable << 0, 0 };
|
||||
struct mipi_dsi_msg msg = {
|
||||
.channel = dsi->channel,
|
||||
.type = MIPI_DSI_COMPRESSION_MODE,
|
||||
.tx_len = sizeof(tx),
|
||||
.tx_buf = tx,
|
||||
};
|
||||
int ret = mipi_dsi_device_transfer(dsi, &msg);
|
||||
|
||||
return (ret < 0) ? ret : 0;
|
||||
return mipi_dsi_compression_mode_ext(dsi, enable, MIPI_DSI_COMPRESSION_DSC, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(mipi_dsi_compression_mode);
|
||||
|
||||
|
@ -226,6 +226,12 @@ static inline int mipi_dsi_pixel_format_to_bpp(enum mipi_dsi_pixel_format fmt)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
enum mipi_dsi_compression_algo {
|
||||
MIPI_DSI_COMPRESSION_DSC = 0,
|
||||
MIPI_DSI_COMPRESSION_VENDOR = 3,
|
||||
/* other two values are reserved, DSI 1.3 */
|
||||
};
|
||||
|
||||
struct mipi_dsi_device *
|
||||
mipi_dsi_device_register_full(struct mipi_dsi_host *host,
|
||||
const struct mipi_dsi_device_info *info);
|
||||
@ -242,6 +248,9 @@ int mipi_dsi_turn_on_peripheral(struct mipi_dsi_device *dsi);
|
||||
int mipi_dsi_set_maximum_return_packet_size(struct mipi_dsi_device *dsi,
|
||||
u16 value);
|
||||
int mipi_dsi_compression_mode(struct mipi_dsi_device *dsi, bool enable);
|
||||
int mipi_dsi_compression_mode_ext(struct mipi_dsi_device *dsi, bool enable,
|
||||
enum mipi_dsi_compression_algo algo,
|
||||
unsigned int pps_selector);
|
||||
int mipi_dsi_picture_parameter_set(struct mipi_dsi_device *dsi,
|
||||
const struct drm_dsc_picture_parameter_set *pps);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user