Merge tag 'drm-misc-next-2019-01-23' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 5.1: UAPI Changes: - Addition of the Allwinner tiled format modifier Cross-subsystem Changes: Core Changes: - dma-buf documentation improvements - Removal of now unused fbdev helpers - Addition of new drm fbdev helpers - Improvements to tinydrm - Addition of new drm_fourcc helpers - Impromevents to i2c-over-aux to handle I2C_M_STOP Driver Changes: - Add support for the TI DS90C185 LVDS bridge - Improvements to the thc63lvdm83d bridge - Improvements to sun4i YUV and scaler support - Fix to the powerdown sequence of panel-innolux Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <maxime.ripard@bootlin.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190123110317.h4tovujaydo2bfz2@flea
This commit is contained in:
@@ -78,6 +78,9 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter,
|
||||
bool
|
||||
drm_atomic_helper_damage_iter_next(struct drm_atomic_helper_damage_iter *iter,
|
||||
struct drm_rect *rect);
|
||||
bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state,
|
||||
struct drm_plane_state *state,
|
||||
struct drm_rect *rect);
|
||||
|
||||
/**
|
||||
* drm_helper_get_plane_damage_clips - Returns damage clips in &drm_rect.
|
||||
|
||||
@@ -2,31 +2,9 @@
|
||||
#ifndef __DRM_FB_CMA_HELPER_H__
|
||||
#define __DRM_FB_CMA_HELPER_H__
|
||||
|
||||
struct drm_fbdev_cma;
|
||||
struct drm_gem_cma_object;
|
||||
|
||||
struct drm_fb_helper_surface_size;
|
||||
struct drm_framebuffer_funcs;
|
||||
struct drm_fb_helper_funcs;
|
||||
struct drm_framebuffer;
|
||||
struct drm_fb_helper;
|
||||
struct drm_device;
|
||||
struct drm_file;
|
||||
struct drm_mode_fb_cmd2;
|
||||
struct drm_plane;
|
||||
struct drm_plane_state;
|
||||
|
||||
int drm_fb_cma_fbdev_init(struct drm_device *dev, unsigned int preferred_bpp,
|
||||
unsigned int max_conn_count);
|
||||
void drm_fb_cma_fbdev_fini(struct drm_device *dev);
|
||||
|
||||
struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
|
||||
unsigned int preferred_bpp, unsigned int max_conn_count);
|
||||
void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma);
|
||||
|
||||
void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
|
||||
void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
|
||||
|
||||
struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
|
||||
unsigned int plane);
|
||||
|
||||
|
||||
@@ -143,6 +143,123 @@ struct drm_format_name_buf {
|
||||
char str[32];
|
||||
};
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_packed - check that the format info matches a YUV
|
||||
* format with data laid in a single plane
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a packed YUV format.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_packed(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->num_planes == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_semiplanar - check that the format info matches a YUV
|
||||
* format with data laid in two planes (luminance and chrominance)
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a semiplanar YUV format.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_semiplanar(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->num_planes == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_planar - check that the format info matches a YUV
|
||||
* format with data laid in three planes (one for each YUV component)
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a planar YUV format.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_planar(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->num_planes == 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_sampling_410 - check that the format info matches a
|
||||
* YUV format with 4:1:0 sub-sampling
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a YUV format with 4:1:0
|
||||
* sub-sampling.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_sampling_410(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->hsub == 4 && info->vsub == 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_sampling_411 - check that the format info matches a
|
||||
* YUV format with 4:1:1 sub-sampling
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a YUV format with 4:1:1
|
||||
* sub-sampling.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_sampling_411(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->hsub == 4 && info->vsub == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_sampling_420 - check that the format info matches a
|
||||
* YUV format with 4:2:0 sub-sampling
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a YUV format with 4:2:0
|
||||
* sub-sampling.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_sampling_420(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->hsub == 2 && info->vsub == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_sampling_422 - check that the format info matches a
|
||||
* YUV format with 4:2:2 sub-sampling
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a YUV format with 4:2:2
|
||||
* sub-sampling.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_sampling_422(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->hsub == 2 && info->vsub == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_format_info_is_yuv_sampling_444 - check that the format info matches a
|
||||
* YUV format with 4:4:4 sub-sampling
|
||||
* @info: format info
|
||||
*
|
||||
* Returns:
|
||||
* A boolean indicating whether the format info matches a YUV format with 4:4:4
|
||||
* sub-sampling.
|
||||
*/
|
||||
static inline bool
|
||||
drm_format_info_is_yuv_sampling_444(const struct drm_format_info *info)
|
||||
{
|
||||
return info->is_yuv && info->hsub == 1 && info->vsub == 1;
|
||||
}
|
||||
|
||||
const struct drm_format_info *__drm_format_info(u32 format);
|
||||
const struct drm_format_info *drm_format_info(u32 format);
|
||||
const struct drm_format_info *
|
||||
|
||||
@@ -25,6 +25,9 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file,
|
||||
struct drm_framebuffer *
|
||||
drm_gem_fb_create(struct drm_device *dev, struct drm_file *file,
|
||||
const struct drm_mode_fb_cmd2 *mode_cmd);
|
||||
struct drm_framebuffer *
|
||||
drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file,
|
||||
const struct drm_mode_fb_cmd2 *mode_cmd);
|
||||
|
||||
int drm_gem_fb_prepare_fb(struct drm_plane *plane,
|
||||
struct drm_plane_state *state);
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
* FIXME: All users of drm_can_sleep should be removed (see todo.rst)
|
||||
*
|
||||
* Returns:
|
||||
* True if kgdb is active or we are in an atomic context or irqs are disabled
|
||||
* False if kgdb is active, we are in atomic context or irqs are disabled.
|
||||
*/
|
||||
static inline bool drm_can_sleep(void)
|
||||
{
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include <drm/tinydrm/tinydrm.h>
|
||||
|
||||
struct drm_rect;
|
||||
struct spi_device;
|
||||
struct gpio_desc;
|
||||
struct regulator;
|
||||
@@ -67,6 +68,8 @@ int mipi_dbi_init(struct device *dev, struct mipi_dbi *mipi,
|
||||
const struct drm_simple_display_pipe_funcs *pipe_funcs,
|
||||
struct drm_driver *driver,
|
||||
const struct drm_display_mode *mode, unsigned int rotation);
|
||||
void mipi_dbi_pipe_update(struct drm_simple_display_pipe *pipe,
|
||||
struct drm_plane_state *old_state);
|
||||
void mipi_dbi_enable_flush(struct mipi_dbi *mipi,
|
||||
struct drm_crtc_state *crtc_state,
|
||||
struct drm_plane_state *plan_state);
|
||||
@@ -80,7 +83,7 @@ u32 mipi_dbi_spi_cmd_max_speed(struct spi_device *spi, size_t len);
|
||||
int mipi_dbi_command_read(struct mipi_dbi *mipi, u8 cmd, u8 *val);
|
||||
int mipi_dbi_command_buf(struct mipi_dbi *mipi, u8 cmd, u8 *data, size_t len);
|
||||
int mipi_dbi_buf_copy(void *dst, struct drm_framebuffer *fb,
|
||||
struct drm_clip_rect *clip, bool swap);
|
||||
struct drm_rect *clip, bool swap);
|
||||
/**
|
||||
* mipi_dbi_command - MIPI DCS command with optional parameter(s)
|
||||
* @mipi: MIPI structure
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
#define __LINUX_TINYDRM_HELPERS_H
|
||||
|
||||
struct backlight_device;
|
||||
struct tinydrm_device;
|
||||
struct drm_clip_rect;
|
||||
struct drm_framebuffer;
|
||||
struct drm_rect;
|
||||
struct spi_transfer;
|
||||
struct spi_message;
|
||||
struct spi_device;
|
||||
@@ -33,23 +33,15 @@ static inline bool tinydrm_machine_little_endian(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
bool tinydrm_merge_clips(struct drm_clip_rect *dst,
|
||||
struct drm_clip_rect *src, unsigned int num_clips,
|
||||
unsigned int flags, u32 max_width, u32 max_height);
|
||||
int tinydrm_fb_dirty(struct drm_framebuffer *fb,
|
||||
struct drm_file *file_priv,
|
||||
unsigned int flags, unsigned int color,
|
||||
struct drm_clip_rect *clips,
|
||||
unsigned int num_clips);
|
||||
void tinydrm_memcpy(void *dst, void *vaddr, struct drm_framebuffer *fb,
|
||||
struct drm_clip_rect *clip);
|
||||
struct drm_rect *clip);
|
||||
void tinydrm_swab16(u16 *dst, void *vaddr, struct drm_framebuffer *fb,
|
||||
struct drm_clip_rect *clip);
|
||||
struct drm_rect *clip);
|
||||
void tinydrm_xrgb8888_to_rgb565(u16 *dst, void *vaddr,
|
||||
struct drm_framebuffer *fb,
|
||||
struct drm_clip_rect *clip, bool swap);
|
||||
struct drm_rect *clip, bool swap);
|
||||
void tinydrm_xrgb8888_to_gray8(u8 *dst, void *vaddr, struct drm_framebuffer *fb,
|
||||
struct drm_clip_rect *clip);
|
||||
struct drm_rect *clip);
|
||||
|
||||
size_t tinydrm_spi_max_transfer_size(struct spi_device *spi, size_t max_len);
|
||||
bool tinydrm_spi_bpw_supported(struct spi_device *spi, u8 bpw);
|
||||
|
||||
@@ -10,14 +10,9 @@
|
||||
#ifndef __LINUX_TINYDRM_H
|
||||
#define __LINUX_TINYDRM_H
|
||||
|
||||
#include <linux/mutex.h>
|
||||
#include <drm/drm_simple_kms_helper.h>
|
||||
|
||||
struct drm_clip_rect;
|
||||
struct drm_driver;
|
||||
struct drm_file;
|
||||
struct drm_framebuffer;
|
||||
struct drm_framebuffer_funcs;
|
||||
|
||||
/**
|
||||
* struct tinydrm_device - tinydrm device
|
||||
@@ -32,24 +27,6 @@ struct tinydrm_device {
|
||||
* @pipe: Display pipe structure
|
||||
*/
|
||||
struct drm_simple_display_pipe pipe;
|
||||
|
||||
/**
|
||||
* @dirty_lock: Serializes framebuffer flushing
|
||||
*/
|
||||
struct mutex dirty_lock;
|
||||
|
||||
/**
|
||||
* @fb_funcs: Framebuffer functions used when creating framebuffers
|
||||
*/
|
||||
const struct drm_framebuffer_funcs *fb_funcs;
|
||||
|
||||
/**
|
||||
* @fb_dirty: Framebuffer dirty callback
|
||||
*/
|
||||
int (*fb_dirty)(struct drm_framebuffer *framebuffer,
|
||||
struct drm_file *file_priv, unsigned flags,
|
||||
unsigned color, struct drm_clip_rect *clips,
|
||||
unsigned num_clips);
|
||||
};
|
||||
|
||||
static inline struct tinydrm_device *
|
||||
@@ -82,13 +59,10 @@ pipe_to_tinydrm(struct drm_simple_display_pipe *pipe)
|
||||
.clock = 1 /* pass validation */
|
||||
|
||||
int devm_tinydrm_init(struct device *parent, struct tinydrm_device *tdev,
|
||||
const struct drm_framebuffer_funcs *fb_funcs,
|
||||
struct drm_driver *driver);
|
||||
int devm_tinydrm_register(struct tinydrm_device *tdev);
|
||||
void tinydrm_shutdown(struct tinydrm_device *tdev);
|
||||
|
||||
void tinydrm_display_pipe_update(struct drm_simple_display_pipe *pipe,
|
||||
struct drm_plane_state *old_state);
|
||||
int
|
||||
tinydrm_display_pipe_init(struct tinydrm_device *tdev,
|
||||
const struct drm_simple_display_pipe_funcs *funcs,
|
||||
|
||||
Reference in New Issue
Block a user