Changeset b1bdc7a4 in mainline


Ignore:
Timestamp:
2011-06-11T19:48:15Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56ad818
Parents:
774fc85
Message:

Control keyboard port modules through ops structures. Allows compiling in
all modules at the same time.

Location:
uspace/srv/hid/kbd
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/kbd/Makefile

    r774fc85 rb1bdc7a4  
    4949        layout/cz.c \
    5050        layout/us_qwerty.c \
    51         layout/us_dvorak.c
     51        layout/us_dvorak.c \
     52        port/adb.c \
     53        port/chardev.c \
     54        port/dummy.c \
     55        port/gxemul.c \
     56        port/msim.c \
     57        port/niagara.c \
     58        port/ns16550.c \
     59        port/pl050.c \
     60        port/sgcn.c \
     61        port/ski.c \
     62        port/sun.c \
     63        port/z8530.c
     64
    5265
    5366ifeq ($(UARCH),amd64)
    5467        SOURCES += \
    55                 port/chardev.c \
    5668                ctl/pc.c
    5769endif
     
    6072        ifeq ($(MACHINE),gta02)
    6173                SOURCES += \
    62                         port/chardev.c \
    6374                        ctl/stty.c
    6475        endif
    6576        ifeq ($(MACHINE),testarm)
    66                 SOURCES += \
    67                         port/gxemul.c
    68                
    6977                ifeq ($(CONFIG_FB),y)
    7078                        SOURCES += \
     
    7785        ifeq ($(MACHINE),integratorcp)
    7886                SOURCES += \
    79                         port/pl050.c \
    8087                        ctl/pc.c
    8188        endif
     
    8491ifeq ($(UARCH),ia32)
    8592        SOURCES += \
    86                 port/chardev.c \
    8793                ctl/pc.c
    8894endif
     
    9096ifeq ($(MACHINE),i460GX)
    9197        SOURCES += \
    92                 port/chardev.c \
    9398                ctl/pc.c
    9499endif
     
    96101ifeq ($(MACHINE),ski)
    97102        SOURCES += \
    98                 port/ski.c \
    99103                ctl/stty.c
    100104endif
     
    102106ifeq ($(MACHINE),msim)
    103107        SOURCES += \
    104                 port/msim.c \
    105108                ctl/stty.c
    106109endif
    107110
    108111ifeq ($(MACHINE),lgxemul)
    109         SOURCES += \
    110                 port/gxemul.c
    111        
    112112        ifeq ($(CONFIG_FB),y)
    113113                SOURCES += \
     
    120120
    121121ifeq ($(MACHINE),bgxemul)
    122         SOURCES += \
    123                 port/gxemul.c
    124        
    125122        ifeq ($(CONFIG_FB),y)
    126123                SOURCES += \
     
    134131ifeq ($(UARCH),ppc32)
    135132        SOURCES += \
    136                 port/adb.c \
    137133                ctl/apple.c
    138134endif
     
    141137        ifeq ($(PROCESSOR),sun4v)
    142138                SOURCES += \
    143                         port/niagara.c \
    144139                        ctl/stty.c
    145140        else
    146141                ifeq ($(MACHINE),serengeti)
    147142                        SOURCES += \
    148                                 port/sgcn.c \
    149143                                ctl/stty.c
    150144                endif
    151145                ifeq ($(MACHINE),generic)
    152146                        SOURCES += \
    153                         port/sun.c \
    154                         port/z8530.c \
    155                         port/ns16550.c \
    156                         ctl/sun.c
     147                                ctl/sun.c
    157148                endif
    158149        endif
     
    161152ifeq ($(UARCH),abs32le)
    162153        SOURCES += \
    163                 port/dummy.c \
    164154                ctl/pc.c
    165155endif
  • uspace/srv/hid/kbd/ctl/apple.c

    r774fc85 rb1bdc7a4  
    4040#include <io/keycode.h>
    4141#include <kbd_ctl.h>
     42#include <kbd_port.h>
    4243
    4344#define KBD_KEY_RELEASE         0x80
     
    4546static int scanmap[];
    4647
    47 int kbd_ctl_init(void)
     48int kbd_ctl_init(kbd_port_ops_t *kbd_port)
    4849{
     50        (void) kbd_port;
    4951        return 0;
    5052}
  • uspace/srv/hid/kbd/ctl/gxe_fb.c

    r774fc85 rb1bdc7a4  
    4040#include <io/keycode.h>
    4141#include <kbd_ctl.h>
     42#include <kbd_port.h>
    4243#include <gsp.h>
    4344#include <stroke.h>
     
    207208};
    208209
    209 int kbd_ctl_init(void)
     210int kbd_ctl_init(kbd_port_ops_t *kbd_port)
    210211{
     212        (void) kbd_port;
    211213        ds = 0;
    212214
  • uspace/srv/hid/kbd/ctl/pc.c

    r774fc85 rb1bdc7a4  
    6464
    6565static enum dec_state ds;
     66static kbd_port_ops_t *kbd_port;
    6667
    6768static int scanmap_simple[] = {
     
    197198};
    198199
    199 int kbd_ctl_init(void)
     200int kbd_ctl_init(kbd_port_ops_t *kbd_p)
    200201{
     202        kbd_port = kbd_p;
    201203        ds = ds_s;
    202204        return 0;
     
    265267                b = b | LI_SCROLL;
    266268
    267         kbd_port_write(KBD_CMD_SET_LEDS);
    268         kbd_port_write(b);
     269        (*kbd_port->write)(KBD_CMD_SET_LEDS);
     270        (*kbd_port->write)(b);
    269271}
    270272
  • uspace/srv/hid/kbd/ctl/stty.c

    r774fc85 rb1bdc7a4  
    3939#include <io/keycode.h>
    4040#include <kbd_ctl.h>
     41#include <kbd_port.h>
    4142#include <gsp.h>
    4243#include <stroke.h>
     
    206207};
    207208
    208 int kbd_ctl_init(void)
     209int kbd_ctl_init(kbd_port_ops_t *kbd_port)
    209210{
     211        (void) kbd_port;
    210212        ds = 0;
    211213
  • uspace/srv/hid/kbd/ctl/sun.c

    r774fc85 rb1bdc7a4  
    4040#include <io/keycode.h>
    4141#include <kbd_ctl.h>
     42#include <kbd_port.h>
    4243
    4344#define KBD_KEY_RELEASE         0x80
     
    4647static int scanmap_simple[];
    4748
    48 int kbd_ctl_init(void)
     49int kbd_ctl_init(kbd_port_ops_t *kbd_port)
    4950{
    5051        return 0;
  • uspace/srv/hid/kbd/generic/kbd.c

    r774fc85 rb1bdc7a4  
    7171static unsigned lock_keys;
    7272
     73static kbd_port_ops_t *kbd_port;
     74
    7375bool irc_service = false;
    7476int irc_phone = -1;
     
    201203                        break;
    202204                case KBD_YIELD:
    203                         kbd_port_yield();
     205                        (*kbd_port->yield)();
    204206                        retval = 0;
    205207                        break;
    206208                case KBD_RECLAIM:
    207                         kbd_port_reclaim();
     209                        (*kbd_port->reclaim)();
    208210                        retval = 0;
    209211                        break;
     
    215217}
    216218
     219static kbd_port_ops_t *kbd_select_port(void)
     220{
     221        kbd_port_ops_t *kbd_port;
     222
     223#if defined(UARCH_amd64)
     224        kbd_port = &chardev_port;
     225#elif defined(UARCH_arm32) && defined(MACHINE_gta02)
     226        kbd_port = &chardev_port;
     227#elif defined(UARCH_arm32) && defined(MACHINE_testarm)
     228        kbd_port = &gxemul_port;
     229#elif defined(UARCH_arm32) && defined(MACHINE_integratorcp)
     230        kbd_port = &pl050_port;
     231#elif defined(UARCH_ia32)
     232        kbd_port = &chardev_port;
     233#elif defined(MACHINE_i460GX)
     234        kbd_port = &chardev_port;
     235#elif defined(MACHINE_ski)
     236        kbd_port = &ski_port;
     237#elif defined(MACHINE_msim)
     238        kbd_port = &msim_port;
     239#elif defined(MACHINE_lgxemul) || defined(MACHINE_bgxemul)
     240        kbd_port = &gxemul_port;
     241#elif defined(UARCH_ppc32)
     242        kbd_port = &adb_port;
     243#elif defined(UARCH_sparc64) && defined(PROCESSOR_sun4v)
     244        kbd_port = &niagara_port;
     245#elif defined(UARCH_sparc64) && defined(MACHINE_serengeti)
     246        kbd_port = &sgcn_port;
     247#elif defined(UARCH_sparc64) && defined(MACHINE_generic)
     248        kbd_port = &sun_port;
     249#else
     250        kbd_port = &dummy_port;
     251#endif
     252        return kbd_port;
     253}
    217254
    218255int main(int argc, char **argv)
     
    232269        }
    233270       
     271        /* Select port driver. */
     272        kbd_port = kbd_select_port();
     273
    234274        /* Initialize port driver. */
    235         if (kbd_port_init() != 0)
     275        if ((*kbd_port->init)() != 0)
    236276                return -1;
    237277
    238278        /* Initialize controller driver. */
    239         if (kbd_ctl_init() != 0)
     279        if (kbd_ctl_init(kbd_port) != 0)
    240280                return -1;
    241281
  • uspace/srv/hid/kbd/include/kbd_ctl.h

    r774fc85 rb1bdc7a4  
    3838#define KBD_CTL_H_
    3939
     40#include <kbd_port.h>
     41
    4042extern void kbd_ctl_parse_scancode(int);
    41 extern int kbd_ctl_init(void);
     43extern int kbd_ctl_init(kbd_port_ops_t *);
    4244extern void kbd_ctl_set_ind(unsigned);
    4345
  • uspace/srv/hid/kbd/include/kbd_port.h

    r774fc85 rb1bdc7a4  
    11/*
    2  * Copyright (c) 2009 Jiri Svoboda
     2 * Copyright (c) 2011 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4040#include <sys/types.h>
    4141
    42 extern int kbd_port_init(void);
    43 extern void kbd_port_yield(void);
    44 extern void kbd_port_reclaim(void);
    45 extern void kbd_port_write(uint8_t);
     42typedef struct {
     43        int (*init)(void);
     44        void (*yield)(void);
     45        void (*reclaim)(void);
     46        void (*write)(uint8_t);
     47} kbd_port_ops_t;
     48
     49extern kbd_port_ops_t adb_port;
     50extern kbd_port_ops_t chardev_port;
     51extern kbd_port_ops_t dummy_port;
     52extern kbd_port_ops_t gxemul_port;
     53extern kbd_port_ops_t msim_port;
     54extern kbd_port_ops_t niagara_port;
     55extern kbd_port_ops_t ns16550_port;
     56extern kbd_port_ops_t pl050_port;
     57extern kbd_port_ops_t sgcn_port;
     58extern kbd_port_ops_t ski_port;
     59extern kbd_port_ops_t sun_port;
     60extern kbd_port_ops_t z8530_port;
    4661
    4762#endif
  • uspace/srv/hid/kbd/port/adb.c

    r774fc85 rb1bdc7a4  
    4949static void adb_kbd_reg0_data(uint16_t data);
    5050
     51static int adb_port_init(void);
     52static void adb_port_yield(void);
     53static void adb_port_reclaim(void);
     54static void adb_port_write(uint8_t data);
     55
     56kbd_port_ops_t adb_port = {
     57        .init = adb_port_init,
     58        .yield = adb_port_yield,
     59        .reclaim = adb_port_reclaim,
     60        .write = adb_port_write
     61};
     62
    5163static int dev_phone;
    5264
    5365#define NAME "kbd"
    5466
    55 int kbd_port_init(void)
     67static int adb_port_init(void)
    5668{
    5769        const char *dev = "adb/kbd";
     
    7890}
    7991
    80 void kbd_port_yield(void)
     92static void adb_port_yield(void)
    8193{
    8294}
    8395
    84 void kbd_port_reclaim(void)
     96static void adb_port_reclaim(void)
    8597{
    8698}
    8799
    88 void kbd_port_write(uint8_t data)
     100static void adb_port_write(uint8_t data)
    89101{
    90102        /*async_msg_1(dev_phone, CHAR_WRITE_BYTE, data);*/
  • uspace/srv/hid/kbd/port/chardev.c

    r774fc85 rb1bdc7a4  
    4949static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall);
    5050
     51static int chardev_port_init(void);
     52static void chardev_port_yield(void);
     53static void chardev_port_reclaim(void);
     54static void chardev_port_write(uint8_t data);
     55
     56kbd_port_ops_t chardev_port = {
     57        .init = chardev_port_init,
     58        .yield = chardev_port_yield,
     59        .reclaim = chardev_port_reclaim,
     60        .write = chardev_port_write
     61};
     62
    5163static int dev_phone;
    5264
     
    5971static const unsigned int num_devs = sizeof(in_devs) / sizeof(in_devs[0]);
    6072
    61 int kbd_port_init(void)
     73static int chardev_port_init(void)
    6274{
    6375        devmap_handle_t handle;
     
    91103}
    92104
    93 void kbd_port_yield(void)
     105static void chardev_port_yield(void)
    94106{
    95107}
    96108
    97 void kbd_port_reclaim(void)
     109static void chardev_port_reclaim(void)
    98110{
    99111}
    100112
    101 void kbd_port_write(uint8_t data)
     113static void chardev_port_write(uint8_t data)
    102114{
    103115        async_obsolete_msg_1(dev_phone, CHAR_WRITE_BYTE, data);
  • uspace/srv/hid/kbd/port/dummy.c

    r774fc85 rb1bdc7a4  
    3838#include <kbd.h>
    3939
    40 int kbd_port_init(void)
     40static int dummy_port_init(void);
     41static void dummy_port_yield(void);
     42static void dummy_port_reclaim(void);
     43static void dummy_port_write(uint8_t data);
     44
     45kbd_port_ops_t dummy_port = {
     46        .init = dummy_port_init,
     47        .yield = dummy_port_yield,
     48        .reclaim = dummy_port_reclaim,
     49        .write = dummy_port_write
     50};
     51
     52
     53static int dummy_port_init(void)
    4154{
    4255        return 0;
    4356}
    4457
    45 void kbd_port_yield(void)
     58static void dummy_port_yield(void)
    4659{
    4760}
    4861
    49 void kbd_port_reclaim(void)
     62static void dummy_port_reclaim(void)
    5063{
    5164}
    5265
    53 void kbd_port_write(uint8_t data)
     66static void dummy_port_write(uint8_t data)
    5467{
    5568        (void) data;
  • uspace/srv/hid/kbd/port/gxemul.c

    r774fc85 rb1bdc7a4  
    4242#include <errno.h>
    4343
     44static int gxemul_port_init(void);
     45static void gxemul_port_yield(void);
     46static void gxemul_port_reclaim(void);
     47static void gxemul_port_write(uint8_t data);
     48
     49kbd_port_ops_t gxemul_port = {
     50        .init = gxemul_port_init,
     51        .yield = gxemul_port_yield,
     52        .reclaim = gxemul_port_reclaim,
     53        .write = gxemul_port_write
     54};
     55
    4456static irq_cmd_t gxemul_cmds[] = {
    4557        {
     
    6173
    6274/** Initializes keyboard handler. */
    63 int kbd_port_init(void)
     75static int gxemul_port_init(void)
    6476{
    6577        sysarg_t addr;
     
    7789}
    7890
    79 void kbd_port_yield(void)
     91static void gxemul_port_yield(void)
    8092{
    8193}
    8294
    83 void kbd_port_reclaim(void)
     95static void gxemul_port_reclaim(void)
    8496{
    8597}
    8698
    87 void kbd_port_write(uint8_t data)
     99static void gxemul_port_write(uint8_t data)
    88100{
    89101        (void) data;
  • uspace/srv/hid/kbd/port/msim.c

    r774fc85 rb1bdc7a4  
    4242#include <errno.h>
    4343
    44 irq_cmd_t msim_cmds[] = {
     44static int msim_port_init(void);
     45static void msim_port_yield(void);
     46static void msim_port_reclaim(void);
     47static void msim_port_write(uint8_t data);
     48
     49kbd_port_ops_t msim_port = {
     50        .init = msim_port_init,
     51        .yield = msim_port_yield,
     52        .reclaim = msim_port_reclaim,
     53        .write = msim_port_write
     54};
     55
     56static irq_cmd_t msim_cmds[] = {
    4557        {
    4658                .cmd = CMD_PIO_READ_8,
     
    5163                .cmd = CMD_ACCEPT
    5264        }
    53        
    5465};
    5566
    56 irq_code_t msim_kbd = {
     67static irq_code_t msim_kbd = {
    5768        sizeof(msim_cmds) / sizeof(irq_cmd_t),
    5869        msim_cmds
     
    6172static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call);
    6273
    63 int kbd_port_init(void)
     74static int msim_port_init(void)
    6475{
    6576        sysarg_t vaddr;
     
    7889}
    7990
    80 void kbd_port_yield(void)
     91static void msim_port_yield(void)
    8192{
    8293}
    8394
    84 void kbd_port_reclaim(void)
     95static void msim_port_reclaim(void)
    8596{
    8697}
    8798
    88 void kbd_port_write(uint8_t data)
     99static void msim_port_write(uint8_t data)
    89100{
    90101        (void) data;
  • uspace/srv/hid/kbd/port/niagara.c

    r774fc85 rb1bdc7a4  
    4646#include <errno.h>
    4747
     48static int niagara_port_init(void);
     49static void niagara_port_yield(void);
     50static void niagara_port_reclaim(void);
     51static void niagara_port_write(uint8_t data);
     52
     53kbd_port_ops_t niagara_port = {
     54        .init = niagara_port_init,
     55        .yield = niagara_port_yield,
     56        .reclaim = niagara_port_reclaim,
     57        .write = niagara_port_write
     58};
     59
    4860#define POLL_INTERVAL  10000
    4961
     
    7082
    7183/* virtual address of the shared buffer */
    72 input_buffer_t input_buffer;
     84static input_buffer_t input_buffer;
    7385
    7486static volatile bool polling_disabled = false;
     
    7991 * Maps the shared buffer and creates the polling thread.
    8092 */
    81 int kbd_port_init(void)
     93static int niagara_port_init(void)
    8294{
    8395        sysarg_t paddr;
     
    105117}
    106118
    107 void kbd_port_yield(void)
     119static void niagara_port_yield(void)
    108120{
    109121        polling_disabled = true;
    110122}
    111123
    112 void kbd_port_reclaim(void)
     124static void niagara_port_reclaim(void)
    113125{
    114126        polling_disabled = false;
    115127}
    116128
    117 void kbd_port_write(uint8_t data)
     129static void niagara_port_write(uint8_t data)
    118130{
    119131        (void) data;
  • uspace/srv/hid/kbd/port/pl050.c

    r774fc85 rb1bdc7a4  
    4646#include <errno.h>
    4747
     48static int pl050_port_init(void);
     49static void pl050_port_yield(void);
     50static void pl050_port_reclaim(void);
     51static void pl050_port_write(uint8_t data);
     52
     53kbd_port_ops_t pl050_port = {
     54        .init = pl050_port_init,
     55        .yield = pl050_port_yield,
     56        .reclaim = pl050_port_reclaim,
     57        .write = pl050_port_write
     58};
     59
    4860#define PL050_STAT_RXFULL  (1 << 4)
    4961
     
    8294static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call);
    8395
    84 int kbd_port_init(void)
     96static int pl050_port_init(void)
    8597{
    8698        sysarg_t addr;
     
    105117}
    106118
    107 void kbd_port_yield(void)
     119static void pl050_port_yield(void)
    108120{
    109121}
    110122
    111 void kbd_port_reclaim(void)
     123static void pl050_port_reclaim(void)
    112124{
    113125}
    114126
    115 void kbd_port_write(uint8_t data)
     127static void pl050_port_write(uint8_t data)
    116128{
    117129        (void) data;
  • uspace/srv/hid/kbd/port/sgcn.c

    r774fc85 rb1bdc7a4  
    4646#include <errno.h>
    4747
     48static int sgcn_port_init(void);
     49static void sgcn_port_yield(void);
     50static void sgcn_port_reclaim(void);
     51static void sgcn_port_write(uint8_t data);
     52
     53kbd_port_ops_t sgcn_port = {
     54        .init = sgcn_port_init,
     55        .yield = sgcn_port_yield,
     56        .reclaim = sgcn_port_reclaim,
     57        .write = sgcn_port_write
     58};
     59
    4860#define POLL_INTERVAL  10000
    4961
     
    101113 * Maps the physical memory (SRAM) and creates the polling thread.
    102114 */
    103 int kbd_port_init(void)
     115static int sgcn_port_init(void)
    104116{
    105117        sysarg_t sram_paddr;
     
    130142}
    131143
    132 void kbd_port_yield(void)
     144static void sgcn_port_yield(void)
    133145{
    134146        polling_disabled = true;
    135147}
    136148
    137 void kbd_port_reclaim(void)
     149static void sgcn_port_reclaim(void)
    138150{
    139151        polling_disabled = false;
    140152}
    141153
    142 void kbd_port_write(uint8_t data)
     154static void sgcn_port_write(uint8_t data)
    143155{
    144156        (void) data;
  • uspace/srv/hid/kbd/port/ski.c

    r774fc85 rb1bdc7a4  
    4545#include <bool.h>
    4646
     47static int ski_port_init(void);
     48static void ski_port_yield(void);
     49static void ski_port_reclaim(void);
     50static void ski_port_write(uint8_t data);
     51
     52kbd_port_ops_t ski_port = {
     53        .init = ski_port_init,
     54        .yield = ski_port_yield,
     55        .reclaim = ski_port_reclaim,
     56        .write = ski_port_write
     57};
     58
    4759#define SKI_GETCHAR             21
    4860
     
    5567
    5668/** Initialize Ski port driver. */
    57 int kbd_port_init(void)
     69static int ski_port_init(void)
    5870{
    5971        thread_id_t tid;
     
    6880}
    6981
    70 void kbd_port_yield(void)
     82static void ski_port_yield(void)
    7183{
    7284        polling_disabled = true;
    7385}
    7486
    75 void kbd_port_reclaim(void)
     87static void ski_port_reclaim(void)
    7688{
    7789        polling_disabled = false;
    7890}
    7991
    80 void kbd_port_write(uint8_t data)
     92static void ski_port_write(uint8_t data)
    8193{
    8294        (void) data;
     
    112124        uint64_t ch;
    113125       
     126#ifdef UARCH_ia64
    114127        asm volatile (
    115128                "mov r15 = %1\n"
     
    121134                : "r15", "r8"
    122135        );
    123 
     136#else
     137        ch = 0;
     138#endif
    124139        return (int32_t) ch;
    125140}
  • uspace/srv/hid/kbd/port/sun.c

    r774fc85 rb1bdc7a4  
    4242#include <bool.h>
    4343
     44static int sun_port_init(void);
     45static void sun_port_yield(void);
     46static void sun_port_reclaim(void);
     47static void sun_port_write(uint8_t data);
     48
     49kbd_port_ops_t sun_port = {
     50        .init = sun_port_init,
     51        .yield = sun_port_yield,
     52        .reclaim = sun_port_reclaim,
     53        .write = sun_port_write
     54};
     55
     56
    4457/** Sun keyboard virtual port driver.
    4558 *
     
    5063 *
    5164 */
    52 int kbd_port_init(void)
     65static int sun_port_init(void)
    5366{
    5467        sysarg_t z8530;
     
    7386}
    7487
    75 void kbd_port_yield(void)
     88static void sun_port_yield(void)
    7689{
    7790}
    7891
    79 void kbd_port_reclaim(void)
     92static void sun_port_reclaim(void)
    8093{
    8194}
    8295
    83 void kbd_port_write(uint8_t data)
     96static void sun_port_write(uint8_t data)
    8497{
    8598        (void) data;
  • uspace/srv/hid/kbd/port/z8530.c

    r774fc85 rb1bdc7a4  
    7777        }
    7878};
    79        
    80 irq_code_t z8530_kbd = {
     79
     80static irq_code_t z8530_kbd = {
    8181        sizeof(z8530_cmds) / sizeof(irq_cmd_t),
    8282        z8530_cmds
Note: See TracChangeset for help on using the changeset viewer.