[PATCH 09/13] drm/msm: split out msm_kms.h

Erik Faye-Lund kusmabite at gmail.com
Mon Dec 9 09:36:02 PST 2013


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?


More information about the dri-devel mailing list