drm_irq.c revision e92e3a8694f157faf8a9e44096a70ada86c556bf
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * drm_irq.c -- IRQ IOCTL and function support
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Created: Fri Oct 18 2003 by anholt@FreeBSD.org
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Copyright 2003 Eric Anholt
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * All Rights Reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Permission is hereby granted, free of charge, to any person obtaining a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * copy of this software and associated documentation files (the "Software"),
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * to deal in the Software without restriction, including without limitation
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * the rights to use, copy, modify, merge, publish, distribute, sublicense,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and/or sell copies of the Software, and to permit persons to whom the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Software is furnished to do so, subject to the following conditions:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The above copyright notice and this permission notice (including the next
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * paragraph) shall be included in all copies or substantial portions of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Software.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Authors:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Eric Anholt <anholt@FreeBSD.org>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Use is subject to license terms.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#pragma ident "%Z%%M% %I% %E% SMI"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_COPY_FROM_USER_IOCTL(irq, (drm_irq_busid_t *)data, sizeof (irq));
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_COPY_TO_USER_IOCTL((drm_irq_busid_t *)data, irq, sizeof (irq));
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw return (0);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_ERROR("drm_install_irq_handle: cannot get vgatext's dip");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "high-level interrupts are not supported");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_ERROR("drm_install_irq_handle: cannot get iblock cookie");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mutex_init(&dev->irq_lock, NULL, MUTEX_DRIVER, (void *)dev->intr_block);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* setup the interrupt handler */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_ERROR("drm_install_irq_handle: ddi_add_intr failed");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_DEBUG("drm_install_irq_handle: add the intr handle successful");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mutex_init(&dev->tasklet_lock, NULL, MUTEX_DRIVER, NULL);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* before installing handler */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* install handler */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_ERROR("drm_irq_install: drm_install_irq_handle failed");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw /* after installing handler */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstatic void
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw DRM_COPY_FROM_USER_IOCTL(ctl, (drm_control_t *)data, sizeof (ctl));
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Handle drivers whose DRM used to require IRQ setup but the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * no longer does.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw return (0);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*ARGSUSED*/