示例#1
0
static int
mach64_attach(device_t nbdev)
{
	drm_device_t *dev = device_get_softc(nbdev);

	bzero(dev, sizeof(drm_device_t));
	mach64_configure(dev);
	return drm_attach(nbdev, mach64_pciidlist);
}
示例#2
0
void
r128drm_attach(struct device *parent, struct device *self, void *aux)
{
	struct pci_attach_args *pa = aux;
	struct drm_device *dev = (struct drm_device *)self;

	r128_configure(dev);
	return drm_attach(parent, self, pa, r128_pciidlist);
}
示例#3
0
static int
i915_attach(device_t nbdev)
{
	struct drm_device *dev = device_get_softc(nbdev);

	bzero(dev, sizeof(struct drm_device));
	i915_configure(dev);
	return drm_attach(nbdev, i915_pciidlist);
}
示例#4
0
static int
radeon_attach(device_t nbdev)
{
	drm_device_t *dev = device_get_softc(nbdev);

	bzero(dev, sizeof(drm_device_t));
	radeon_configure(dev);
	return drm_attach(nbdev, radeon_pciidlist);
}
示例#5
0
static void
sisdrm_attach(struct device *parent, struct device *self, void *aux)
{
	struct pci_attach_args *pa = aux;
	drm_device_t *dev = device_private(self);

	sis_configure(dev);
	return drm_attach(self, pa, sis_pciidlist);
}
示例#6
0
static int
i915_attach(device_t kdev)
{
	struct drm_device *dev;

	dev = device_get_softc(kdev);
	if (i915_modeset == 1)
		i915_driver_info.driver_features |= DRIVER_MODESET;
	dev->driver = &i915_driver_info;
	return (drm_attach(kdev, i915_pciidlist));
}
示例#7
0
static int
pscnv_attach(device_t kdev)
{
	struct drm_device *dev;
	dev = device_get_softc(kdev);
	if (nouveau_modeset == 1)
		driver.driver_features |= DRIVER_MODESET;
	dev->driver = &driver;
	/* drm_sleep_locking_init(dev); XXX PLHK */
	return (drm_attach(kdev, pciidlist));
}
示例#8
0
static int
mach64_attach(device_t kdev)
{
	struct drm_device *dev = device_get_softc(kdev);

	dev->driver = malloc(sizeof(struct drm_driver_info), DRM_MEM_DRIVER,
	    M_WAITOK | M_ZERO);

	mach64_configure(dev);

	return drm_attach(kdev, mach64_pciidlist);
}
示例#9
0
static void
i915drm_attach(struct device *parent, struct device *self, void *aux)
{
	struct pci_attach_args *pa = aux;
	drm_device_t *dev = (drm_device_t *)self;

	i915_configure(dev);

	pmf_device_register(self, NULL, NULL);

	drm_attach(self, pa, i915_pciidlist);
}
示例#10
0
static void
sisdrm_attach(device_t parent, device_t self, void *aux)
{
	struct pci_attach_args *pa = aux;
	struct drm_device *dev = device_private(self);

	dev->driver = malloc(sizeof(struct drm_driver_info), DRM_MEM_DRIVER,
	    M_WAITOK | M_ZERO);

	sis_configure(dev);

	drm_attach(self, pa, sis_pciidlist);
}
示例#11
0
static int
radeon_attach(device_t kdev)
{
    struct drm_device *dev;

    dev = device_get_softc(kdev);
    if (radeon_modeset == 1) {
        kms_driver.driver_features |= DRIVER_MODESET;
        kms_driver.max_ioctl = radeon_max_kms_ioctl;
        radeon_register_atpx_handler();
    }
    dev->driver = &kms_driver;
    return (drm_attach(kdev, pciidlist));
}
示例#12
0
/* static int __init i915_init(void) */
static int
i915_attach(device_t kdev)
{
	struct drm_device *dev;

	dev = device_get_softc(kdev);

	driver.num_ioctls = i915_max_ioctl;

	if (i915_modeset == 1)
		driver.driver_features |= DRIVER_MODESET;

	dev->driver = &driver;
	return (drm_attach(kdev, i915_attach_list));
}
示例#13
0
static int
vboxvideo_attach(device_t kdev)
{
	struct drm_device *dev = device_get_softc(kdev);

#if __FreeBSD_version >= 702000
	dev->driver = malloc(sizeof(struct drm_driver_info), DRM_MEM_DRIVER,
	    M_WAITOK | M_ZERO);
#else
	bzero(&dev->driver, sizeof(struct drm_driver_info));
#endif

	vboxvideo_configure(dev);

	return drm_attach(kdev, vboxvideo_pciidlist);
}
示例#14
0
static void
radeondrm_attach(device_t parent, device_t self, void *aux)
{
	struct pci_attach_args *pa = aux;
	struct drm_device *dev = device_private(self);

	dev->driver = malloc(sizeof(struct drm_driver_info), DRM_MEM_DRIVER,
	    M_WAITOK | M_ZERO);

	radeon_configure(dev);

	if (!pmf_device_register(self, radeondrm_suspend, radeondrm_resume))
		aprint_error_dev(self, "couldn't establish power handler\n");

	drm_attach(self, pa, radeon_pciidlist);
}
示例#15
0
static int
radeon_attach(device_t kdev)
{
	struct drm_device *dev;

	dev = device_get_softc(kdev);
	if (radeon_modeset == 1) {
		kms_driver.driver_features |= DRIVER_MODESET;
		kms_driver.max_ioctl = radeon_max_kms_ioctl;
#ifdef COMPAT_FREEBSD32
		kms_driver.compat_ioctls = radeon_compat_ioctls;
		kms_driver.compat_ioctls_nr = &radeon_num_compat_ioctls;
#endif
		radeon_register_atpx_handler();
	}
	dev->driver = &kms_driver;
	return (drm_attach(kdev, pciidlist));
}
示例#16
0
/**
 * Attach entry point, to attach a device to the system or resume it.
 *
 * @param   pDip            The module structure instance.
 * @param   enmCmd          Operation type (attach/resume).
 *
 * @returns corresponding solaris error code.
 */
static int VBoxVideoSolarisAttach(dev_info_t *pDip, ddi_attach_cmd_t enmCmd)
{
    LogFlow((DEVICE_NAME ":VBoxVideoSolarisAttach pDip=%p enmCmd=%d\n", pDip, enmCmd));
    cmn_err(CE_NOTE, DEVICE_NAME ":attach\n");

    switch (enmCmd)
    {
        case DDI_ATTACH:
        {
            drm_device_t *pState;
            int Instance = ddi_get_instance(pDip);
            int rc = ddi_soft_state_zalloc(g_pVBoxVideoSolarisState, Instance);
            if (rc == DDI_SUCCESS)
            {
                pState = ddi_get_soft_state(g_pVBoxVideoSolarisState, Instance);
                pState->dip = pDip;
                pState->driver = &g_VBoxVideoSolarisDRMDriver;

                /*
                 * Register using the DRM module which will create the minor nodes
                 */
                void *pDRMHandle = drm_supp_register(pDip, pState);
                if (pDRMHandle)
                {
                    pState->drm_handle = pDRMHandle;

                    /*
                     * Probe with our pci-id.
                     * -XXX- is probing really required???
                     */
                    pState->drm_supported = DRM_UNSUPPORT;
                    rc = drm_probe(pState, vboxvideo_pciidlist);
                    if (rc == DDI_SUCCESS)
                    {
                        pState->drm_supported = DRM_SUPPORT;

                        /*
                         * Call the common attach DRM routine.
                         */
                        rc = drm_attach(pState);
                        if (rc == DDI_SUCCESS)
                        {
                            return DDI_SUCCESS;
                        }
                        else
                            LogRel((DEVICE_NAME ":VBoxVideoSolarisAttach drm_attach failed.rc=%d\n", rc));
                    }
                    else
                        LogRel((DEVICE_NAME ":VBoxVideoSolarisAttach drm_probe failed.rc=%d\n", rc));

                    drm_supp_unregister(pDRMHandle);
                }
                else
                    LogRel((DEVICE_NAME ":VBoxVideoSolarisAttach drm_supp_register failed.\n"));

                ddi_soft_state_free(g_pVBoxVideoSolarisState, Instance);
            }
            else
                LogRel((DEVICE_NAME ":VBoxVideoSolarisAttach failed to alloc memory for soft state.rc=%d\n", rc));
            return DDI_FAILURE;
        }

        case DDI_RESUME:
        {
            /* Nothing to do here... */
            return DDI_SUCCESS;
        }
    }
    return DDI_FAILURE;
}