diff --git a/drivers/video/fb.c b/drivers/video/fb.c index 85db904..0be465f 100644 --- a/drivers/video/fb.c +++ b/drivers/video/fb.c @@ -84,9 +84,9 @@ ret = info->fbops->fb_activate_var(info); if (!ret) { - dev->map_base = (unsigned long)info->screen_base; + dev->resource[0].start = (resource_size_t)info->screen_base; info->cdev.size = info->xres * info->yres * (info->bits_per_pixel >> 3); - dev->size = info->cdev.size; + dev->resource[0].size = info->cdev.size; dev_param_set_generic(dev, param, val); } else info->cdev.size = 0; @@ -107,15 +107,19 @@ int id = get_free_deviceid("fb"); struct device_d *dev; + dev = &info->dev; + info->cdev.ops = &fb_ops; info->cdev.name = asprintf("fb%d", id); info->cdev.size = info->xres * info->yres * (info->bits_per_pixel >> 3); - info->cdev.dev = &info->dev; + info->cdev.dev = dev; info->cdev.priv = info; - info->cdev.dev->map_base = (unsigned long)info->screen_base; - info->cdev.dev->size = info->cdev.size; + dev->resource = xzalloc(sizeof(struct resource)); + dev->resource[0].start = (resource_size_t)info->screen_base; + dev->resource[0].size = info->cdev.size; + dev->resource[0].flags = IORESOURCE_MEM; + dev->num_resources = 1; - dev = &info->dev; dev->priv = info; dev->id = id; diff --git a/drivers/video/s3c.c b/drivers/video/s3c.c index 3715499..d079fde 100644 --- a/drivers/video/s3c.c +++ b/drivers/video/s3c.c @@ -331,11 +331,12 @@ static void s3cfb_info(struct device_d *hw_dev) { uint32_t con1, addr1, addr2, addr3; + struct s3cfb_info *fbi = hw_dev->priv; - con1 = readl(hw_dev->map_base + LCDCON1); - addr1 = readl(hw_dev->map_base + LCDSADDR1); - addr2 = readl(hw_dev->map_base + LCDSADDR2); - addr3 = readl(hw_dev->map_base + LCDSADDR3); + con1 = readl(fbi->base + LCDCON1); + addr1 = readl(fbi->base + LCDSADDR1); + addr2 = readl(fbi->base + LCDSADDR2); + addr3 = readl(fbi->base + LCDSADDR3); printf(" Video hardware info:\n"); printf(" Video clock is running at %u Hz\n", s3c24xx_get_hclk() / ((GET_CLKVAL(con1) + 1) * 2)); @@ -371,15 +372,16 @@ if (! pdata) return -ENODEV; - writel(0, hw_dev->map_base + LCDCON1); - writel(0, hw_dev->map_base + LCDCON5); /* FIXME not 0 for some displays */ + fbi.base = dev_request_mem_region(hw_dev, 0); + writel(0, fbi.base + LCDCON1); + writel(0, fbi.base + LCDCON5); /* FIXME not 0 for some displays */ /* just init */ fbi.info.priv = &fbi; /* add runtime hardware info */ fbi.hw_dev = hw_dev; - fbi.base = (void*)hw_dev->map_base; + hw_dev->priv = &fbi; /* add runtime video info */ fbi.info.mode_list = pdata->mode_list; diff --git a/drivers/video/stm.c b/drivers/video/stm.c index ee2f026..78acad7 100644 --- a/drivers/video/stm.c +++ b/drivers/video/stm.c @@ -488,7 +488,7 @@ /* add runtime hardware info */ fbi.hw_dev = hw_dev; - fbi.base = (void *)hw_dev->map_base; + fbi.base = dev_request_mem_region(hw_dev, 0); fbi.pdata = pdata; /* add runtime video info */