Changeset 56ad818 in mainline for uspace/srv/hid/kbd/generic/kbd.c


Ignore:
Timestamp:
2011-06-11T20:29:41Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9be360ee
Parents:
b1bdc7a4
Message:

Control keyboard ctl modules through ops structures. Always compile in
all ctl modules.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/kbd/generic/kbd.c

    rb1bdc7a4 r56ad818  
    7272
    7373static kbd_port_ops_t *kbd_port;
     74static kbd_ctl_ops_t *kbd_ctl;
    7475
    7576bool irc_service = false;
     
    8990{
    9091/*      printf("scancode: 0x%x\n", scancode);*/
    91         kbd_ctl_parse_scancode(scancode);
     92        (*kbd_ctl->parse_scancode)(scancode);
    9293}
    9394
     
    132133
    133134                        /* Update keyboard lock indicator lights. */
    134                         kbd_ctl_set_ind(mods);
     135                        (*kbd_ctl->set_ind)(mods);
    135136                } else {
    136137                        lock_keys = lock_keys & ~mod_mask;
     
    217218}
    218219
    219 static kbd_port_ops_t *kbd_select_port(void)
    220 {
    221         kbd_port_ops_t *kbd_port;
    222 
     220static void kbd_select_drivers(kbd_port_ops_t **port, kbd_ctl_ops_t **ctl)
     221{
    223222#if defined(UARCH_amd64)
    224         kbd_port = &chardev_port;
     223        *port = &chardev_port;
     224        *ctl = &pc_ctl;
    225225#elif defined(UARCH_arm32) && defined(MACHINE_gta02)
    226         kbd_port = &chardev_port;
     226        *port = &chardev_port;
     227        *ctl = &stty_ctl;
    227228#elif defined(UARCH_arm32) && defined(MACHINE_testarm)
    228         kbd_port = &gxemul_port;
     229        *port = &gxemul_port;
     230        #ifdef CONFIG_FB
     231                *ctl = &gxe_fb_ctl;
     232        #else
     233                *ctl = &stty_ctl;
     234        #endif
    229235#elif defined(UARCH_arm32) && defined(MACHINE_integratorcp)
    230         kbd_port = &pl050_port;
     236        *port = &pl050_port;
     237        *ctl = &pc_ctl;
    231238#elif defined(UARCH_ia32)
    232         kbd_port = &chardev_port;
     239        *port = &chardev_port;
     240        *ctl = &pc_ctl;
    233241#elif defined(MACHINE_i460GX)
    234         kbd_port = &chardev_port;
     242        *port = &chardev_port;
     243        *ctl = &pc_ctl;
    235244#elif defined(MACHINE_ski)
    236         kbd_port = &ski_port;
     245        *port = &ski_port;
     246        *ctl = &stty_ctl;
    237247#elif defined(MACHINE_msim)
    238         kbd_port = &msim_port;
     248        *port = &msim_port;
     249        *ctl = &stty_ctl;
    239250#elif defined(MACHINE_lgxemul) || defined(MACHINE_bgxemul)
    240         kbd_port = &gxemul_port;
     251        *port = &gxemul_port;
     252        #ifdef CONFIG_FB
     253                *ctl = &gxe_fb_ctl;
     254        #else
     255                *ctl = &stty_ctl;
     256        #endif
    241257#elif defined(UARCH_ppc32)
    242         kbd_port = &adb_port;
     258        *port = &adb_port;
     259        *ctl = &apple_ctl;
    243260#elif defined(UARCH_sparc64) && defined(PROCESSOR_sun4v)
    244         kbd_port = &niagara_port;
     261        *port = &niagara_port;
     262        *ctl = &stty_ctl;
    245263#elif defined(UARCH_sparc64) && defined(MACHINE_serengeti)
    246         kbd_port = &sgcn_port;
     264        *port = &sgcn_port;
     265        *ctl = &stty_ctl;
    247266#elif defined(UARCH_sparc64) && defined(MACHINE_generic)
    248         kbd_port = &sun_port;
     267        *port = &sun_port;
     268        *ctl = &sun_ctl;
    249269#else
    250         kbd_port = &dummy_port;
     270        *port = &dummy_port;
     271        *ctl = &pc_ctl;
    251272#endif
    252         return kbd_port;
    253273}
    254274
     
    269289        }
    270290       
    271         /* Select port driver. */
    272         kbd_port = kbd_select_port();
     291        /* Select port and controller drivers. */
     292        kbd_select_drivers(&kbd_port, &kbd_ctl);
    273293
    274294        /* Initialize port driver. */
     
    277297
    278298        /* Initialize controller driver. */
    279         if (kbd_ctl_init(kbd_port) != 0)
     299        if ((*kbd_ctl->init)(kbd_port) != 0)
    280300                return -1;
    281301
Note: See TracChangeset for help on using the changeset viewer.