From: Jean-Christophe PLAGNIOL-VILLARD Date: Sat, 16 May 2009 10:14:54 +0000 (+0200) Subject: stdio/device: rework function naming convention X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=52cb4d4f;p=project%2Fbcm63xx%2Fu-boot.git stdio/device: rework function naming convention So far the console API uses the following naming convention: ======Extract====== typedef struct device_t; int device_register (device_t * dev); int devices_init (void); int device_deregister(char *devname); struct list_head* device_get_list(void); device_t* device_get_by_name(char* name); device_t* device_clone(device_t *dev); ======= which is too generic and confusing. Instead of using device_XX and device_t we change this into stdio_XX and stdio_dev This will also allow to add later a generic device mechanism in order to have support for multiple devices and driver instances. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Edited commit message. Signed-off-by: Wolfgang Denk --- diff --git a/board/MAI/AmigaOneG3SE/ps2kbd.c b/board/MAI/AmigaOneG3SE/ps2kbd.c index a297005ed2..aa164b0c9f 100644 --- a/board/MAI/AmigaOneG3SE/ps2kbd.c +++ b/board/MAI/AmigaOneG3SE/ps2kbd.c @@ -34,7 +34,7 @@ */ #include #include -#include +#include #include "ps2kbd.h" @@ -226,7 +226,7 @@ int overwrite_console (void) int drv_isa_kbd_init (void) { int error; - device_t kbddev ; + struct stdio_dev kbddev ; char *stdinname = getenv ("stdin"); if(isa_kbd_init() == -1) @@ -239,7 +239,7 @@ int drv_isa_kbd_init (void) kbddev.getc = kbd_getc ; kbddev.tstc = kbd_testc ; - error = device_register (&kbddev); + error = stdio_register (&kbddev); if(error==0) { /* check if this is the standard input device */ if(strcmp(stdinname,DEVNAME)==0) { diff --git a/board/MAI/AmigaOneG3SE/video.c b/board/MAI/AmigaOneG3SE/video.c index fc27c68583..e24e28b392 100644 --- a/board/MAI/AmigaOneG3SE/video.c +++ b/board/MAI/AmigaOneG3SE/video.c @@ -22,7 +22,7 @@ */ #include -#include +#include #include "memio.h" #include @@ -98,7 +98,7 @@ int video_inited = 0; int drv_video_init(void) { int error, devices = 1 ; - device_t vgadev ; + struct stdio_dev vgadev ; if (video_inited) return 1; video_inited = 1; video_init(); @@ -112,7 +112,7 @@ int drv_video_init(void) vgadev.tstc = NULL; vgadev.start = video_start; - error = device_register (&vgadev); + error = stdio_register (&vgadev); if (error == 0) { diff --git a/board/bf527-ezkit/video.c b/board/bf527-ezkit/video.c index 2df6717308..0b6b7b2e76 100644 --- a/board/bf527-ezkit/video.c +++ b/board/bf527-ezkit/video.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include int gunzip(void *, int, unsigned char *, unsigned long *); @@ -272,7 +272,7 @@ void video_puts(const char *s) int drv_video_init(void) { int error, devices = 1; - device_t videodev; + struct stdio_dev videodev; u8 *dst; u32 fbmem_size = LCD_X_RES * LCD_Y_RES * LCD_PIXEL_SIZE + ACTIVE_VIDEO_MEM_OFFSET; @@ -311,7 +311,7 @@ int drv_video_init(void) videodev.putc = video_putc; /* 'putc' function */ videodev.puts = video_puts; /* 'puts' function */ - error = device_register(&videodev); + error = stdio_register(&videodev); return (error == 0) ? devices : error; } diff --git a/board/bf533-stamp/video.c b/board/bf533-stamp/video.c index 3c15eaa765..28ffa618fc 100644 --- a/board/bf533-stamp/video.c +++ b/board/bf533-stamp/video.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include int gunzip(void *, int, unsigned char *, unsigned long *); @@ -154,7 +154,7 @@ static void video_init(char *NTSCFrame) int drv_video_init(void) { - device_t videodev; + struct stdio_dev videodev; video_init((void *)NTSC_FRAME_ADDR); @@ -163,5 +163,5 @@ int drv_video_init(void) videodev.ext = DEV_EXT_VIDEO; videodev.flags = DEV_FLAGS_SYSTEM; - return device_register(&videodev); + return stdio_register(&videodev); } diff --git a/board/bf548-ezkit/video.c b/board/bf548-ezkit/video.c index a6f52bdfef..f4f1becae2 100644 --- a/board/bf548-ezkit/video.c +++ b/board/bf548-ezkit/video.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include int gunzip(void *, int, unsigned char *, unsigned long *); @@ -282,7 +282,7 @@ void video_puts(const char *s) int drv_video_init(void) { int error, devices = 1; - device_t videodev; + struct stdio_dev videodev; u8 *dst; u32 fbmem_size = LCD_X_RES * LCD_Y_RES * LCD_PIXEL_SIZE + ACTIVE_VIDEO_MEM_OFFSET; @@ -321,7 +321,7 @@ int drv_video_init(void) videodev.putc = video_putc; /* 'putc' function */ videodev.puts = video_puts; /* 'puts' function */ - error = device_register(&videodev); + error = stdio_register(&videodev); return (error == 0) ? devices : error; } diff --git a/board/bmw/bmw.c b/board/bmw/bmw.c index 41ce14f653..870011e6fc 100644 --- a/board/bmw/bmw.c +++ b/board/bmw/bmw.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c index 0ad878c293..63eba0c599 100644 --- a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c +++ b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c @@ -33,7 +33,7 @@ #include "../common/fsl_diu_fb.h" #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) -#include +#include #include #endif diff --git a/board/linkstation/avr.c b/board/linkstation/avr.c index 782b24a71a..ec6d400d34 100644 --- a/board/linkstation/avr.c +++ b/board/linkstation/avr.c @@ -22,7 +22,7 @@ */ #include #include -#include +#include /* Button codes from the AVR */ #define PWRR 0x20 /* Power button release */ diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c index d16939120a..243e3eb7f9 100644 --- a/board/mpl/common/common_util.c +++ b/board/mpl/common/common_util.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/board/mpl/common/isa.c b/board/mpl/common/isa.c index 91829d44f3..5d467b48dc 100644 --- a/board/mpl/common/isa.c +++ b/board/mpl/common/isa.c @@ -26,7 +26,7 @@ #include #include -#include +#include #include "isa.h" #include "piix4_pci.h" #include "kbd.h" diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c index a457635d4d..b0a9620232 100644 --- a/board/mpl/common/kbd.c +++ b/board/mpl/common/kbd.c @@ -28,7 +28,7 @@ */ #include #include -#include +#include #include "isa.h" #include "kbd.h" @@ -215,7 +215,7 @@ int overwrite_console (void) int drv_isa_kbd_init (void) { int error; - device_t kbddev ; + struct stdio_dev kbddev ; char *stdinname = getenv ("stdin"); if(isa_kbd_init()==-1) @@ -228,7 +228,7 @@ int drv_isa_kbd_init (void) kbddev.getc = kbd_getc ; kbddev.tstc = kbd_testc ; - error = device_register (&kbddev); + error = stdio_register (&kbddev); if(error==0) { /* check if this is the standard input device */ if(strcmp(stdinname,DEVNAME)==0) { diff --git a/board/mpl/pati/pati.c b/board/mpl/pati/pati.c index 85c5af956d..8f23d2dc0e 100644 --- a/board/mpl/pati/pati.c +++ b/board/mpl/pati/pati.c @@ -46,7 +46,7 @@ #include #include -#include +#include #include #define PLX9056_LOC #include "plx9056.h" @@ -447,7 +447,7 @@ int checkboard (void) int recbuf[REC_BUFFER_SIZE]; static int r_ptr = 0; int w_ptr; -device_t pci_con_dev; +struct stdio_dev pci_con_dev; int conn=0; int buff_full=0; @@ -584,7 +584,7 @@ void pci_con_connect(void) pci_con_dev.puts = pci_con_puts; pci_con_dev.getc = pci_con_getc; pci_con_dev.tstc = pci_con_tstc; - device_register (&pci_con_dev); + stdio_register (&pci_con_dev); printf("PATI ready for PCI connection, type ctrl-c for exit\n"); do { udelay(10); diff --git a/board/netphone/phone_console.c b/board/netphone/phone_console.c index d9b0ad3768..3d82e047c1 100644 --- a/board/netphone/phone_console.c +++ b/board/netphone/phone_console.c @@ -37,7 +37,7 @@ #include #include -#include +#include #include @@ -325,7 +325,7 @@ int phone_getc(void) int drv_phone_init(void) { - device_t console_dev; + struct stdio_dev console_dev; console_init(); @@ -340,7 +340,7 @@ int drv_phone_init(void) console_dev.tstc = phone_tstc; /* 'tstc' function */ console_dev.getc = phone_getc; /* 'getc' function */ - if (device_register(&console_dev) == 0) + if (stdio_register(&console_dev) == 0) return 1; return 0; diff --git a/board/rbc823/kbd.c b/board/rbc823/kbd.c index 1d48f6d0bc..853cbde748 100644 --- a/board/rbc823/kbd.c +++ b/board/rbc823/kbd.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -249,18 +249,18 @@ int smc1_tstc(void) int drv_keyboard_init(void) { int error = 0; - device_t kbd_dev; + struct stdio_dev kbd_dev; if (0) { /* register the keyboard */ - memset (&kbd_dev, 0, sizeof(device_t)); + memset (&kbd_dev, 0, sizeof(struct stdio_dev)); strcpy(kbd_dev.name, "kbd"); kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; kbd_dev.putc = NULL; kbd_dev.puts = NULL; kbd_dev.getc = smc1_getc; kbd_dev.tstc = smc1_tstc; - error = device_register (&kbd_dev); + error = stdio_register (&kbd_dev); } else { lcd_is_enabled = 0; lcd_disable(); diff --git a/board/trab/vfd.c b/board/trab/vfd.c index 37d3aa48e7..e5ca4abe47 100644 --- a/board/trab/vfd.c +++ b/board/trab/vfd.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; diff --git a/common/Makefile b/common/Makefile index c8a997b0a4..f90e5dd2c3 100644 --- a/common/Makefile +++ b/common/Makefile @@ -32,7 +32,6 @@ COBJS-y += main.o COBJS-y += circbuf.o COBJS-y += console.o COBJS-y += command.o -COBJS-y += devices.o COBJS-y += dlmalloc.o COBJS-y += exports.o COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o @@ -40,6 +39,7 @@ COBJS-y += image.o COBJS-y += memsize.o COBJS-y += s_record.o COBJS-$(CONFIG_SERIAL_MULTI) += serial.o +COBJS-y += stdio.o COBJS-y += xyzModem.o # core command diff --git a/common/cmd_console.c b/common/cmd_console.c index f861f8300c..178fbfeaa8 100644 --- a/common/cmd_console.c +++ b/common/cmd_console.c @@ -26,22 +26,22 @@ */ #include #include -#include +#include extern void _do_coninfo (void); int do_coninfo (cmd_tbl_t * cmd, int flag, int argc, char *argv[]) { int l; - struct list_head *list = device_get_list(); + struct list_head *list = stdio_get_list(); struct list_head *pos; - device_t *dev; + struct stdio_dev *dev; /* Scan for valid output and input devices */ puts ("List of available devices:\n"); list_for_each(pos, list) { - dev = list_entry(pos, device_t, list); + dev = list_entry(pos, struct stdio_dev, list); printf ("%-8s %08x %c%c%c ", dev->name, diff --git a/common/cmd_log.c b/common/cmd_log.c index d422d9f924..3653fe1a1e 100644 --- a/common/cmd_log.c +++ b/common/cmd_log.c @@ -42,7 +42,7 @@ #include #include -#include +#include #include #include @@ -142,7 +142,7 @@ void logbuff_reset (void) int drv_logbuff_init (void) { - device_t logdev; + struct stdio_dev logdev; int rc; /* Device initialization */ @@ -154,7 +154,7 @@ int drv_logbuff_init (void) logdev.putc = logbuff_putc; /* 'putc' function */ logdev.puts = logbuff_puts; /* 'puts' function */ - rc = device_register (&logdev); + rc = stdio_register (&logdev); return (rc == 0) ? 1 : rc; } diff --git a/common/cmd_terminal.c b/common/cmd_terminal.c index fd3dd48514..60ec378b3c 100644 --- a/common/cmd_terminal.c +++ b/common/cmd_terminal.c @@ -26,19 +26,19 @@ */ #include #include -#include +#include #include int do_terminal(cmd_tbl_t * cmd, int flag, int argc, char *argv[]) { int last_tilde = 0; - device_t *dev = NULL; + struct stdio_dev *dev = NULL; if (argc < 1) return -1; /* Scan for selected output/input device */ - dev = device_get_by_name(argv[1]); + dev = stdio_get_by_name(argv[1]); if (!dev) return -1; diff --git a/common/console.c b/common/console.c index 2add047880..0a36d2fedf 100644 --- a/common/console.c +++ b/common/console.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -48,7 +48,7 @@ extern int overwrite_console(void); #endif /* CONFIG_SYS_CONSOLE_IS_IN_ENV */ -static int console_setfile(int file, device_t * dev) +static int console_setfile(int file, struct stdio_dev * dev) { int error = 0; @@ -96,8 +96,8 @@ static int console_setfile(int file, device_t * dev) #if defined(CONFIG_CONSOLE_MUX) /** Console I/O multiplexing *******************************************/ -static device_t *tstcdev; -device_t **console_devices[MAX_FILES]; +static struct stdio_dev *tstcdev; +struct stdio_dev **console_devices[MAX_FILES]; int cd_count[MAX_FILES]; /* @@ -119,7 +119,7 @@ static int console_getc(int file) static int console_tstc(int file) { int i, ret; - device_t *dev; + struct stdio_dev *dev; disable_ctrlc(1); for (i = 0; i < cd_count[file]; i++) { @@ -141,7 +141,7 @@ static int console_tstc(int file) static void console_putc(int file, const char c) { int i; - device_t *dev; + struct stdio_dev *dev; for (i = 0; i < cd_count[file]; i++) { dev = console_devices[file][i]; @@ -153,7 +153,7 @@ static void console_putc(int file, const char c) static void console_puts(int file, const char *s) { int i; - device_t *dev; + struct stdio_dev *dev; for (i = 0; i < cd_count[file]; i++) { dev = console_devices[file][i]; @@ -167,7 +167,7 @@ static inline void console_printdevs(int file) iomux_printdevs(file); } -static inline void console_doenv(int file, device_t *dev) +static inline void console_doenv(int file, struct stdio_dev *dev) { iomux_doenv(file, dev->name); } @@ -197,7 +197,7 @@ static inline void console_printdevs(int file) printf("%s\n", stdio_devices[file]->name); } -static inline void console_doenv(int file, device_t *dev) +static inline void console_doenv(int file, struct stdio_dev *dev) { console_setfile(file, dev); } @@ -479,11 +479,11 @@ inline void dbg(const char *fmt, ...) /** U-Boot INIT FUNCTIONS *************************************************/ -device_t *search_device(int flags, char *name) +struct stdio_dev *search_device(int flags, char *name) { - device_t *dev; + struct stdio_dev *dev; - dev = device_get_by_name(name); + dev = stdio_get_by_name(name); if (dev && (dev->flags & flags)) return dev; @@ -494,7 +494,7 @@ device_t *search_device(int flags, char *name) int console_assign(int file, char *devname) { int flag; - device_t *dev; + struct stdio_dev *dev; /* Check for valid file */ switch (file) { @@ -537,7 +537,7 @@ int console_init_f(void) int console_init_r(void) { char *stdinname, *stdoutname, *stderrname; - device_t *inputdev = NULL, *outputdev = NULL, *errdev = NULL; + struct stdio_dev *inputdev = NULL, *outputdev = NULL, *errdev = NULL; #ifdef CONFIG_SYS_CONSOLE_ENV_OVERWRITE int i; #endif /* CONFIG_SYS_CONSOLE_ENV_OVERWRITE */ @@ -645,11 +645,11 @@ done: /* Called after the relocation - use desired console functions */ int console_init_r(void) { - device_t *inputdev = NULL, *outputdev = NULL; + struct stdio_dev *inputdev = NULL, *outputdev = NULL; int i; - struct list_head *list = device_get_list(); + struct list_head *list = stdio_get_list(); struct list_head *pos; - device_t *dev; + struct stdio_dev *dev; #ifdef CONFIG_SPLASH_SCREEN /* @@ -662,7 +662,7 @@ int console_init_r(void) /* Scan devices looking for input and output devices */ list_for_each(pos, list) { - dev = list_entry(pos, device_t, list); + dev = list_entry(pos, struct stdio_dev, list); if ((dev->flags & DEV_FLAGS_INPUT) && (inputdev == NULL)) { inputdev = dev; diff --git a/common/devices.c b/common/devices.c deleted file mode 100644 index ba53c9bbec..0000000000 --- a/common/devices.c +++ /dev/null @@ -1,251 +0,0 @@ -/* - * (C) Copyright 2000 - * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include -#include -#include -#include -#include -#ifdef CONFIG_LOGBUFFER -#include -#endif -#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) -#include -#endif - -DECLARE_GLOBAL_DATA_PTR; - -static device_t devs; -device_t *stdio_devices[] = { NULL, NULL, NULL }; -char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" }; - -#if defined(CONFIG_SPLASH_SCREEN) && !defined(CONFIG_SYS_DEVICE_NULLDEV) -#define CONFIG_SYS_DEVICE_NULLDEV 1 -#endif - - -#ifdef CONFIG_SYS_DEVICE_NULLDEV -void nulldev_putc(const char c) -{ - /* nulldev is empty! */ -} - -void nulldev_puts(const char *s) -{ - /* nulldev is empty! */ -} - -int nulldev_input(void) -{ - /* nulldev is empty! */ - return 0; -} -#endif - -/************************************************************************** - * SYSTEM DRIVERS - ************************************************************************** - */ - -static void drv_system_init (void) -{ - device_t dev; - - memset (&dev, 0, sizeof (dev)); - - strcpy (dev.name, "serial"); - dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; -#ifdef CONFIG_SERIAL_SOFTWARE_FIFO - dev.putc = serial_buffered_putc; - dev.puts = serial_buffered_puts; - dev.getc = serial_buffered_getc; - dev.tstc = serial_buffered_tstc; -#else - dev.putc = serial_putc; - dev.puts = serial_puts; - dev.getc = serial_getc; - dev.tstc = serial_tstc; -#endif - - device_register (&dev); - -#ifdef CONFIG_SYS_DEVICE_NULLDEV - memset (&dev, 0, sizeof (dev)); - - strcpy (dev.name, "nulldev"); - dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; - dev.putc = nulldev_putc; - dev.puts = nulldev_puts; - dev.getc = nulldev_input; - dev.tstc = nulldev_input; - - device_register (&dev); -#endif -} - -/************************************************************************** - * DEVICES - ************************************************************************** - */ -struct list_head* device_get_list(void) -{ - return &(devs.list); -} - -device_t* device_get_by_name(char* name) -{ - struct list_head *pos; - device_t *dev; - - if(!name) - return NULL; - - list_for_each(pos, &(devs.list)) { - dev = list_entry(pos, device_t, list); - if(strcmp(dev->name, name) == 0) - return dev; - } - - return NULL; -} - -device_t* device_clone(device_t *dev) -{ - device_t *_dev; - - if(!dev) - return NULL; - - _dev = calloc(1, sizeof(device_t)); - - if(!_dev) - return NULL; - - memcpy(_dev, dev, sizeof(device_t)); - strncpy(_dev->name, dev->name, 16); - - return _dev; -} - -int device_register (device_t * dev) -{ - device_t *_dev; - - _dev = device_clone(dev); - if(!_dev) - return -1; - list_add_tail(&(_dev->list), &(devs.list)); - return 0; -} - -/* deregister the device "devname". - * returns 0 if success, -1 if device is assigned and 1 if devname not found - */ -#ifdef CONFIG_SYS_DEVICE_DEREGISTER -int device_deregister(char *devname) -{ - int l; - struct list_head *pos; - device_t *dev; - char temp_names[3][8]; - - dev = device_get_by_name(devname); - - if(!dev) /* device not found */ - return -1; - /* get stdio devices (ListRemoveItem changes the dev list) */ - for (l=0 ; l< MAX_FILES; l++) { - if (stdio_devices[l] == dev) { - /* Device is assigned -> report error */ - return -1; - } - memcpy (&temp_names[l][0], - stdio_devices[l]->name, - sizeof(stdio_devices[l]->name)); - } - - list_del(&(dev->list)); - - /* reassign Device list */ - list_for_each(pos, &(devs.list)) { - dev = list_entry(pos, device_t, list); - for (l=0 ; l< MAX_FILES; l++) { - if(strcmp(dev->name, temp_names[l]) == 0) - stdio_devices[l] = dev; - } - } - return 0; -} -#endif /* CONFIG_SYS_DEVICE_DEREGISTER */ - -int devices_init (void) -{ -#ifndef CONFIG_ARM /* already relocated for current ARM implementation */ - ulong relocation_offset = gd->reloc_off; - int i; - - /* relocate device name pointers */ - for (i = 0; i < (sizeof (stdio_names) / sizeof (char *)); ++i) { - stdio_names[i] = (char *) (((ulong) stdio_names[i]) + - relocation_offset); - } -#endif - - /* Initialize the list */ - INIT_LIST_HEAD(&(devs.list)); - -#ifdef CONFIG_ARM_DCC_MULTI - drv_arm_dcc_init (); -#endif -#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) - i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); -#endif -#ifdef CONFIG_LCD - drv_lcd_init (); -#endif -#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) - drv_video_init (); -#endif -#ifdef CONFIG_KEYBOARD - drv_keyboard_init (); -#endif -#ifdef CONFIG_LOGBUFFER - drv_logbuff_init (); -#endif - drv_system_init (); -#ifdef CONFIG_SERIAL_MULTI - serial_devices_init (); -#endif -#ifdef CONFIG_USB_TTY - drv_usbtty_init (); -#endif -#ifdef CONFIG_NETCONSOLE - drv_nc_init (); -#endif -#ifdef CONFIG_JTAG_CONSOLE - drv_jtag_console_init (); -#endif - - return (0); -} diff --git a/common/iomux.c b/common/iomux.c index bdcc853ff0..91d98e9835 100644 --- a/common/iomux.c +++ b/common/iomux.c @@ -29,7 +29,7 @@ void iomux_printdevs(const int console) { int i; - device_t *dev; + struct stdio_dev *dev; for (i = 0; i < cd_count[console]; i++) { dev = console_devices[console][i]; @@ -43,8 +43,8 @@ int iomux_doenv(const int console, const char *arg) { char *console_args, *temp, **start; int i, j, k, io_flag, cs_idx, repeat; - device_t *dev; - device_t **cons_set; + struct stdio_dev *dev; + struct stdio_dev **cons_set; console_args = strdup(arg); if (console_args == NULL) @@ -85,7 +85,7 @@ int iomux_doenv(const int console, const char *arg) *temp = '\0'; start[i] = temp + 1; } - cons_set = (device_t **)calloc(i, sizeof(device_t *)); + cons_set = (struct stdio_dev **)calloc(i, sizeof(struct stdio_dev *)); if (cons_set == NULL) { free(start); free(console_args); @@ -158,14 +158,14 @@ int iomux_doenv(const int console, const char *arg) } else { /* Works even if console_devices[console] is NULL. */ console_devices[console] = - (device_t **)realloc(console_devices[console], - cs_idx * sizeof(device_t *)); + (struct stdio_dev **)realloc(console_devices[console], + cs_idx * sizeof(struct stdio_dev *)); if (console_devices[console] == NULL) { free(cons_set); return 1; } memcpy(console_devices[console], cons_set, cs_idx * - sizeof(device_t *)); + sizeof(struct stdio_dev *)); cd_count[console] = cs_idx; } diff --git a/common/lcd.c b/common/lcd.c index b9a698d5c4..c87de0beff 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -34,7 +34,7 @@ #include #include #include -#include +#include #if defined(CONFIG_POST) #include #endif @@ -355,7 +355,7 @@ static void test_pattern (void) int drv_lcd_init (void) { - device_t lcddev; + struct stdio_dev lcddev; int rc; lcd_base = (void *)(gd->fb_base); @@ -373,7 +373,7 @@ int drv_lcd_init (void) lcddev.putc = lcd_putc; /* 'putc' function */ lcddev.puts = lcd_puts; /* 'puts' function */ - rc = device_register (&lcddev); + rc = stdio_register (&lcddev); return (rc == 0) ? 1 : rc; } diff --git a/common/serial.c b/common/serial.c index 5d0a73ce06..41a24c2fad 100644 --- a/common/serial.c +++ b/common/serial.c @@ -23,7 +23,7 @@ #include #include -#include +#include DECLARE_GLOBAL_DATA_PTR; @@ -142,9 +142,9 @@ void serial_initialize (void) serial_assign (default_serial_console ()->name); } -void serial_devices_init (void) +void serial_stdio_init (void) { - device_t dev; + struct stdio_dev dev; struct serial_device *s = serial_devices; while (s) { @@ -159,7 +159,7 @@ void serial_devices_init (void) dev.getc = s->getc; dev.tstc = s->tstc; - device_register (&dev); + stdio_register (&dev); s = s->next; } diff --git a/common/stdio.c b/common/stdio.c new file mode 100644 index 0000000000..697df5a495 --- /dev/null +++ b/common/stdio.c @@ -0,0 +1,251 @@ +/* + * (C) Copyright 2000 + * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_LOGBUFFER +#include +#endif +#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) +#include +#endif + +DECLARE_GLOBAL_DATA_PTR; + +static struct stdio_dev devs; +struct stdio_dev *stdio_devices[] = { NULL, NULL, NULL }; +char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" }; + +#if defined(CONFIG_SPLASH_SCREEN) && !defined(CONFIG_SYS_DEVICE_NULLDEV) +#define CONFIG_SYS_DEVICE_NULLDEV 1 +#endif + + +#ifdef CONFIG_SYS_DEVICE_NULLDEV +void nulldev_putc(const char c) +{ + /* nulldev is empty! */ +} + +void nulldev_puts(const char *s) +{ + /* nulldev is empty! */ +} + +int nulldev_input(void) +{ + /* nulldev is empty! */ + return 0; +} +#endif + +/************************************************************************** + * SYSTEM DRIVERS + ************************************************************************** + */ + +static void drv_system_init (void) +{ + struct stdio_dev dev; + + memset (&dev, 0, sizeof (dev)); + + strcpy (dev.name, "serial"); + dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; +#ifdef CONFIG_SERIAL_SOFTWARE_FIFO + dev.putc = serial_buffered_putc; + dev.puts = serial_buffered_puts; + dev.getc = serial_buffered_getc; + dev.tstc = serial_buffered_tstc; +#else + dev.putc = serial_putc; + dev.puts = serial_puts; + dev.getc = serial_getc; + dev.tstc = serial_tstc; +#endif + + stdio_register (&dev); + +#ifdef CONFIG_SYS_DEVICE_NULLDEV + memset (&dev, 0, sizeof (dev)); + + strcpy (dev.name, "nulldev"); + dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; + dev.putc = nulldev_putc; + dev.puts = nulldev_puts; + dev.getc = nulldev_input; + dev.tstc = nulldev_input; + + stdio_register (&dev); +#endif +} + +/************************************************************************** + * DEVICES + ************************************************************************** + */ +struct list_head* stdio_get_list(void) +{ + return &(devs.list); +} + +struct stdio_dev* stdio_get_by_name(char* name) +{ + struct list_head *pos; + struct stdio_dev *dev; + + if(!name) + return NULL; + + list_for_each(pos, &(devs.list)) { + dev = list_entry(pos, struct stdio_dev, list); + if(strcmp(dev->name, name) == 0) + return dev; + } + + return NULL; +} + +struct stdio_dev* stdio_clone(struct stdio_dev *dev) +{ + struct stdio_dev *_dev; + + if(!dev) + return NULL; + + _dev = calloc(1, sizeof(struct stdio_dev)); + + if(!_dev) + return NULL; + + memcpy(_dev, dev, sizeof(struct stdio_dev)); + strncpy(_dev->name, dev->name, 16); + + return _dev; +} + +int stdio_register (struct stdio_dev * dev) +{ + struct stdio_dev *_dev; + + _dev = stdio_clone(dev); + if(!_dev) + return -1; + list_add_tail(&(_dev->list), &(devs.list)); + return 0; +} + +/* deregister the device "devname". + * returns 0 if success, -1 if device is assigned and 1 if devname not found + */ +#ifdef CONFIG_SYS_STDIO_DEREGISTER +int stdio_deregister(char *devname) +{ + int l; + struct list_head *pos; + struct stdio_dev *dev; + char temp_names[3][8]; + + dev = stdio_get_by_name(devname); + + if(!dev) /* device not found */ + return -1; + /* get stdio devices (ListRemoveItem changes the dev list) */ + for (l=0 ; l< MAX_FILES; l++) { + if (stdio_devices[l] == dev) { + /* Device is assigned -> report error */ + return -1; + } + memcpy (&temp_names[l][0], + stdio_devices[l]->name, + sizeof(stdio_devices[l]->name)); + } + + list_del(&(dev->list)); + + /* reassign Device list */ + list_for_each(pos, &(devs.list)) { + dev = list_entry(pos, struct stdio_dev, list); + for (l=0 ; l< MAX_FILES; l++) { + if(strcmp(dev->name, temp_names[l]) == 0) + stdio_devices[l] = dev; + } + } + return 0; +} +#endif /* CONFIG_SYS_STDIO_DEREGISTER */ + +int stdio_init (void) +{ +#ifndef CONFIG_ARM /* already relocated for current ARM implementation */ + ulong relocation_offset = gd->reloc_off; + int i; + + /* relocate device name pointers */ + for (i = 0; i < (sizeof (stdio_names) / sizeof (char *)); ++i) { + stdio_names[i] = (char *) (((ulong) stdio_names[i]) + + relocation_offset); + } +#endif + + /* Initialize the list */ + INIT_LIST_HEAD(&(devs.list)); + +#ifdef CONFIG_ARM_DCC_MULTI + drv_arm_dcc_init (); +#endif +#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) + i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +#endif +#ifdef CONFIG_LCD + drv_lcd_init (); +#endif +#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) + drv_video_init (); +#endif +#ifdef CONFIG_KEYBOARD + drv_keyboard_init (); +#endif +#ifdef CONFIG_LOGBUFFER + drv_logbuff_init (); +#endif + drv_system_init (); +#ifdef CONFIG_SERIAL_MULTI + serial_stdio_init (); +#endif +#ifdef CONFIG_USB_TTY + drv_usbtty_init (); +#endif +#ifdef CONFIG_NETCONSOLE + drv_nc_init (); +#endif +#ifdef CONFIG_JTAG_CONSOLE + drv_jtag_console_init (); +#endif + + return (0); +} diff --git a/common/usb_kbd.c b/common/usb_kbd.c index e0d006c322..b458d77283 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -25,7 +25,7 @@ * */ #include -#include +#include #include #include @@ -153,7 +153,7 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum); int drv_usb_kbd_init(void) { int error,i; - device_t usb_kbd_dev,*old_dev; + struct stdio_dev usb_kbd_dev,*old_dev; struct usb_device *dev; char *stdinname = getenv ("stdin"); @@ -168,7 +168,7 @@ int drv_usb_kbd_init(void) if(usb_kbd_probe(dev,0)==1) { /* Ok, we found a keyboard */ /* check, if it is already registered */ USB_KBD_PRINTF("USB KBD found set up device.\n"); - old_dev = device_get_by_name(DEVNAME); + old_dev = stdio_get_by_name(DEVNAME); if(old_dev) { /* ok, already registered, just return ok */ USB_KBD_PRINTF("USB KBD is already registered.\n"); @@ -176,7 +176,7 @@ int drv_usb_kbd_init(void) } /* register the keyboard */ USB_KBD_PRINTF("USB KBD register.\n"); - memset (&usb_kbd_dev, 0, sizeof(device_t)); + memset (&usb_kbd_dev, 0, sizeof(struct stdio_dev)); strcpy(usb_kbd_dev.name, DEVNAME); usb_kbd_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; usb_kbd_dev.putc = NULL; @@ -184,7 +184,7 @@ int drv_usb_kbd_init(void) usb_kbd_dev.getc = usb_kbd_getc; usb_kbd_dev.tstc = usb_kbd_testc; usb_kbd_dev.priv = (void *)dev; - error = device_register (&usb_kbd_dev); + error = stdio_register (&usb_kbd_dev); if(error==0) { /* check if this is the standard input device */ if(strcmp(stdinname,DEVNAME)==0) { @@ -212,8 +212,8 @@ int drv_usb_kbd_init(void) /* deregistering the keyboard */ int usb_kbd_deregister(void) { -#ifdef CONFIG_SYS_DEVICE_DEREGISTER - return device_deregister(DEVNAME); +#ifdef CONFIG_SYS_STDIO_DEREGISTER + return stdio_deregister(DEVNAME); #else return 1; #endif diff --git a/cpu/blackfin/jtag-console.c b/cpu/blackfin/jtag-console.c index c995d962dc..1cd619f10b 100644 --- a/cpu/blackfin/jtag-console.c +++ b/cpu/blackfin/jtag-console.c @@ -7,7 +7,7 @@ */ #include -#include +#include #include #ifndef CONFIG_JTAG_CONSOLE_TIMEOUT @@ -105,7 +105,7 @@ static int jtag_getc(void) int drv_jtag_console_init(void) { - device_t dev; + struct stdio_dev dev; int ret; memset(&dev, 0x00, sizeof(dev)); @@ -116,7 +116,7 @@ int drv_jtag_console_init(void) dev.tstc = jtag_tstc; dev.getc = jtag_getc; - ret = device_register(&dev); + ret = stdio_register(&dev); return (ret == 0 ? 1 : ret); } diff --git a/cpu/mpc512x/diu.c b/cpu/mpc512x/diu.c index 70849ee21b..691451afcb 100644 --- a/cpu/mpc512x/diu.c +++ b/cpu/mpc512x/diu.c @@ -31,7 +31,7 @@ #include "../../board/freescale/common/fsl_diu_fb.h" #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) -#include +#include #include #endif diff --git a/cpu/mpc8xx/lcd.c b/cpu/mpc8xx/lcd.c index 4474e24e26..4b88b21b3f 100644 --- a/cpu/mpc8xx/lcd.c +++ b/cpu/mpc8xx/lcd.c @@ -35,7 +35,7 @@ #include #include #include -#include +#include #if defined(CONFIG_POST) #include #endif diff --git a/cpu/mpc8xx/video.c b/cpu/mpc8xx/video.c index 4a59927436..c79c499b6f 100644 --- a/cpu/mpc8xx/video.c +++ b/cpu/mpc8xx/video.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #ifdef CONFIG_VIDEO @@ -1287,7 +1287,7 @@ int drv_video_init (void) { int error, devices = 1; - device_t videodev; + struct stdio_dev videodev; video_init ((void *)(gd->fb_base)); /* Video initialization */ @@ -1301,7 +1301,7 @@ int drv_video_init (void) videodev.putc = video_putc; /* 'putc' function */ videodev.puts = video_puts; /* 'puts' function */ - error = device_register (&videodev); + error = stdio_register (&videodev); return (error == 0) ? devices : error; } diff --git a/cpu/pxa/pxafb.c b/cpu/pxa/pxafb.c index 97efcb6dfc..d56c5f099f 100644 --- a/cpu/pxa/pxafb.c +++ b/cpu/pxa/pxafb.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include diff --git a/drivers/input/keyboard.c b/drivers/input/keyboard.c index 512b9f28c4..a5fbd5f509 100644 --- a/drivers/input/keyboard.c +++ b/drivers/input/keyboard.c @@ -11,7 +11,7 @@ #include -#include +#include #include #undef KBG_DEBUG @@ -268,7 +268,7 @@ extern int overwrite_console (void); int kbd_init (void) { int error; - device_t kbddev ; + struct stdio_dev kbddev ; char *stdinname = getenv ("stdin"); if(kbd_init_hw()==-1) @@ -281,7 +281,7 @@ int kbd_init (void) kbddev.getc = kbd_getc ; kbddev.tstc = kbd_testc ; - error = device_register (&kbddev); + error = stdio_register (&kbddev); if(error==0) { /* check if this is the standard input device */ if(strcmp(stdinname,DEVNAME)==0) { diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index b2ee5eaba4..f5329a594e 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -243,7 +243,7 @@ int nc_tstc (void) int drv_nc_init (void) { - device_t dev; + struct stdio_dev dev; int rc; memset (&dev, 0, sizeof (dev)); @@ -256,7 +256,7 @@ int drv_nc_init (void) dev.getc = nc_getc; dev.tstc = nc_tstc; - rc = device_register (&dev); + rc = stdio_register (&dev); return (rc == 0) ? 1 : rc; } diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c index dca73b93d0..7b5ecb5132 100644 --- a/drivers/serial/arm_dcc.c +++ b/drivers/serial/arm_dcc.c @@ -27,7 +27,7 @@ */ #include -#include +#include #if defined(CONFIG_CPU_V6) /* @@ -148,7 +148,7 @@ int arm_dcc_tstc(void) } #ifdef CONFIG_ARM_DCC_MULTI -static device_t arm_dcc_dev; +static struct stdio_dev arm_dcc_dev; int drv_arm_dcc_init(void) { @@ -165,6 +165,6 @@ int drv_arm_dcc_init(void) arm_dcc_dev.putc = arm_dcc_putc; /* 'putc' function */ arm_dcc_dev.puts = arm_dcc_puts; /* 'puts' function */ - return device_register(&arm_dcc_dev); + return stdio_register(&arm_dcc_dev); } #endif diff --git a/drivers/serial/usbtty.c b/drivers/serial/usbtty.c index f711d0b18b..cffd5a2b25 100644 --- a/drivers/serial/usbtty.c +++ b/drivers/serial/usbtty.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "usbtty.h" #include "usb_cdc_acm.h" #include "usbdescriptors.h" @@ -70,7 +70,7 @@ static circbuf_t usbtty_output; /* * Instance variables */ -static device_t usbttydev; +static struct stdio_dev usbttydev; static struct usb_device_instance device_instance[1]; static struct usb_bus_instance bus_instance[1]; static struct usb_configuration_instance config_instance[NUM_CONFIGS]; @@ -570,7 +570,7 @@ int drv_usbtty_init (void) usbttydev.putc = usbtty_putc; /* 'putc' function */ usbttydev.puts = usbtty_puts; /* 'puts' function */ - rc = device_register (&usbttydev); + rc = stdio_register (&usbttydev); return (rc == 0) ? 1 : rc; } diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index 19d978b245..4ca94cb317 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -801,7 +801,7 @@ int submit_int_msg(struct usb_device *dev, unsigned long pipe, */ void usb_event_poll() { - device_t *dev; + struct stdio_dev *dev; struct usb_device *usb_kbd_dev; struct usb_interface_descriptor *iface; struct usb_endpoint_descriptor *ep; @@ -809,7 +809,7 @@ void usb_event_poll() int maxp; /* Get the pointer to USB Keyboard device pointer */ - dev = device_get_by_name("usbkbd"); + dev = stdio_get_by_name("usbkbd"); usb_kbd_dev = (struct usb_device *)dev->priv; iface = &usb_kbd_dev->config.if_desc[0]; ep = &iface->ep_desc[0]; diff --git a/drivers/usb/musb/musb_hcd.h b/drivers/usb/musb/musb_hcd.h index b7f571d037..17e9091a0a 100644 --- a/drivers/usb/musb/musb_hcd.h +++ b/drivers/usb/musb/musb_hcd.h @@ -26,7 +26,7 @@ #include "musb_core.h" #ifdef CONFIG_USB_KEYBOARD -#include +#include extern unsigned char new[]; #endif diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 6adce19984..fbc4df9f69 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -183,7 +183,7 @@ CONFIG_VIDEO_HW_CURSOR: - Uses the hardware cursor capability of the #include #include -#include +#include #include #if defined(CONFIG_CMD_DATE) @@ -1378,7 +1378,7 @@ int board_video_skip(void) __attribute__((weak, alias("__board_video_skip"))); int drv_video_init (void) { int skip_dev_init; - device_t console_dev; + struct stdio_dev console_dev; /* Check if video initialization should be skipped */ if (board_video_skip()) @@ -1412,7 +1412,7 @@ int drv_video_init (void) console_dev.getc = VIDEO_GETC_FCT; /* 'getc' function */ #endif /* CONFIG_VGA_AS_SINGLE_DEVICE */ - if (device_register (&console_dev) != 0) + if (stdio_register (&console_dev) != 0) return 0; /* Return success */ diff --git a/include/configs/AmigaOneG3SE.h b/include/configs/AmigaOneG3SE.h index fe04f27a17..0dfb23b310 100644 --- a/include/configs/AmigaOneG3SE.h +++ b/include/configs/AmigaOneG3SE.h @@ -363,7 +363,7 @@ #define CONFIG_USB_UHCI 1 #define CONFIG_USB_STORAGE 1 #define CONFIG_USB_KEYBOARD 1 -#define CONFIG_SYS_DEVICE_DEREGISTER 1 /* needed by CONFIG_USB_KEYBOARD */ +#define CONFIG_SYS_STDIO_DEREGISTER 1 /* needed by CONFIG_USB_KEYBOARD */ /* * Autoboot stuff diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 8315cfe62b..da9b1cfff6 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -415,7 +415,7 @@ #define CONFIG_USB_STORAGE /* Enable needed helper functions */ -#define CONFIG_SYS_DEVICE_DEREGISTER /* needs device_deregister */ +#define CONFIG_SYS_STDIO_DEREGISTER /* needs stdio_deregister */ #endif /************************************************************ * Debug support diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h index 2f40ef48c9..a3b5c7c3d3 100644 --- a/include/configs/MPC8610HPCD.h +++ b/include/configs/MPC8610HPCD.h @@ -317,7 +317,7 @@ #define CONFIG_PCI_OHCI 1 #define CONFIG_USB_OHCI_NEW 1 #define CONFIG_USB_KEYBOARD 1 -#define CONFIG_SYS_DEVICE_DEREGISTER +#define CONFIG_SYS_STDIO_DEREGISTER #define CONFIG_SYS_USB_EVENT_POLL 1 #define CONFIG_SYS_USB_OHCI_SLOT_NAME "ohci_pci" #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 15 diff --git a/include/configs/MPC8641HPCN.h b/include/configs/MPC8641HPCN.h index 60ce0f3aca..955ac3dfa6 100644 --- a/include/configs/MPC8641HPCN.h +++ b/include/configs/MPC8641HPCN.h @@ -391,7 +391,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); #define CONFIG_PCI_OHCI 1 #define CONFIG_USB_OHCI_NEW 1 #define CONFIG_USB_KEYBOARD 1 -#define CONFIG_SYS_DEVICE_DEREGISTER +#define CONFIG_SYS_STDIO_DEREGISTER #define CONFIG_SYS_USB_EVENT_POLL 1 #define CONFIG_SYS_USB_OHCI_SLOT_NAME "ohci_pci" #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 15 diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h index e214d70a58..e301599b8a 100644 --- a/include/configs/PIP405.h +++ b/include/configs/PIP405.h @@ -361,7 +361,7 @@ #define CONFIG_USB_STORAGE /* Enable needed helper functions */ -#define CONFIG_SYS_DEVICE_DEREGISTER /* needs device_deregister */ +#define CONFIG_SYS_STDIO_DEREGISTER /* needs stdio_deregister */ /************************************************************ * Debug support diff --git a/include/configs/VCMA9.h b/include/configs/VCMA9.h index de3092d1c6..7edea6a047 100644 --- a/include/configs/VCMA9.h +++ b/include/configs/VCMA9.h @@ -129,7 +129,7 @@ #define CONFIG_DOS_PARTITION 1 /* Enable needed helper functions */ -#define CONFIG_SYS_DEVICE_DEREGISTER /* needs device_deregister */ +#define CONFIG_SYS_STDIO_DEREGISTER /* needs stdio_deregister */ /************************************************************ * RTC diff --git a/include/configs/gr_ep2s60.h b/include/configs/gr_ep2s60.h index 6f58bac91f..7b0a08ff01 100644 --- a/include/configs/gr_ep2s60.h +++ b/include/configs/gr_ep2s60.h @@ -87,7 +87,7 @@ #define CONFIG_CMD_USB #define CONFIG_USB_STORAGE /* Enable needed helper functions */ -#define CONFIG_SYS_DEVICE_DEREGISTER /* needs device_deregister */ +#define CONFIG_SYS_STDIO_DEREGISTER /* needs stdio_deregister */ #endif /* diff --git a/include/configs/mp2usb.h b/include/configs/mp2usb.h index 3225ce714c..ac678d0b60 100644 --- a/include/configs/mp2usb.h +++ b/include/configs/mp2usb.h @@ -216,7 +216,7 @@ #define CONFIG_SYS_MAXARGS 32 /* max number of command args */ #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */ -#define CONFIG_SYS_DEVICE_DEREGISTER /* needs device_deregister */ +#define CONFIG_SYS_STDIO_DEREGISTER /* needs stdio_deregister */ #define CONFIG_SYS_HZ 1000 #define CONFIG_SYS_HZ_CLOCK (AT91C_MASTER_CLOCK/2) /* AT91C_TC0_CMR is implicitly set to */ diff --git a/include/console.h b/include/console.h deleted file mode 100644 index bc8b139507..0000000000 --- a/include/console.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * (C) Copyright 2000 - * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef _CONSOLE_H_ -#define _CONSOLE_H_ - -#include - -/* -** VARIABLES -*/ - -extern device_t *stdio_devices[] ; -extern char *stdio_names[MAX_FILES] ; - -#endif diff --git a/include/devices.h b/include/devices.h deleted file mode 100644 index 3a9881bf04..0000000000 --- a/include/devices.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * (C) Copyright 2000 - * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include - -#ifndef _DEVICES_H_ -#define _DEVICES_H_ - -/* - * CONSOLE DEVICES - */ - -#define DEV_FLAGS_INPUT 0x00000001 /* Device can be used as input console */ -#define DEV_FLAGS_OUTPUT 0x00000002 /* Device can be used as output console */ -#define DEV_FLAGS_SYSTEM 0x80000000 /* Device is a system device */ -#define DEV_EXT_VIDEO 0x00000001 /* Video extensions supported */ - -/* Device information */ -typedef struct { - int flags; /* Device flags: input/output/system */ - int ext; /* Supported extensions */ - char name[16]; /* Device name */ - -/* GENERAL functions */ - - int (*start) (void); /* To start the device */ - int (*stop) (void); /* To stop the device */ - -/* OUTPUT functions */ - - void (*putc) (const char c); /* To put a char */ - void (*puts) (const char *s); /* To put a string (accelerator) */ - -/* INPUT functions */ - - int (*tstc) (void); /* To test if a char is ready... */ - int (*getc) (void); /* To get that char */ - -/* Other functions */ - - void *priv; /* Private extensions */ - struct list_head list; -} device_t; - -/* - * VIDEO EXTENSIONS - */ -#define VIDEO_FORMAT_RGB_INDEXED 0x0000 -#define VIDEO_FORMAT_RGB_DIRECTCOLOR 0x0001 -#define VIDEO_FORMAT_YUYV_4_4_4 0x0010 -#define VIDEO_FORMAT_YUYV_4_2_2 0x0011 - -typedef struct { - void *address; /* Address of framebuffer */ - ushort width; /* Horizontal resolution */ - ushort height; /* Vertical resolution */ - uchar format; /* Format */ - uchar colors; /* Colors number or color depth */ - void (*setcolreg) (int, int, int, int); - void (*getcolreg) (int, void *); -} video_ext_t; - -/* - * VARIABLES - */ -extern device_t *stdio_devices[]; -extern char *stdio_names[MAX_FILES]; - -/* - * PROTOTYPES - */ -int device_register (device_t * dev); -int devices_init (void); -#ifdef CONFIG_SYS_DEVICE_DEREGISTER -int device_deregister(char *devname); -#endif -struct list_head* device_get_list(void); -device_t* device_get_by_name(char* name); -device_t* device_clone(device_t *dev); - -#ifdef CONFIG_ARM_DCC_MULTI -int drv_arm_dcc_init(void); -#endif -#ifdef CONFIG_LCD -int drv_lcd_init (void); -#endif -#ifdef CONFIG_VFD -int drv_vfd_init (void); -#endif -#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) -int drv_video_init (void); -#endif -#ifdef CONFIG_KEYBOARD -int drv_keyboard_init (void); -#endif -#ifdef CONFIG_USB_TTY -int drv_usbtty_init (void); -#endif -#ifdef CONFIG_NETCONSOLE -int drv_nc_init (void); -#endif -#ifdef CONFIG_JTAG_CONSOLE -int drv_jtag_console_init (void); -#endif - -#endif /* _DEVICES_H_ */ diff --git a/include/iomux.h b/include/iomux.h index 257c1f7612..e38a81e775 100644 --- a/include/iomux.h +++ b/include/iomux.h @@ -24,7 +24,7 @@ #ifndef _IO_MUX_H #define _IO_MUX_H -#include +#include /* * Stuff required to support console multiplexing. @@ -34,7 +34,7 @@ * Pointers to devices used for each file type. Defined in console.c * but storage is allocated in iomux.c. */ -extern device_t **console_devices[MAX_FILES]; +extern struct stdio_dev **console_devices[MAX_FILES]; /* * The count of devices assigned to each FILE. Defined in console.c * and populated in iomux.c. @@ -43,6 +43,6 @@ extern int cd_count[MAX_FILES]; int iomux_doenv(const int, const char *); void iomux_printdevs(const int); -device_t *search_device(int, char *); +struct stdio_dev *search_device(int, char *); #endif /* _IO_MUX_H */ diff --git a/include/serial.h b/include/serial.h index 5722337269..821b58399d 100644 --- a/include/serial.h +++ b/include/serial.h @@ -55,7 +55,7 @@ extern struct serial_device serial_btuart_device; extern struct serial_device serial_stuart_device; extern void serial_initialize(void); -extern void serial_devices_init(void); +extern void serial_stdio_init(void); extern int serial_assign(char * name); extern void serial_reinit_all(void); diff --git a/include/stdio_dev.h b/include/stdio_dev.h new file mode 100644 index 0000000000..8b06ccf005 --- /dev/null +++ b/include/stdio_dev.h @@ -0,0 +1,126 @@ +/* + * (C) Copyright 2000 + * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _STDIO_DEV_H_ +#define _STDIO_DEV_H_ + +#include + +/* + * STDIO DEVICES + */ + +#define DEV_FLAGS_INPUT 0x00000001 /* Device can be used as input console */ +#define DEV_FLAGS_OUTPUT 0x00000002 /* Device can be used as output console */ +#define DEV_FLAGS_SYSTEM 0x80000000 /* Device is a system device */ +#define DEV_EXT_VIDEO 0x00000001 /* Video extensions supported */ + +/* Device information */ +struct stdio_dev { + int flags; /* Device flags: input/output/system */ + int ext; /* Supported extensions */ + char name[16]; /* Device name */ + +/* GENERAL functions */ + + int (*start) (void); /* To start the device */ + int (*stop) (void); /* To stop the device */ + +/* OUTPUT functions */ + + void (*putc) (const char c); /* To put a char */ + void (*puts) (const char *s); /* To put a string (accelerator) */ + +/* INPUT functions */ + + int (*tstc) (void); /* To test if a char is ready... */ + int (*getc) (void); /* To get that char */ + +/* Other functions */ + + void *priv; /* Private extensions */ + struct list_head list; +}; + +/* + * VIDEO EXTENSIONS + */ +#define VIDEO_FORMAT_RGB_INDEXED 0x0000 +#define VIDEO_FORMAT_RGB_DIRECTCOLOR 0x0001 +#define VIDEO_FORMAT_YUYV_4_4_4 0x0010 +#define VIDEO_FORMAT_YUYV_4_2_2 0x0011 + +typedef struct { + void *address; /* Address of framebuffer */ + ushort width; /* Horizontal resolution */ + ushort height; /* Vertical resolution */ + uchar format; /* Format */ + uchar colors; /* Colors number or color depth */ + void (*setcolreg) (int, int, int, int); + void (*getcolreg) (int, void *); +} video_ext_t; + +/* + * VARIABLES + */ +extern struct stdio_dev *stdio_devices[]; +extern char *stdio_names[MAX_FILES]; + +/* + * PROTOTYPES + */ +int stdio_register (struct stdio_dev * dev); +int stdio_init (void); +#ifdef CONFIG_SYS_STDIO_DEREGISTER +int stdio_deregister(char *devname); +#endif +struct list_head* stdio_get_list(void); +struct stdio_dev* stdio_get_by_name(char* name); +struct stdio_dev* stdio_clone(struct stdio_dev *dev); + +#ifdef CONFIG_ARM_DCC_MULTI +int drv_arm_dcc_init(void); +#endif +#ifdef CONFIG_LCD +int drv_lcd_init (void); +#endif +#ifdef CONFIG_VFD +int drv_vfd_init (void); +#endif +#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) +int drv_video_init (void); +#endif +#ifdef CONFIG_KEYBOARD +int drv_keyboard_init (void); +#endif +#ifdef CONFIG_USB_TTY +int drv_usbtty_init (void); +#endif +#ifdef CONFIG_NETCONSOLE +int drv_nc_init (void); +#endif +#ifdef CONFIG_JTAG_CONSOLE +int drv_jtag_console_init (void); +#endif + +#endif diff --git a/lib_arm/board.c b/lib_arm/board.c index 566ae1660e..a44d308f67 100644 --- a/lib_arm/board.c +++ b/lib_arm/board.c @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include @@ -389,7 +389,7 @@ void start_armboot (void) /* IP Address */ gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); - devices_init (); /* get the devices list going. */ + stdio_init (); /* get the devices list going. */ jumptable_init (); diff --git a/lib_avr32/board.c b/lib_avr32/board.c index 57115df09b..5b2d0ef1d3 100644 --- a/lib_avr32/board.c +++ b/lib_avr32/board.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -350,7 +350,7 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); - devices_init(); + stdio_init(); jumptable_init(); console_init_r(); diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c index 047f16418f..28de372b78 100644 --- a/lib_blackfin/board.c +++ b/lib_blackfin/board.c @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include @@ -354,8 +354,8 @@ void board_init_r(gd_t * id, ulong dest_addr) /* relocate environment function pointers etc. */ env_relocate(); - /* Initialize devices */ - devices_init(); + /* Initialize stdio devices */ + stdio_init(); jumptable_init(); /* Initialize the console (after the relocation and devices init) */ diff --git a/lib_blackfin/post.c b/lib_blackfin/post.c index 35ccd3cd74..faf6b96ba2 100644 --- a/lib_blackfin/post.c +++ b/lib_blackfin/post.c @@ -22,7 +22,7 @@ */ #include -#include +#include #include #include diff --git a/lib_i386/board.c b/lib_i386/board.c index e18dfa5bc4..54ef6e75a8 100644 --- a/lib_i386/board.c +++ b/lib_i386/board.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include #include @@ -299,7 +299,7 @@ void start_i386boot (void) show_boot_progress(0x27); - devices_init (); + stdio_init (); jumptable_init (); diff --git a/lib_i386/video.c b/lib_i386/video.c index cd89457382..c58ed104cc 100644 --- a/lib_i386/video.c +++ b/lib_i386/video.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include #include @@ -168,8 +168,8 @@ int video_init(void) { u16 pos; - static device_t vga_dev; - static device_t kbd_dev; + static struct stdio_dev vga_dev; + static struct stdio_dev kbd_dev; vidmem = (char *) 0xb8000; vidport = 0x3d4; @@ -203,7 +203,7 @@ int video_init(void) vga_dev.tstc = NULL; /* 'tstc' function */ vga_dev.getc = NULL; /* 'getc' function */ - if (device_register(&vga_dev) == 0) { + if (stdio_register(&vga_dev) == 0) { return 1; } @@ -220,7 +220,7 @@ int video_init(void) kbd_dev.tstc = i8042_tstc; /* 'tstc' function */ kbd_dev.getc = i8042_getc; /* 'getc' function */ - if (device_register(&kbd_dev) == 0) { + if (stdio_register(&kbd_dev) == 0) { return 1; } return 0; diff --git a/lib_m68k/board.c b/lib_m68k/board.c index 7d4ffc779c..f73a46ccea 100644 --- a/lib_m68k/board.c +++ b/lib_m68k/board.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include @@ -595,8 +595,8 @@ void board_init_r (gd_t *id, ulong dest_addr) #endif /** leave this here (after malloc(), environment and PCI are working) **/ - /* Initialize devices */ - devices_init (); + /* Initialize stdio devices */ + stdio_init (); /* Initialize the jump table for applications */ jumptable_init (); diff --git a/lib_mips/board.c b/lib_mips/board.c index f8ac234d10..aa5b1295ce 100644 --- a/lib_mips/board.c +++ b/lib_mips/board.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include @@ -411,8 +411,8 @@ void board_init_r (gd_t *id, ulong dest_addr) #endif /** leave this here (after malloc(), environment and PCI are working) **/ - /* Initialize devices */ - devices_init (); + /* Initialize stdio devices */ + stdio_init (); jumptable_init (); diff --git a/lib_nios/board.c b/lib_nios/board.c index 9d8eea7962..cd234578b7 100644 --- a/lib_nios/board.c +++ b/lib_nios/board.c @@ -25,7 +25,7 @@ */ #include -#include +#include #include #include #ifdef CONFIG_STATUS_LED @@ -155,7 +155,7 @@ void board_init (void) bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); WATCHDOG_RESET (); - devices_init(); + stdio_init(); jumptable_init(); console_init_r(); /* diff --git a/lib_nios2/board.c b/lib_nios2/board.c index 0677e99995..b142c59613 100644 --- a/lib_nios2/board.c +++ b/lib_nios2/board.c @@ -25,7 +25,7 @@ */ #include -#include +#include #include #include #ifdef CONFIG_STATUS_LED @@ -161,7 +161,7 @@ void board_init (void) bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); WATCHDOG_RESET (); - devices_init(); + stdio_init(); jumptable_init(); console_init_r(); diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 155171d6b1..6dd4d56ff3 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #ifdef CONFIG_8xx #include #endif @@ -932,8 +932,8 @@ void board_init_r (gd_t *id, ulong dest_addr) #endif /** leave this here (after malloc(), environment and PCI are working) **/ - /* Initialize devices */ - devices_init (); + /* Initialize stdio devices */ + stdio_init (); /* Initialize the jump table for applications */ jumptable_init (); diff --git a/lib_sh/board.c b/lib_sh/board.c index 183110fe30..829455d8b1 100644 --- a/lib_sh/board.c +++ b/lib_sh/board.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include @@ -150,7 +150,7 @@ init_fnc_t *init_sequence[] = sh_flash_init, /* Flash memory(NOR) init*/ INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */ INIT_FUNC_PCI_INIT /* PCI init */ - devices_init, + stdio_init, console_init_r, interrupt_init, #ifdef BOARD_LATE_INIT diff --git a/lib_sparc/board.c b/lib_sparc/board.c index 628d46d308..d40834b7b0 100644 --- a/lib_sparc/board.c +++ b/lib_sparc/board.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #if defined(CONFIG_CMD_IDE) #include @@ -402,8 +402,8 @@ void board_init_f(ulong bootflag) pci_init(); #endif - /* Initialize devices */ - devices_init(); + /* Initialize stdio devices */ + stdio_init(); /* Initialize the jump table for applications */ jumptable_init(); diff --git a/post/post.c b/post/post.c index c982e27fff..bc8114e511 100644 --- a/post/post.c +++ b/post/post.c @@ -22,7 +22,7 @@ */ #include -#include +#include #include #include