Skip to content
Snippets Groups Projects
Select Git revision
  • 61df9ca231075e7031ed3dcf8b9986dfd80050f6
  • drm-misc-templates default
  • wip/final/kci-gitlab-lava-v1
  • wip/vignesh/kci-lava-gitlab-runner
  • kci-gitlab-igt-v8
  • kci-gitlab-igt-v4
  • drm-misc-fixes-2024-10-02
  • drm-misc-next-2024-09-26
  • drm-misc-fixes-2024-09-26
  • drm-misc-next-2024-09-20
  • drm-misc-fixes-2024-09-12
  • drm-misc-fixes-2024-09-05
  • drm-misc-next-fixes-2024-09-05
  • drm-misc-fixes-2024-08-29
  • drm-misc-next-2024-08-29
  • drm-misc-next-2024-08-22
  • drm-misc-fixes-2024-08-22
  • drm-misc-next-2024-08-16
  • drm-misc-fixes-2024-08-15
  • drm-misc-next-2024-08-09
  • drm-misc-fixes-2024-08-08
  • drm-misc-next-2024-08-01
  • drm-misc-fixes-2024-08-01
  • drm-misc-next-fixes-2024-07-25
  • drm-misc-next-fixes-2024-07-19
  • drm-misc-next-fixes-2024-07-11
26 results

simpledrm.c

Blame
  • simpledrm.c 27.45 KiB
    // SPDX-License-Identifier: GPL-2.0-only
    
    #include <linux/clk.h>
    #include <linux/of_clk.h>
    #include <linux/minmax.h>
    #include <linux/of_address.h>
    #include <linux/platform_data/simplefb.h>
    #include <linux/platform_device.h>
    #include <linux/pm_domain.h>
    #include <linux/regulator/consumer.h>
    
    #include <drm/drm_aperture.h>
    #include <drm/drm_atomic.h>
    #include <drm/drm_atomic_state_helper.h>
    #include <drm/drm_connector.h>
    #include <drm/drm_crtc_helper.h>
    #include <drm/drm_damage_helper.h>
    #include <drm/drm_device.h>
    #include <drm/drm_drv.h>
    #include <drm/drm_fbdev_generic.h>
    #include <drm/drm_format_helper.h>
    #include <drm/drm_gem_atomic_helper.h>
    #include <drm/drm_gem_framebuffer_helper.h>
    #include <drm/drm_gem_shmem_helper.h>
    #include <drm/drm_managed.h>
    #include <drm/drm_modeset_helper_vtables.h>
    #include <drm/drm_plane_helper.h>
    #include <drm/drm_probe_helper.h>
    
    #define DRIVER_NAME	"simpledrm"
    #define DRIVER_DESC	"DRM driver for simple-framebuffer platform devices"
    #define DRIVER_DATE	"20200625"
    #define DRIVER_MAJOR	1
    #define DRIVER_MINOR	0
    
    /*
     * Helpers for simplefb
     */
    
    static int
    simplefb_get_validated_int(struct drm_device *dev, const char *name,
    			   uint32_t value)
    {
    	if (value > INT_MAX) {
    		drm_err(dev, "simplefb: invalid framebuffer %s of %u\n",
    			name, value);
    		return -EINVAL;
    	}
    	return (int)value;
    }
    
    static int
    simplefb_get_validated_int0(struct drm_device *dev, const char *name,
    			    uint32_t value)
    {
    	if (!value) {
    		drm_err(dev, "simplefb: invalid framebuffer %s of %u\n",
    			name, value);
    		return -EINVAL;
    	}
    	return simplefb_get_validated_int(dev, name, value);
    }
    
    static const struct drm_format_info *
    simplefb_get_validated_format(struct drm_device *dev, const char *format_name)
    {
    	static const struct simplefb_format formats[] = SIMPLEFB_FORMATS;
    	const struct simplefb_format *fmt = formats;
    	const struct simplefb_format *end = fmt + ARRAY_SIZE(formats);
    	const struct drm_format_info *info;