On Sun, Dec 8, 2013 at 12:35 AM, Rob Clark robdclark@gmail.com wrote:
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h new file mode 100644 index 0000000..e42973c --- /dev/null +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -0,0 +1,57 @@ +/*
- 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 __MSM_KMS_H__ +#define __MSM_KMS_H__
+#include <linux/clk.h> +#include <linux/regulator/consumer.h>
+#include "msm_drv.h"
+/* As there are different display controller blocks depending on the
- snapdragon version, the kms support is split out and the appropriate
- implementation is loaded at runtime. The kms module is responsible
- for constructing the appropriate planes/crtcs/encoders/connectors.
- */
+struct msm_kms_funcs {
/* hw initialization: */
int (*hw_init)(struct msm_kms *kms);
/* irq handling: */
void (*irq_preinstall)(struct msm_kms *kms);
int (*irq_postinstall)(struct msm_kms *kms);
void (*irq_uninstall)(struct msm_kms *kms);
irqreturn_t (*irq)(struct msm_kms *kms);
int (*enable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
void (*disable_vblank)(struct msm_kms *kms, struct drm_crtc *crtc);
/* misc: */
const struct msm_format *(*get_format)(struct msm_kms *kms, uint32_t format);
long (*round_pixclk)(struct msm_kms *kms, unsigned long rate,
struct drm_encoder *encoder);
/* cleanup: */
void (*preclose)(struct msm_kms *kms, struct drm_file *file);
void (*destroy)(struct msm_kms *kms);
+};
+struct msm_kms {
const struct msm_kms_funcs *funcs;
+};
+struct msm_kms *mdp4_kms_init(struct drm_device *dev); +struct msm_kms *mdp5_kms_init(struct drm_device *dev);
Shouldn't this be introduced in a follow-up patch that also adds the definition?