Message ID | 1386459345-17731-10-git-send-email-robdclark@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
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?
On Mon, Dec 9, 2013 at 12:36 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote: > 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? yeah, probably.. looks like I fumbled slightly when re-arranging patches.. BR, -R
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c index 823eee5..197b348 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c @@ -17,6 +17,7 @@ #include <linux/gpio.h> +#include "msm_kms.h" #include "hdmi.h" struct hdmi_connector { diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h index ede0266..d5e6819 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h @@ -19,6 +19,7 @@ #define __MDP4_KMS_H__ #include "msm_drv.h" +#include "msm_kms.h" #include "mdp/mdp_kms.h" #include "mdp4.xml.h" diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 2e3d746..8b3097a 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -17,6 +17,7 @@ #include "msm_drv.h" #include "msm_gpu.h" +#include "msm_kms.h" static void msm_fb_output_poll_changed(struct drm_device *dev) { diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 3f9ba33..13a25f9 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -136,36 +136,6 @@ void __msm_fence_worker(struct work_struct *work); (_cb)->func = _func; \ } while (0) -/* 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); - int msm_register_mmu(struct drm_device *dev, struct msm_mmu *mmu); int msm_wait_fence_interruptable(struct drm_device *dev, uint32_t fence, diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index 0286c0e..81bafdf 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c @@ -16,6 +16,7 @@ */ #include "msm_drv.h" +#include "msm_kms.h" #include "drm_crtc.h" #include "drm_crtc_helper.h" 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); + +#endif /* __MSM_KMS_H__ */
Signed-off-by: Rob Clark <robdclark@gmail.com> --- drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 1 + drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h | 1 + drivers/gpu/drm/msm/msm_drv.c | 1 + drivers/gpu/drm/msm/msm_drv.h | 30 ---------------- drivers/gpu/drm/msm/msm_fb.c | 1 + drivers/gpu/drm/msm/msm_kms.h | 57 +++++++++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 drivers/gpu/drm/msm/msm_kms.h