Commit 10a02eb6 authored by Rob Clark's avatar Rob Clark

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: default avatarRob Clark <robdclark@gmail.com>
parent facb4f4e
...@@ -12,9 +12,9 @@ msm-y := \ ...@@ -12,9 +12,9 @@ msm-y := \
hdmi/hdmi_i2c.o \ hdmi/hdmi_i2c.o \
hdmi/hdmi_phy_8960.o \ hdmi/hdmi_phy_8960.o \
hdmi/hdmi_phy_8x60.o \ hdmi/hdmi_phy_8x60.o \
mdp/mdp_format.o \
mdp/mdp4/mdp4_crtc.o \ mdp/mdp4/mdp4_crtc.o \
mdp/mdp4/mdp4_dtv_encoder.o \ mdp/mdp4/mdp4_dtv_encoder.o \
mdp/mdp4/mdp4_format.o \
mdp/mdp4/mdp4_irq.o \ mdp/mdp4/mdp4_irq.o \
mdp/mdp4/mdp4_kms.o \ mdp/mdp4/mdp4_kms.o \
mdp/mdp4/mdp4_plane.o \ mdp/mdp4/mdp4_plane.o \
......
...@@ -262,8 +262,8 @@ static void blend_setup(struct drm_crtc *crtc) ...@@ -262,8 +262,8 @@ static void blend_setup(struct drm_crtc *crtc)
enum mdp4_pipe pipe_id = mdp4_plane_pipe(plane); enum mdp4_pipe pipe_id = mdp4_plane_pipe(plane);
int idx = idxs[pipe_id]; int idx = idxs[pipe_id];
if (idx > 0) { if (idx > 0) {
const struct mdp4_format *format = const struct mdp_format *format =
to_mdp4_format(msm_framebuffer_format(plane->fb)); to_mdp_format(msm_framebuffer_format(plane->fb));
alpha[idx-1] = format->alpha_enable; alpha[idx-1] = format->alpha_enable;
} }
mixer_cfg |= mixercfg(mdp4_crtc->mixer, pipe_id, stages[idx]); mixer_cfg |= mixercfg(mdp4_crtc->mixer, pipe_id, stages[idx]);
......
...@@ -155,7 +155,7 @@ static const struct msm_kms_funcs kms_funcs = { ...@@ -155,7 +155,7 @@ static const struct msm_kms_funcs kms_funcs = {
.irq = mdp4_irq, .irq = mdp4_irq,
.enable_vblank = mdp4_enable_vblank, .enable_vblank = mdp4_enable_vblank,
.disable_vblank = mdp4_disable_vblank, .disable_vblank = mdp4_disable_vblank,
.get_format = mdp4_get_format, .get_format = mdp_get_format,
.round_pixclk = mdp4_round_pixclk, .round_pixclk = mdp4_round_pixclk,
.preclose = mdp4_preclose, .preclose = mdp4_preclose,
.destroy = mdp4_destroy, .destroy = mdp4_destroy,
......
...@@ -18,12 +18,8 @@ ...@@ -18,12 +18,8 @@
#ifndef __MDP4_KMS_H__ #ifndef __MDP4_KMS_H__
#define __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 "msm_drv.h"
#include "mdp/mdp_common.xml.h" #include "mdp/mdp_kms.h"
#include "mdp4.xml.h" #include "mdp4.xml.h"
...@@ -74,16 +70,6 @@ struct mdp4_platform_config { ...@@ -74,16 +70,6 @@ struct mdp4_platform_config {
uint32_t max_clk; 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) static inline void mdp4_write(struct mdp4_kms *mdp4_kms, u32 reg, u32 data)
{ {
msm_writel(data, mdp4_kms->mmio + reg); msm_writel(data, mdp4_kms->mmio + reg);
...@@ -189,9 +175,15 @@ void mdp4_irq_unregister(struct mdp4_kms *mdp4_kms, struct mdp4_irq *irq); ...@@ -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); int mdp4_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc);
void mdp4_disable_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, static inline
uint32_t max_formats); uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats,
const struct msm_format *mdp4_get_format(struct msm_kms *kms, uint32_t format); 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, void mdp4_plane_install_properties(struct drm_plane *plane,
struct drm_mode_object *obj); struct drm_mode_object *obj);
......
...@@ -132,7 +132,7 @@ int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -132,7 +132,7 @@ int mdp4_plane_mode_set(struct drm_plane *plane,
struct mdp4_plane *mdp4_plane = to_mdp4_plane(plane); struct mdp4_plane *mdp4_plane = to_mdp4_plane(plane);
struct mdp4_kms *mdp4_kms = get_kms(plane); struct mdp4_kms *mdp4_kms = get_kms(plane);
enum mdp4_pipe pipe = mdp4_plane->pipe; enum mdp4_pipe pipe = mdp4_plane->pipe;
const struct mdp4_format *format; const struct mdp_format *format;
uint32_t op_mode = 0; uint32_t op_mode = 0;
uint32_t phasex_step = MDP4_VG_PHASE_STEP_DEFAULT; uint32_t phasex_step = MDP4_VG_PHASE_STEP_DEFAULT;
uint32_t phasey_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, ...@@ -175,7 +175,7 @@ int mdp4_plane_mode_set(struct drm_plane *plane,
mdp4_plane_set_scanout(plane, fb); 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_write(mdp4_kms, REG_MDP4_PIPE_SRC_FORMAT(pipe),
MDP4_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) | MDP4_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) |
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include "msm_drv.h" #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) { \ #define FMT(name, a, r, g, b, e0, e1, e2, e3, alpha, tight, c, cnt) { \
.base = { .pixel_format = DRM_FORMAT_ ## name }, \ .base = { .pixel_format = DRM_FORMAT_ ## name }, \
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#define BPC0A 0 #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 */ /* 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(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), FMT(XRGB8888, 8, 8, 8, 8, 1, 0, 2, 3, false, true, 4, 4),
...@@ -44,12 +44,11 @@ static const struct mdp4_format formats[] = { ...@@ -44,12 +44,11 @@ static const struct mdp4_format formats[] = {
FMT(BGR565, 0, 5, 6, 5, 2, 0, 1, 0, false, true, 2, 3), 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 mdp_get_formats(uint32_t *pixel_formats, uint32_t max_formats)
uint32_t max_formats)
{ {
uint32_t i; uint32_t i;
for (i = 0; i < ARRAY_SIZE(formats); 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) if (i == max_formats)
break; break;
...@@ -60,11 +59,11 @@ uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats, ...@@ -60,11 +59,11 @@ uint32_t mdp4_get_formats(enum mdp4_pipe pipe_id, uint32_t *pixel_formats,
return i; 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; int i;
for (i = 0; i < ARRAY_SIZE(formats); 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) if (f->base.pixel_format == format)
return &f->base; return &f->base;
} }
......
/*
* 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__ */
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