00001 /* 00002 * kernel_drivers/adi_core/adi_char.c 00003 * 00004 * Copyright (c) 2003-2004 Lukasz Dembinski <dembol@nasa.com.pl> 00005 * All Rights Reserved 00006 * 00007 * Date: 2004/01 00008 * Author: Lukasz Dembinski 00009 * Info: adi_char.c core file 00010 * Contact: mailto: <dembol@nasa.com.pl> 00011 * 00012 */ 00013 00014 #include <agnix/agnix.h> 00015 #include <agnix/adi/adi.h> 00016 #include <agnix/memory.h> 00017 #include <agnix/strings.h> 00018 #include <agnix/console.h> 00019 00020 #define MOD_NAME "CHAR: " 00021 00022 struct adi_chrdev_s adi_chrdevs[ADI_CHRDEV_MAX]; 00023 00024 extern int adi_chrdrv_kbd_init(void); 00025 extern int adi_sysconsole_init(void); 00026 extern int adi_text_display_init(void); 00027 00028 int __init adi_console_init(void) 00029 { 00030 adi_text_display_init(); 00031 adi_sysconsole_init(); 00032 00033 return 0; 00034 } 00035 00036 int adi_register_chrdev(struct adi_chrdev_s *chrdev) 00037 { 00038 u8 dev_minor = chrdev->dev_nr; 00039 00040 if (adi_chrdevs[dev_minor].dev_nr != 0) 00041 return -1; 00042 00043 memcpy((void *)&adi_chrdevs[dev_minor], (void *)chrdev, sizeof(struct adi_chrdev_s)); 00044 00045 return 0; 00046 } 00047 00048 struct adi_chrdev_s *adi_chrdev_find_by_name(char *name) 00049 { 00050 int i; 00051 00052 for (i = 0; i < ADI_CHRDEV_MAX; i++) { 00053 if (!strcmp(adi_chrdevs[i].dev_name, name)) 00054 return &adi_chrdevs[i]; 00055 } 00056 00057 return NULL; 00058 } 00059 00060 int __init adi_chrdrv_init(void) 00061 { 00062 printk(MOD_NAME "Initializing character drivers\n"); 00063 00064 adi_chrdrv_kbd_init(); 00065 00066 return 0; 00067 }