Commit 546f98c1 authored by Alexandre Belloni's avatar Alexandre Belloni Committed by Bartlomiej Zolnierkiewicz
Browse files

video: fbdev: atmel_lcdfb: drop AVR and platform_data support



Make the driver OF only as since AVR32 has been removed from the kernel,
there are only OF enabled platform using it.

Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: default avatarNicolas Ferre <nicolas.ferre@microchip.com>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
parent 787a7923
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -866,8 +866,8 @@ config FB_S1D13XXX
	  <http://vdc.epson.com/>

config FB_ATMEL
	tristate "AT91/AT32 LCD Controller support"
	depends on FB && HAVE_FB_ATMEL
	tristate "AT91 LCD Controller support"
	depends on FB && OF && HAVE_FB_ATMEL
	select FB_BACKLIGHT
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
@@ -875,7 +875,7 @@ config FB_ATMEL
	select FB_MODE_HELPERS
	select VIDEOMODE_HELPERS
	help
	  This enables support for the AT91/AT32 LCD Controller.
	  This enables support for the AT91 LCD Controller.

config FB_NVIDIA
	tristate "nVidia Framebuffer Support"
+4 −110
Original line number Diff line number Diff line
/*
 *  Driver for AT91/AT32 LCD Controller
 *  Driver for AT91 LCD Controller
 *
 *  Copyright (C) 2007 Atmel Corporation
 *
@@ -99,86 +99,6 @@ static struct atmel_lcdfb_config at91sam9rl_config = {
	.have_intensity_bit	= true,
};

static struct atmel_lcdfb_config at32ap_config = {
	.have_hozval		= true,
};

static const struct platform_device_id atmel_lcdfb_devtypes[] = {
	{
		.name = "at91sam9261-lcdfb",
		.driver_data = (unsigned long)&at91sam9261_config,
	}, {
		.name = "at91sam9263-lcdfb",
		.driver_data = (unsigned long)&at91sam9263_config,
	}, {
		.name = "at91sam9g10-lcdfb",
		.driver_data = (unsigned long)&at91sam9g10_config,
	}, {
		.name = "at91sam9g45-lcdfb",
		.driver_data = (unsigned long)&at91sam9g45_config,
	}, {
		.name = "at91sam9g45es-lcdfb",
		.driver_data = (unsigned long)&at91sam9g45es_config,
	}, {
		.name = "at91sam9rl-lcdfb",
		.driver_data = (unsigned long)&at91sam9rl_config,
	}, {
		.name = "at32ap-lcdfb",
		.driver_data = (unsigned long)&at32ap_config,
	}, {
		/* terminator */
	}
};
MODULE_DEVICE_TABLE(platform, atmel_lcdfb_devtypes);

static struct atmel_lcdfb_config *
atmel_lcdfb_get_config(struct platform_device *pdev)
{
	unsigned long data;

	data = platform_get_device_id(pdev)->driver_data;

	return (struct atmel_lcdfb_config *)data;
}

#if defined(CONFIG_ARCH_AT91)
#define	ATMEL_LCDFB_FBINFO_DEFAULT	(FBINFO_DEFAULT \
					 | FBINFO_PARTIAL_PAN_OK \
					 | FBINFO_HWACCEL_YPAN)

static inline void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo,
					struct fb_var_screeninfo *var,
					struct fb_info *info)
{

}
#elif defined(CONFIG_AVR32)
#define	ATMEL_LCDFB_FBINFO_DEFAULT	(FBINFO_DEFAULT \
					| FBINFO_PARTIAL_PAN_OK \
					| FBINFO_HWACCEL_XPAN \
					| FBINFO_HWACCEL_YPAN)

static void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo,
				     struct fb_var_screeninfo *var,
				     struct fb_info *info)
{
	u32 dma2dcfg;
	u32 pixeloff;

	pixeloff = (var->xoffset * info->var.bits_per_pixel) & 0x1f;

	dma2dcfg = (info->var.xres_virtual - info->var.xres)
		 * info->var.bits_per_pixel / 8;
	dma2dcfg |= pixeloff << ATMEL_LCDC_PIXELOFF_OFFSET;
	lcdc_writel(sinfo, ATMEL_LCDC_DMA2DCFG, dma2dcfg);

	/* Update configuration */
	lcdc_writel(sinfo, ATMEL_LCDC_DMACON,
		    lcdc_readl(sinfo, ATMEL_LCDC_DMACON)
		    | ATMEL_LCDC_DMAUPDT);
}
#endif

static u32 contrast_ctr = ATMEL_LCDC_PS_DIV8
		| ATMEL_LCDC_POL_POSITIVE
		| ATMEL_LCDC_ENA_PWMENABLE;
@@ -404,8 +324,6 @@ static void atmel_lcdfb_update_dma(struct fb_info *info,

	/* Set framebuffer DMA base address and pixel offset */
	lcdc_writel(sinfo, ATMEL_LCDC_DMABADDR1, dma_addr);

	atmel_lcdfb_update_dma2d(sinfo, var, info);
}

static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo)
@@ -978,7 +896,6 @@ static void atmel_lcdfb_stop_clock(struct atmel_lcdfb_info *sinfo)
	clk_disable_unprepare(sinfo->lcdc_clk);
}

#ifdef CONFIG_OF
static const struct of_device_id atmel_lcdfb_dt_ids[] = {
	{ .compatible = "atmel,at91sam9261-lcdc" , .data = &at91sam9261_config, },
	{ .compatible = "atmel,at91sam9263-lcdc" , .data = &at91sam9263_config, },
@@ -986,7 +903,6 @@ static const struct of_device_id atmel_lcdfb_dt_ids[] = {
	{ .compatible = "atmel,at91sam9g45-lcdc" , .data = &at91sam9g45_config, },
	{ .compatible = "atmel,at91sam9g45es-lcdc" , .data = &at91sam9g45es_config, },
	{ .compatible = "atmel,at91sam9rl-lcdc" , .data = &at91sam9rl_config, },
	{ .compatible = "atmel,at32ap-lcdc" , .data = &at32ap_config, },
	{ /* sentinel */ }
};

@@ -1122,19 +1038,12 @@ put_display_node:
	of_node_put(display_np);
	return ret;
}
#else
static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
{
	return 0;
}
#endif

static int __init atmel_lcdfb_probe(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct fb_info *info;
	struct atmel_lcdfb_info *sinfo;
	struct atmel_lcdfb_pdata *pdata = NULL;
	struct resource *regs = NULL;
	struct resource *map = NULL;
	struct fb_modelist *modelist;
@@ -1159,21 +1068,6 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
		ret = atmel_lcdfb_of_init(sinfo);
		if (ret)
			goto free_info;
	} else if (dev_get_platdata(dev)) {
		struct fb_monspecs *monspecs;
		int i;

		pdata = dev_get_platdata(dev);
		monspecs = pdata->default_monspecs;
		sinfo->pdata = *pdata;

		for (i = 0; i < monspecs->modedb_len; i++)
			fb_add_videomode(&monspecs->modedb[i], &info->modelist);

		sinfo->config = atmel_lcdfb_get_config(pdev);

		info->var.bits_per_pixel = pdata->default_bpp ? pdata->default_bpp : 16;
		memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs));
	} else {
		dev_err(dev, "cannot get default configuration\n");
		goto free_info;
@@ -1186,7 +1080,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
	if (IS_ERR(sinfo->reg_lcd))
		sinfo->reg_lcd = NULL;

	info->flags = ATMEL_LCDFB_FBINFO_DEFAULT;
	info->flags = FBINFO_DEFAULT | FBINFO_PARTIAL_PAN_OK |
		      FBINFO_HWACCEL_YPAN;
	info->pseudo_palette = sinfo->pseudo_palette;
	info->fbops = &atmel_lcdfb_ops;

@@ -1435,7 +1330,6 @@ static struct platform_driver atmel_lcdfb_driver = {
	.remove		= __exit_p(atmel_lcdfb_remove),
	.suspend	= atmel_lcdfb_suspend,
	.resume		= atmel_lcdfb_resume,
	.id_table	= atmel_lcdfb_devtypes,
	.driver		= {
		.name	= "atmel_lcdfb",
		.of_match_table	= of_match_ptr(atmel_lcdfb_dt_ids),
@@ -1444,6 +1338,6 @@ static struct platform_driver atmel_lcdfb_driver = {

module_platform_driver_probe(atmel_lcdfb_driver, atmel_lcdfb_probe);

MODULE_DESCRIPTION("AT91/AT32 LCD Controller framebuffer driver");
MODULE_DESCRIPTION("AT91 LCD Controller framebuffer driver");
MODULE_AUTHOR("Nicolas Ferre <nicolas.ferre@atmel.com>");
MODULE_LICENSE("GPL");