source: rtems/c/src/lib/libbsp/arm/nds/console/console.c @ 311dfa6

4.104.114.95
Last change on this file since 311dfa6 was 311dfa6, checked in by Joel Sherrill <joel.sherrill@…>, on 04/16/08 at 18:37:33

2008-04-16 Matthieu Bucchianeri <mbucchia@…>

  • ChangeLog?, Makefile.am, README, bsp_specs, configure.ac, mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, dswifi/arm9/source/sgIP_memblock.h, dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, dswifi/include/dswifi_version.h, dswifi/include/netdb.h, dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, libfat/gba/include/fat.h, libfat/include/fat.h, libfat/nds/include/fat.h, libfat/source/bit_ops.h, libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, libfat/source/directory.c, libfat/source/directory.h, libfat/source/fatdir.c, libfat/source/fatdir.h, libfat/source/fatfile.c, libfat/source/fatfile.h, libfat/source/file_allocation_table.c, libfat/source/file_allocation_table.h, libfat/source/filetime.c, libfat/source/filetime.h, libfat/source/libfat.c, libfat/source/mem_allocate.h, libfat/source/partition.c, libfat/source/partition.h, libfat/source/disc_io/disc.c, libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, libfat/source/disc_io/io_cf_common.c, libfat/source/disc_io/io_cf_common.h, libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, libfat/source/disc_io/io_m3_common.c, libfat/source/disc_io/io_m3_common.h, libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, libfat/source/disc_io/io_sc_common.c, libfat/source/disc_io/io_sc_common.h, libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, libfat/source/disc_io/io_scsd_s.s, libfat/source/disc_io/io_sd_common.c, libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, libnds/Makefile.arm9, libnds/libnds_license.txt, libnds/basicARM7/source/defaultARM7.c, libnds/include/default_font_bin.h, libnds/include/gbfs.h, libnds/include/nds.h, libnds/include/nds/bios.h, libnds/include/nds/card.h, libnds/include/nds/dma.h, libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, libnds/include/nds/system.h, libnds/include/nds/timers.h, libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, libnds/include/nds/arm9/background.h, libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, libnds/include/nds/arm9/console.h, libnds/include/nds/arm9/exceptions.h, libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, libnds/source/arm9/default_font.s, libnds/source/arm9/exceptionHandler.S, libnds/source/arm9/exceptionHandler.s, libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, libnds/source/arm9/icache.s, libnds/source/arm9/image.c, libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, libnds/source/arm9/system.c, libnds/source/arm9/touch.c, libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, libnds/source/common/biosCalls.s, libnds/source/common/card.c, libnds/source/common/gbfs.c, libnds/source/common/interruptDispatcher.s, libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, tools/configure.ac, tools/runtest, tools/ndstool/include/arm7_sha1_homebrew.h, tools/ndstool/include/arm7_sha1_nintendo.h, tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, tools/ndstool/include/hook.h, tools/ndstool/include/little.h, tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, tools/ndstool/include/ndscreate.h, tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, tools/ndstool/include/passme_vhd1.h, tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, tools/ndstool/source/arm7_sha1_homebrew.c, tools/ndstool/source/arm7_sha1_nintendo.c, tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, tools/ndstool/source/default_icon.c, tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, tools/ndstool/source/ndscreate.cpp, tools/ndstool/source/ndsextract.cpp, tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, touchscreen/reco.h, touchscreen/touchscreen.c, touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: New files.
  • Property mode set to 100644
File size: 3.8 KB
Line 
1/*
2 * RTEMS for Nintendo DS console driver.
3 *
4 * Copyright (c) 2008 by Renaud Voltz <renaud.voltz@gmail.com>
5 *                       Matthieu Bucchianeri <mbucchia@gmail.com>
6 *
7 * The license and distribution terms for this file may be
8 * found in the file LICENSE in this distribution or at
9 *
10 * http://www.rtems.com/license/LICENSE
11 *
12 * $Id$
13 */
14
15#include <bsp.h>
16#include <nds.h>
17#include <rtems/libio.h>
18#include <nds/arm9/console.h>
19#include <sys/iosupport.h>
20
21#include <rtems/mw_uid.h>
22
23/*
24 * enables testsuite output to desmume. this is used to pass the rtems
25 * testsuite.
26 * comment the following line to disable (recommended).
27 */
28
29//#define TESTSUITE
30
31/*
32 * printk support.
33 */
34
35void
36nds_putch (char c)
37{
38#ifdef TESTSUITE
39  asm volatile ("swi $0x1");
40#endif
41  consolePrintChar (c);
42}
43
44static volatile char ch = 0;
45
46void
47console_push (char c)
48{
49  ch = c;
50}
51
52char
53nds_getch (void)
54{
55  char c;
56
57  while (ch == 0);
58  c = ch;
59  ch = 0;
60  return c;
61}
62
63BSP_output_char_function_type BSP_output_char =
64  (BSP_output_char_function_type) nds_putch;
65BSP_polling_getchar_function_type BSP_poll_char =
66  (BSP_polling_getchar_function_type) nds_getch;
67
68/*
69 * console write operation.
70 */
71
72static int
73nds_write (rtems_device_minor_number minor, const char *buf, int len)
74{
75  int count;
76
77  for (count = 0; count < len; count++) {
78    nds_putch (buf[count]);
79  }
80
81  return 0;
82}
83
84/*
85 * console read operation.
86 */
87
88static int
89nds_read (int minor)
90{
91  return nds_getch ();
92}
93
94/*
95 * from touchscreen/parser.c
96 */
97
98void register_kbd_msg_queue (char *q_name);
99void unregister_kbd_msg_queue (void);
100
101/*
102 * Console driver
103 */
104
105rtems_device_driver
106console_initialize (rtems_device_major_number major,
107                    rtems_device_minor_number minor, void *arg)
108{
109  rtems_status_code status;
110
111  printk ("[+] console started\n");
112
113  rtems_termios_initialize ();
114
115  status = rtems_io_register_name ("/dev/console", major, 0);
116  if (status != RTEMS_SUCCESSFUL) {
117    printk ("[!] error registering console\n");
118    rtems_fatal_error_occurred (status);
119  }
120
121  return (RTEMS_SUCCESSFUL);
122}
123
124rtems_device_driver
125console_open (rtems_device_major_number major,
126              rtems_device_minor_number minor, void *arg)
127{
128  rtems_status_code status;
129  static rtems_termios_callbacks cb = {
130    NULL,                       /* firstOpen     */
131    NULL,                       /* lastClose     */
132    nds_read,                   /* pollRead      */
133    nds_write,                  /* write         */
134    NULL,                       /* setAttributes */
135    NULL,                       /* stopRemoteTx  */
136    NULL,                       /* startRemoteTx */
137    0                           /* 1 = outputUsesInterrupts */
138  };
139
140  status = rtems_termios_open (major, minor, arg, &cb);
141  if (status != RTEMS_SUCCESSFUL)
142    printk ("[!] error opening console\n");
143
144  return (status);
145}
146
147rtems_device_driver
148console_close (rtems_device_major_number major,
149               rtems_device_minor_number minor, void *arg)
150{
151  rtems_device_driver res = RTEMS_SUCCESSFUL;
152
153  res = rtems_termios_close (arg);
154
155  return res;
156}
157
158rtems_device_driver
159console_read (rtems_device_major_number major,
160              rtems_device_minor_number minor, void *arg)
161{
162  return rtems_termios_read (arg);
163}
164
165rtems_device_driver
166console_write (rtems_device_major_number major,
167               rtems_device_minor_number minor, void *arg)
168{
169  return rtems_termios_write (arg);
170}
171
172rtems_device_driver
173console_control (rtems_device_major_number major,
174                 rtems_device_minor_number minor, void *arg)
175{
176  rtems_libio_ioctl_args_t *args = arg;
177
178  switch (args->command) {
179  case MW_UID_REGISTER_DEVICE:
180    register_kbd_msg_queue (args->buffer);
181    break;
182  case MW_UID_UNREGISTER_DEVICE:
183    unregister_kbd_msg_queue ();
184    break;
185  default:
186    return rtems_termios_ioctl (arg);
187  }
188  args->ioctl_return = 0;
189
190  return RTEMS_SUCCESSFUL;
191}
Note: See TracBrowser for help on using the repository browser.