On Sun, Dec 8, 2013 at 12:35 AM, Rob Clark <robdclark at 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 at 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?