static int __ioremap(dev_info_t *dip, drm_device_iomap_t *iomap) { off_t offset; int regnum; int ret; regnum = drm_get_pci_index_reg( dip, iomap->paddr, iomap->size, &offset); if (regnum < 0) { DRM_ERROR("can not find regster entry: " "paddr=0x%x, size=0x%x", iomap->paddr, iomap->size); return -ENXIO; } ret = ddi_regs_map_setup(dip, regnum, (caddr_t *)&(iomap->kvaddr), (offset_t)offset, (offset_t)iomap->size, &dev_attr, &iomap->acc_handle); if (ret != DDI_SUCCESS) { DRM_ERROR("failed to map regs: " "regnum=%d, offset=0x%x", regnum, offset); iomap->acc_handle = NULL; return -EFAULT; } return 0; }
int do_ioremap(dev_info_t *devi, drm_device_iomap_t *iomap) { int regnum; off_t offset; int ret; regnum = drm_get_pci_index_reg(devi, iomap->physical, iomap->size, &offset); if (regnum < 0) { DRM_ERROR("do_ioremap: can not find regster entry," " start=0x%x, size=0x%x", iomap->physical, iomap->size); return (ENXIO); } iomap->drm_regnum = regnum; ret = ddi_regs_map_setup(devi, iomap->drm_regnum, (caddr_t *)&(iomap->drm_base), (offset_t)offset, (offset_t)iomap->size, &dev_attr, &iomap->drm_handle); if (ret < 0) { DRM_ERROR("do_ioremap: failed to map regs: regno=%d," " offset=0x%x", regnum, offset); iomap->drm_handle = NULL; return (EFAULT); } return (0); }