static ssize_t pport_write(struct file *filp, char *buf, size_t count, loff_t *f_pos) { if(count < MAXSIZE) { copy_from_user(d_buf, buf, count); d_buf[count] = 0; printlcd(d_buf); *f_pos += count; return count; } else { copy_from_user(d_buf, buf, MAXSIZE - 1); d_buf[MAXSIZE - 1] = 0; printlcd(d_buf); *f_pos += MAXSIZE - 1; return MAXSIZE - 1; } }
void SHOW_LINES() { INTERRUPTS_OFF gotolcd(0); // Set Cursor Line-1 strcpy(lcdbuf,LINE_1); printlcd(); gotolcd(0x40); // Set Cursor Line-2 strcpy(lcdbuf,LINE_2); printlcd(); INTERRUPTS_ON }
void cleanup_module(void) { printk(KERN_ALERT "pport module is going to terminate\n"); printlcd("DRIVER REMOVED "); unregister_chrdev(major, "registered_pport_61"); clear(); }
int init_module(void) { int a; a = register_chrdev(major, "registered_pport_61", &fops); if(a < 0) { printk(KERN_ALERT "error: can't register major number %d\n", major); return a; } port = check_region(0x378, 1); if(port) printk(KERN_ALERT "pport cannot reserve 0x378\n"); request_region(0x378, 1, "registered_pport_61"); //lcd setup// outb(0, 0x378); udelay(10000); lcd_init(); udelay(10000); printlcd("DRIVER INSERTED "); return 0; }