• Home
  • Raw
  • Download

Lines Matching +full:board +full:- +full:specific

2  * linux/drivers/video/hecubafb.c -- FB driver for Hecuba/Apollo controller
12 * This work was possible because of apollo display code from E-Ink's website
15 * available by E-Ink on its support site. Some commands such as 0xA4
24 * It is intended to be architecture independent. A board specific driver
46 /* Display specific information */
75 par->board->set_data(par, data); in apollo_send_data()
78 par->board->set_ctl(par, HCB_DS_BIT, 0); in apollo_send_data()
81 par->board->wait_for_ack(par, 0); in apollo_send_data()
84 par->board->set_ctl(par, HCB_DS_BIT, 1); in apollo_send_data()
87 par->board->wait_for_ack(par, 1); in apollo_send_data()
93 par->board->set_ctl(par, HCB_CD_BIT, 1); in apollo_send_command()
99 par->board->set_ctl(par, HCB_CD_BIT, 0); in apollo_send_command()
105 unsigned char *buf = (unsigned char __force *)par->info->screen_base; in hecubafb_dpy_update()
121 hecubafb_dpy_update(info->par); in hecubafb_dpy_deferred_io()
127 struct hecubafb_par *par = info->par; in hecubafb_fillrect()
137 struct hecubafb_par *par = info->par; in hecubafb_copyarea()
147 struct hecubafb_par *par = info->par; in hecubafb_imageblit()
161 struct hecubafb_par *par = info->par; in hecubafb_write()
167 if (info->state != FBINFO_STATE_RUNNING) in hecubafb_write()
168 return -EPERM; in hecubafb_write()
170 total_size = info->fix.smem_len; in hecubafb_write()
173 return -EFBIG; in hecubafb_write()
176 err = -EFBIG; in hecubafb_write()
182 err = -ENOSPC; in hecubafb_write()
184 count = total_size - p; in hecubafb_write()
187 dst = (void __force *) (info->screen_base + p); in hecubafb_write()
190 err = -EFAULT; in hecubafb_write()
217 struct hecuba_board *board; in hecubafb_probe() local
218 int retval = -ENOMEM; in hecubafb_probe()
223 /* pick up board specific routines */ in hecubafb_probe()
224 board = dev->dev.platform_data; in hecubafb_probe()
225 if (!board) in hecubafb_probe()
226 return -EINVAL; in hecubafb_probe()
228 /* try to count device specific driver, if can't, platform recalls */ in hecubafb_probe()
229 if (!try_module_get(board->owner)) in hecubafb_probe()
230 return -ENODEV; in hecubafb_probe()
238 info = framebuffer_alloc(sizeof(struct hecubafb_par), &dev->dev); in hecubafb_probe()
242 info->screen_base = (char __force __iomem *)videomemory; in hecubafb_probe()
243 info->fbops = &hecubafb_ops; in hecubafb_probe()
245 info->var = hecubafb_var; in hecubafb_probe()
246 info->fix = hecubafb_fix; in hecubafb_probe()
247 info->fix.smem_len = videomemorysize; in hecubafb_probe()
248 par = info->par; in hecubafb_probe()
249 par->info = info; in hecubafb_probe()
250 par->board = board; in hecubafb_probe()
251 par->send_command = apollo_send_command; in hecubafb_probe()
252 par->send_data = apollo_send_data; in hecubafb_probe()
254 info->flags = FBINFO_FLAG_DEFAULT | FBINFO_VIRTFB; in hecubafb_probe()
256 info->fbdefio = &hecubafb_defio; in hecubafb_probe()
268 retval = par->board->init(par); in hecubafb_probe()
278 module_put(board->owner); in hecubafb_probe()
287 struct hecubafb_par *par = info->par; in hecubafb_remove()
290 vfree((void __force *)info->screen_base); in hecubafb_remove()
291 if (par->board->remove) in hecubafb_remove()
292 par->board->remove(par); in hecubafb_remove()
293 module_put(par->board->owner); in hecubafb_remove()