Exemplo n.º 1
0
static void st7585fb_deferred_io(struct fb_info *info,
				struct list_head *pagelist)
{
	unsigned int row, col, t, i;
	unsigned char *vram = info->screen_base;
	struct st7585_data *dd = info->par;
	
	for (col = 0; col < 8; col++) {
		spisend(dd, 0x40 | col);
		spisend(dd, 0x8e);

		for (row = 0; row < 75; row++) {
			t = 0;

			for (i = 0; i < 8; i++)
				t |= ((vram[col + row * 8]) & (1 << (7-i))) ? (1 << i) : 0;
			spisend(dd, 0x100 | t);
		}
	}
}
Exemplo n.º 2
0
/* Input Arguments: x -> Command Byte to be sent */
void wrcmd(unsigned char x){
	DC = 0;
	CE = 0;
	spisend(x);
	CE = 1;
}
Exemplo n.º 3
0
void wrdata(unsigned char x){
	DC = 1;
	CE = 0;
	spisend(x);
	CE = 1;
}
Exemplo n.º 4
0
static int __devinit st7585_probe(struct spi_device *spi)
{
	struct st7585_data *drvdata;
	int ret;

	drvdata = devm_kzalloc(&spi->dev, sizeof(*drvdata), GFP_KERNEL);
	if (!drvdata)
		return -ENOMEM;

	drvdata->spi = spi;
	spin_lock_init(&drvdata->lock);
	spi_set_drvdata(spi, drvdata);

	spi->mode = 3;
	spi->bits_per_word = 9;
	spi->max_speed_hz = 10000000;
	ret = spi_setup(spi);

	if (ret)
		return ret;

	spisend(drvdata, 0x21);
	spisend(drvdata, 0x90);
	spisend(drvdata, 0x20);
	spisend(drvdata, 0x0c);
	spisend(drvdata, 0x8e);

	drvdata->info = framebuffer_alloc(0, &spi->dev);
	if (!drvdata->info) {
		return -ENOMEM;
	}

	st7585_fix.smem_start = (unsigned long)drvdata->vram;
 	st7585_fix.smem_len = VRAM_LEN;

	drvdata->info->par = drvdata;
	drvdata->info->flags = FBINFO_DEFAULT;
	drvdata->info->var = st7585_var;
	drvdata->info->fix = st7585_fix;
	drvdata->info->monspecs.hfmin = 0;
	drvdata->info->monspecs.hfmax = 0;
	drvdata->info->monspecs.vfmin = 10000;
	drvdata->info->monspecs.vfmax = 10000;
	drvdata->info->monspecs.dpms = 0;
	drvdata->info->fbops = &st7585fb_ops;
	drvdata->info->screen_base = drvdata->vram;
	drvdata->info->fbdefio = &st7585fb_defio;
	fb_deferred_io_init(drvdata->info);

        ret = register_framebuffer(drvdata->info);
	
	if (ret < 0) {
		framebuffer_release(drvdata->info);
		return -EINVAL;
	}

        printk(KERN_INFO "fb%d: %s frame buffer device\n",
	       drvdata->info->node, drvdata->info->fix.id);
	

	return 0;
}