forked from Minki/linux
drm/msm: mdp4_format -> mdp_format
This can be shared between mdp4 and mdp5. Both use the same set of parameters to describe the format to the hw. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
facb4f4e7f
commit
10a02eb646
@ -12,9 +12,9 @@ msm-y := \
|
||||
hdmi/hdmi_i2c.o \
|
||||
hdmi/hdmi_phy_8960.o \
|
||||
hdmi/hdmi_phy_8x60.o \
|
||||
mdp/mdp_format.o \
|
||||
mdp/mdp4/mdp4_crtc.o \
|
||||
mdp/mdp4/mdp4_dtv_encoder.o \
|
||||
mdp/mdp4/mdp4_format.o \
|
||||
mdp/mdp4/mdp4_irq.o \
|
||||
mdp/mdp4/mdp4_kms.o \
|
||||
mdp/mdp4/mdp4_plane.o \
|
||||
|
@ -262,8 +262,8 @@ static void blend_setup(struct drm_crtc *crtc)
|
||||
enum mdp4_pipe pipe_id = mdp4_plane_pipe(plane);
|
||||
int idx = idxs[pipe_id];
|
||||
if (idx > 0) {
|
||||
const struct mdp4_format *format =
|
||||
to_mdp4_format(msm_framebuffer_format(plane->fb));
|
||||
const struct mdp_format *format =
|
||||
to_mdp_format(msm_framebuffer_format(plane->fb));
|
||||
alpha[idx-1] = format->alpha_enable;
|
||||
}
|
||||
mixer_cfg |= mixercfg(mdp4_crtc->mixer, pipe_id, stages[idx]);
|
||||
|
@ -155,7 +155,7 @@ static const struct msm_kms_funcs kms_funcs = {
|
||||
.irq = mdp4_irq,
|
||||
.enable_vblank = mdp4_enable_vblank,
|
||||
.disable_vblank = mdp4_disable_vblank,
|
||||
.get_format = mdp4_get_format,
|
||||
.get_format = mdp_get_format,
|
||||
.round_pixclk = mdp4_round_pixclk,
|
||||
.preclose = mdp4_preclose,
|
||||
.destroy = mdp4_destroy,
|
||||
|
@ -18,12 +18,8 @@
|
||||
#ifndef __MDP4_KMS_H__
|
||||
#define __MDP4_KMS_H__
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
|
||||
#include "msm_drv.h"
|
||||
#include "mdp/mdp_common.xml.h"
|
||||
#include "mdp/mdp_kms.h"
|
||||
#include "mdp4.xml.h"
|
||||
|
||||
|
||||
@ -74,16 +70,6 @@ struct mdp4_platform_config {
|
||||
uint32_t max_clk;
|
||||
};
|
||||
|
||||
struct mdp4_format {
|
||||
struct msm_format base;
|
||||
enum mdp_bpc bpc_r, bpc_g, bpc_b;
|
||||
enum mdp_bpc_alpha bpc_a;
|
||||
uint8_t unpack[4];
|
||||
bool alpha_enable, unpack_tight;
|
||||
uint8_t cpp, unpack_count;
|
||||
};
|
||||
#define to_mdp4_format(x) container_of(x, struct mdp4_format, base)
|
||||
|
||||
static inline void mdp4_write(struct mdp4_kms *mdp4_kms, u32 reg, u32 data)
|
||||
{
|
||||
msm_writel(data, mdp4_kms->mmio + reg);
|
||||
@ -189,9 +175,15 @@ void mdp4_irq_unregister(struct mdp4_kms *mdp4_kms, struct mdp4_irq *irq);
|
||||
int mdp4_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc);
|
||||
void mdp4_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc);
|
||||
|
||||
uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *formats,
|
||||
uint32_t max_formats);
|
||||
const struct msm_format *mdp4_get_format(struct msm_kms *kms, uint32_t format);
|
||||
static inline
|
||||
uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats,
|
||||
uint32_t max_formats)
|
||||
{
|
||||
/* TODO when we have YUV, we need to filter supported formats
|
||||
* based on pipe_id..
|
||||
*/
|
||||
return mdp_get_formats(pixel_formats, max_formats);
|
||||
}
|
||||
|
||||
void mdp4_plane_install_properties(struct drm_plane *plane,
|
||||
struct drm_mode_object *obj);
|
||||
|
@ -132,7 +132,7 @@ int mdp4_plane_mode_set(struct drm_plane *plane,
|
||||
struct mdp4_plane *mdp4_plane = to_mdp4_plane(plane);
|
||||
struct mdp4_kms *mdp4_kms = get_kms(plane);
|
||||
enum mdp4_pipe pipe = mdp4_plane->pipe;
|
||||
const struct mdp4_format *format;
|
||||
const struct mdp_format *format;
|
||||
uint32_t op_mode = 0;
|
||||
uint32_t phasex_step = MDP4_VG_PHASE_STEP_DEFAULT;
|
||||
uint32_t phasey_step = MDP4_VG_PHASE_STEP_DEFAULT;
|
||||
@ -175,7 +175,7 @@ int mdp4_plane_mode_set(struct drm_plane *plane,
|
||||
|
||||
mdp4_plane_set_scanout(plane, fb);
|
||||
|
||||
format = to_mdp4_format(msm_framebuffer_format(fb));
|
||||
format = to_mdp_format(msm_framebuffer_format(fb));
|
||||
|
||||
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRC_FORMAT(pipe),
|
||||
MDP4_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) |
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
#include "msm_drv.h"
|
||||
#include "mdp4_kms.h"
|
||||
#include "mdp_kms.h"
|
||||
|
||||
#define FMT(name, a, r, g, b, e0, e1, e2, e3, alpha, tight, c, cnt) { \
|
||||
.base = { .pixel_format = DRM_FORMAT_ ## name }, \
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
#define BPC0A 0
|
||||
|
||||
static const struct mdp4_format formats[] = {
|
||||
static const struct mdp_format formats[] = {
|
||||
/* name a r g b e0 e1 e2 e3 alpha tight cpp cnt */
|
||||
FMT(ARGB8888, 8, 8, 8, 8, 1, 0, 2, 3, true, true, 4, 4),
|
||||
FMT(XRGB8888, 8, 8, 8, 8, 1, 0, 2, 3, false, true, 4, 4),
|
||||
@ -44,12 +44,11 @@ static const struct mdp4_format formats[] = {
|
||||
FMT(BGR565, 0, 5, 6, 5, 2, 0, 1, 0, false, true, 2, 3),
|
||||
};
|
||||
|
||||
uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats,
|
||||
uint32_t max_formats)
|
||||
uint32_t mdp_get_formats(uint32_t *pixel_formats, uint32_t max_formats)
|
||||
{
|
||||
uint32_t i;
|
||||
for (i = 0; i < ARRAY_SIZE(formats); i++) {
|
||||
const struct mdp4_format *f = &formats[i];
|
||||
const struct mdp_format *f = &formats[i];
|
||||
|
||||
if (i == max_formats)
|
||||
break;
|
||||
@ -60,11 +59,11 @@ uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats,
|
||||
return i;
|
||||
}
|
||||
|
||||
const struct msm_format *mdp4_get_format(struct msm_kms *kms, uint32_t format)
|
||||
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ARRAY_SIZE(formats); i++) {
|
||||
const struct mdp4_format *f = &formats[i];
|
||||
const struct mdp_format *f = &formats[i];
|
||||
if (f->base.pixel_format == format)
|
||||
return &f->base;
|
||||
}
|
42
drivers/gpu/drm/msm/mdp/mdp_kms.h
Normal file
42
drivers/gpu/drm/msm/mdp/mdp_kms.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Red Hat
|
||||
* Author: Rob Clark <robdclark@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __MDP_KMS_H__
|
||||
#define __MDP_KMS_H__
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
|
||||
#include "msm_drv.h"
|
||||
#include "mdp_common.xml.h"
|
||||
|
||||
struct mdp_format {
|
||||
struct msm_format base;
|
||||
enum mdp_bpc bpc_r, bpc_g, bpc_b;
|
||||
enum mdp_bpc_alpha bpc_a;
|
||||
uint8_t unpack[4];
|
||||
bool alpha_enable, unpack_tight;
|
||||
uint8_t cpp, unpack_count;
|
||||
};
|
||||
#define to_mdp_format(x) container_of(x, struct mdp_format, base)
|
||||
|
||||
|
||||
uint32_t mdp_get_formats(uint32_t *formats, uint32_t max_formats);
|
||||
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format);
|
||||
|
||||
#endif /* __MDP_KMS_H__ */
|
Loading…
Reference in New Issue
Block a user