Changeset d900699 in mainline for uspace/srv/hid/input/port


Ignore:
Timestamp:
2011-06-17T16:48:53Z (15 years ago)
Author:
Petr Koupy <petr.koupy@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f3a605be
Parents:
df8110d3 (diff), 98caf49 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
uspace/srv/hid/input/port
Files:
12 moved

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/input/port/adb.c

    rdf8110d3 rd900699  
    11/*
    2  * Copyright (c) 2010 Jiri Svoboda
     2 * Copyright (c) 2011 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3838#include <async.h>
    3939#include <async_obsolete.h>
     40#include <input.h>
    4041#include <kbd_port.h>
    4142#include <kbd.h>
     
    4647#include <devmap_obsolete.h>
    4748
    48 static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall);
     49static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall, void *arg);
    4950static void adb_kbd_reg0_data(uint16_t data);
    5051
     52static int adb_port_init(kbd_dev_t *);
     53static void adb_port_yield(void);
     54static void adb_port_reclaim(void);
     55static void adb_port_write(uint8_t data);
     56
     57kbd_port_ops_t adb_port = {
     58        .init = adb_port_init,
     59        .yield = adb_port_yield,
     60        .reclaim = adb_port_reclaim,
     61        .write = adb_port_write
     62};
     63
     64static kbd_dev_t *kbd_dev;
    5165static int dev_phone;
    5266
    53 #define NAME "kbd"
    54 
    55 int kbd_port_init(void)
     67static int adb_port_init(kbd_dev_t *kdev)
    5668{
    5769        const char *dev = "adb/kbd";
    5870        devmap_handle_t handle;
     71
     72        kbd_dev = kdev;
    5973       
    6074        int rc = devmap_device_get_handle(dev, &handle, 0);
     
    6983       
    7084        /* NB: The callback connection is slotted for removal */
    71         rc = async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events);
     85        rc = async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events,
     86            NULL);
    7287        if (rc != EOK) {
    7388                printf(NAME ": Failed to create callback from device\n");
     
    7893}
    7994
    80 void kbd_port_yield(void)
     95static void adb_port_yield(void)
    8196{
    8297}
    8398
    84 void kbd_port_reclaim(void)
     99static void adb_port_reclaim(void)
    85100{
    86101}
    87102
    88 void kbd_port_write(uint8_t data)
     103static void adb_port_write(uint8_t data)
    89104{
    90105        /*async_msg_1(dev_phone, CHAR_WRITE_BYTE, data);*/
    91106}
    92107
    93 static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall)
     108static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    94109{
    95110        /* Ignore parameters, the connection is already opened */
     
    125140
    126141        if (b0 != 0xff)
    127                 kbd_push_scancode(b0);
     142                kbd_push_scancode(kbd_dev, b0);
    128143        if (b1 != 0xff)
    129                 kbd_push_scancode(b1);
     144                kbd_push_scancode(kbd_dev, b1);
    130145}
    131146
  • uspace/srv/hid/input/port/chardev.c

    rdf8110d3 rd900699  
    11/*
    2  * Copyright (c) 2009 Jiri Svoboda
     2 * Copyright (c) 2011 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3838#include <async.h>
    3939#include <async_obsolete.h>
     40#include <input.h>
    4041#include <kbd_port.h>
    4142#include <kbd.h>
     
    4546#include <stdio.h>
    4647
    47 #define NAME  "kbd/chardev"
     48static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall, void *arg);
    4849
    49 static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall);
     50static int chardev_port_init(kbd_dev_t *);
     51static void chardev_port_yield(void);
     52static void chardev_port_reclaim(void);
     53static void chardev_port_write(uint8_t data);
    5054
     55kbd_port_ops_t chardev_port = {
     56        .init = chardev_port_init,
     57        .yield = chardev_port_yield,
     58        .reclaim = chardev_port_reclaim,
     59        .write = chardev_port_write
     60};
     61
     62static kbd_dev_t *kbd_dev;
    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(kbd_dev_t *kdev)
    6274{
    6375        devmap_handle_t handle;
    6476        unsigned int i;
    6577        int rc;
     78       
     79        kbd_dev = kdev;
    6680       
    6781        for (i = 0; i < num_devs; i++) {
     
    8397       
    8498        /* NB: The callback connection is slotted for removal */
    85         if (async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events) != 0) {
     99        if (async_obsolete_connect_to_me(dev_phone, 0, 0, 0, kbd_port_events,
     100            NULL) != 0) {
    86101                printf(NAME ": Failed to create callback from device\n");
    87102                return -1;
     
    91106}
    92107
    93 void kbd_port_yield(void)
     108static void chardev_port_yield(void)
    94109{
    95110}
    96111
    97 void kbd_port_reclaim(void)
     112static void chardev_port_reclaim(void)
    98113{
    99114}
    100115
    101 void kbd_port_write(uint8_t data)
     116static void chardev_port_write(uint8_t data)
    102117{
    103118        async_obsolete_msg_1(dev_phone, CHAR_WRITE_BYTE, data);
    104119}
    105120
    106 static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall)
     121static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    107122{
    108123        /* Ignore parameters, the connection is already opened */
     
    121136                switch (IPC_GET_IMETHOD(call)) {
    122137                case CHAR_NOTIF_BYTE:
    123                         kbd_push_scancode(IPC_GET_ARG1(call));
     138                        kbd_push_scancode(kbd_dev, IPC_GET_ARG1(call));
    124139                        break;
    125140                default:
  • uspace/srv/hid/input/port/gxemul.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2007 Michal Kebrt
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    4243#include <errno.h>
    4344
     45static int gxemul_port_init(kbd_dev_t *);
     46static void gxemul_port_yield(void);
     47static void gxemul_port_reclaim(void);
     48static void gxemul_port_write(uint8_t data);
     49
     50kbd_port_ops_t gxemul_port = {
     51        .init = gxemul_port_init,
     52        .yield = gxemul_port_yield,
     53        .reclaim = gxemul_port_reclaim,
     54        .write = gxemul_port_write
     55};
     56
     57static kbd_dev_t *kbd_dev;
     58
    4459static irq_cmd_t gxemul_cmds[] = {
    4560        {
     
    6176
    6277/** Initializes keyboard handler. */
    63 int kbd_port_init(void)
     78static int gxemul_port_init(kbd_dev_t *kdev)
    6479{
     80        kbd_dev = kdev;
     81       
    6582        sysarg_t addr;
    6683        if (sysinfo_get_value("kbd.address.virtual", &addr) != EOK)
     
    7794}
    7895
    79 void kbd_port_yield(void)
     96static void gxemul_port_yield(void)
    8097{
    8198}
    8299
    83 void kbd_port_reclaim(void)
     100static void gxemul_port_reclaim(void)
    84101{
    85102}
    86103
    87 void kbd_port_write(uint8_t data)
     104static void gxemul_port_write(uint8_t data)
    88105{
    89106        (void) data;
     
    101118        int scan_code = IPC_GET_ARG2(*call);
    102119
    103         kbd_push_scancode(scan_code);
     120        kbd_push_scancode(kbd_dev, scan_code);
    104121}
    105122
  • uspace/srv/hid/input/port/msim.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2006 Josef Cejka
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    4243#include <errno.h>
    4344
    44 irq_cmd_t msim_cmds[] = {
     45static int msim_port_init(kbd_dev_t *);
     46static void msim_port_yield(void);
     47static void msim_port_reclaim(void);
     48static void msim_port_write(uint8_t data);
     49
     50kbd_port_ops_t msim_port = {
     51        .init = msim_port_init,
     52        .yield = msim_port_yield,
     53        .reclaim = msim_port_reclaim,
     54        .write = msim_port_write
     55};
     56
     57static kbd_dev_t *kbd_dev;
     58
     59static irq_cmd_t msim_cmds[] = {
    4560        {
    4661                .cmd = CMD_PIO_READ_8,
     
    5166                .cmd = CMD_ACCEPT
    5267        }
    53        
    5468};
    5569
    56 irq_code_t msim_kbd = {
     70static irq_code_t msim_kbd = {
    5771        sizeof(msim_cmds) / sizeof(irq_cmd_t),
    5872        msim_cmds
     
    6175static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call);
    6276
    63 int kbd_port_init(void)
     77static int msim_port_init(kbd_dev_t *kdev)
    6478{
     79        kbd_dev = kdev;
     80
    6581        sysarg_t vaddr;
    6682        if (sysinfo_get_value("kbd.address.virtual", &vaddr) != EOK)
     
    7894}
    7995
    80 void kbd_port_yield(void)
     96static void msim_port_yield(void)
    8197{
    8298}
    8399
    84 void kbd_port_reclaim(void)
     100static void msim_port_reclaim(void)
    85101{
    86102}
    87103
    88 void kbd_port_write(uint8_t data)
     104static void msim_port_write(uint8_t data)
    89105{
    90106        (void) data;
     
    94110{
    95111        int scan_code = IPC_GET_ARG2(*call);
    96         kbd_push_scancode(scan_code);
     112        kbd_push_scancode(kbd_dev, scan_code);
    97113}
    98114
  • uspace/srv/hid/input/port/niagara.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2008 Pavel Rimsky
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    4647#include <errno.h>
    4748
     49static int niagara_port_init(kbd_dev_t *);
     50static void niagara_port_yield(void);
     51static void niagara_port_reclaim(void);
     52static void niagara_port_write(uint8_t data);
     53
     54kbd_port_ops_t niagara_port = {
     55        .init = niagara_port_init,
     56        .yield = niagara_port_yield,
     57        .reclaim = niagara_port_reclaim,
     58        .write = niagara_port_write
     59};
     60
     61static kbd_dev_t *kbd_dev;
     62
    4863#define POLL_INTERVAL  10000
    4964
     
    7085
    7186/* virtual address of the shared buffer */
    72 input_buffer_t input_buffer;
     87static input_buffer_t input_buffer;
    7388
    7489static volatile bool polling_disabled = false;
     
    7994 * Maps the shared buffer and creates the polling thread.
    8095 */
    81 int kbd_port_init(void)
     96static int niagara_port_init(kbd_dev_t *kdev)
    8297{
     98        kbd_dev = kdev;
     99       
    83100        sysarg_t paddr;
    84101        if (sysinfo_get_value("niagara.inbuf.address", &paddr) != EOK)
     
    105122}
    106123
    107 void kbd_port_yield(void)
     124static void niagara_port_yield(void)
    108125{
    109126        polling_disabled = true;
    110127}
    111128
    112 void kbd_port_reclaim(void)
     129static void niagara_port_reclaim(void)
    113130{
    114131        polling_disabled = false;
    115132}
    116133
    117 void kbd_port_write(uint8_t data)
     134static void niagara_port_write(uint8_t data)
    118135{
    119136        (void) data;
     
    132149                input_buffer->read_ptr =
    133150                        ((input_buffer->read_ptr) + 1) % INPUT_BUFFER_SIZE;
    134                 kbd_push_scancode(c);
     151                kbd_push_scancode(kbd_dev, c);
    135152        }
    136153}
  • uspace/srv/hid/input/port/ns16550.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2006 Josef Cejka
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    3940#include <async_obsolete.h>
    4041#include <sysinfo.h>
     42#include <input.h>
    4143#include <kbd.h>
    4244#include <kbd_port.h>
    43 #include <sun.h>
    4445#include <ddi.h>
    4546#include <errno.h>
     47
     48static int ns16550_port_init(kbd_dev_t *);
     49static void ns16550_port_yield(void);
     50static void ns16550_port_reclaim(void);
     51static void ns16550_port_write(uint8_t data);
     52
     53kbd_port_ops_t ns16550_port = {
     54        .init = ns16550_port_init,
     55        .yield = ns16550_port_yield,
     56        .reclaim = ns16550_port_reclaim,
     57        .write = ns16550_port_write
     58};
     59
     60static kbd_dev_t *kbd_dev;
    4661
    4762/* NS16550 registers */
     
    91106
    92107static uintptr_t ns16550_physical;
    93 static uintptr_t ns16550_kernel; 
     108static uintptr_t ns16550_kernel;
    94109
    95 int ns16550_port_init(void)
     110static kbd_dev_t *kbd_dev;
     111
     112static int ns16550_port_init(kbd_dev_t *kdev)
    96113{
    97114        void *vaddr;
    98 
     115       
     116        kbd_dev = kdev;
     117       
     118        sysarg_t ns16550;
     119        if (sysinfo_get_value("kbd.type.ns16550", &ns16550) != EOK)
     120                return -1;
     121        if (!ns16550)
     122                return -1;
     123       
    99124        if (sysinfo_get_value("kbd.address.physical", &ns16550_physical) != EOK)
    100125                return -1;
     
    116141}
    117142
     143static void ns16550_port_yield(void)
     144{
     145}
     146
     147static void ns16550_port_reclaim(void)
     148{
     149}
     150
     151static void ns16550_port_write(uint8_t data)
     152{
     153        (void) data;
     154}
     155
    118156static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call)
    119157{
    120158        int scan_code = IPC_GET_ARG2(*call);
    121         kbd_push_scancode(scan_code);
     159        kbd_push_scancode(kbd_dev, scan_code);
    122160       
    123161        if (irc_service)
  • uspace/srv/hid/input/port/pl050.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2009 Vineeth Pillai
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    4647#include <errno.h>
    4748
     49static int pl050_port_init(kbd_dev_t *);
     50static void pl050_port_yield(void);
     51static void pl050_port_reclaim(void);
     52static void pl050_port_write(uint8_t data);
     53
     54kbd_port_ops_t pl050_port = {
     55        .init = pl050_port_init,
     56        .yield = pl050_port_yield,
     57        .reclaim = pl050_port_reclaim,
     58        .write = pl050_port_write
     59};
     60
     61static kbd_dev_t *kbd_dev;
     62
    4863#define PL050_STAT_RXFULL  (1 << 4)
    4964
     
    8297static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call);
    8398
    84 int kbd_port_init(void)
     99static int pl050_port_init(kbd_dev_t *kdev)
    85100{
     101        kbd_dev = kdev;
     102       
    86103        sysarg_t addr;
    87104        if (sysinfo_get_value("kbd.address.status", &addr) != EOK)
     
    105122}
    106123
    107 void kbd_port_yield(void)
     124static void pl050_port_yield(void)
    108125{
    109126}
    110127
    111 void kbd_port_reclaim(void)
     128static void pl050_port_reclaim(void)
    112129{
    113130}
    114131
    115 void kbd_port_write(uint8_t data)
     132static void pl050_port_write(uint8_t data)
    116133{
    117134        (void) data;
     
    122139        int scan_code = IPC_GET_ARG2(*call);
    123140
    124         kbd_push_scancode(scan_code);
     141        kbd_push_scancode(kbd_dev, scan_code);
    125142        return;
    126143}
  • uspace/srv/hid/input/port/sgcn.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2008 Pavel Rimsky
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    4647#include <errno.h>
    4748
     49static int sgcn_port_init(kbd_dev_t *);
     50static void sgcn_port_yield(void);
     51static void sgcn_port_reclaim(void);
     52static void sgcn_port_write(uint8_t data);
     53
     54kbd_port_ops_t sgcn_port = {
     55        .init = sgcn_port_init,
     56        .yield = sgcn_port_yield,
     57        .reclaim = sgcn_port_reclaim,
     58        .write = sgcn_port_write
     59};
     60
     61static kbd_dev_t *kbd_dev;
     62
    4863#define POLL_INTERVAL  10000
    4964
     
    101116 * Maps the physical memory (SRAM) and creates the polling thread.
    102117 */
    103 int kbd_port_init(void)
    104 {
     118static int sgcn_port_init(kbd_dev_t *kdev)
     119{
     120        kbd_dev = kdev;
     121       
    105122        sysarg_t sram_paddr;
    106123        if (sysinfo_get_value("sram.address.physical", &sram_paddr) != EOK)
     
    130147}
    131148
    132 void kbd_port_yield(void)
     149static void sgcn_port_yield(void)
    133150{
    134151        polling_disabled = true;
    135152}
    136153
    137 void kbd_port_reclaim(void)
     154static void sgcn_port_reclaim(void)
    138155{
    139156        polling_disabled = false;
    140157}
    141158
    142 void kbd_port_write(uint8_t data)
     159static void sgcn_port_write(uint8_t data)
    143160{
    144161        (void) data;
     
    167184                buf_ptr = (volatile char *)
    168185                        SGCN_BUFFER(char, SGCN_BUFFER_HEADER->in_rdptr);
    169                 kbd_push_scancode(c);
     186                kbd_push_scancode(kbd_dev, c);
    170187        }
    171188}
  • uspace/srv/hid/input/port/ski.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2005 Jakub Jermar
    3  * Copyright (c) 2009 Jiri Svoboda
     3 * Copyright (c) 2011 Jiri Svoboda
    44 * All rights reserved.
    55 *
     
    4545#include <bool.h>
    4646
     47static int ski_port_init(kbd_dev_t *);
     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
     59static kbd_dev_t *kbd_dev;
     60
    4761#define SKI_GETCHAR             21
    4862
     
    5569
    5670/** Initialize Ski port driver. */
    57 int kbd_port_init(void)
     71static int ski_port_init(kbd_dev_t *kdev)
    5872{
    5973        thread_id_t tid;
    6074        int rc;
     75
     76        kbd_dev = kdev;
    6177
    6278        rc = thread_create(ski_thread_impl, NULL, "kbd_poll", &tid);
     
    6884}
    6985
    70 void kbd_port_yield(void)
     86static void ski_port_yield(void)
    7187{
    7288        polling_disabled = true;
    7389}
    7490
    75 void kbd_port_reclaim(void)
     91static void ski_port_reclaim(void)
    7692{
    7793        polling_disabled = false;
    7894}
    7995
    80 void kbd_port_write(uint8_t data)
     96static void ski_port_write(uint8_t data)
    8197{
    8298        (void) data;
     
    94110                        if (c == 0)
    95111                                break;
    96                         kbd_push_scancode(c);
     112                        kbd_push_scancode(kbd_dev, c);
    97113                }
    98114
     
    112128        uint64_t ch;
    113129       
     130#ifdef UARCH_ia64
    114131        asm volatile (
    115132                "mov r15 = %1\n"
     
    121138                : "r15", "r8"
    122139        );
    123 
     140#else
     141        ch = 0;
     142#endif
    124143        return (int32_t) ch;
    125144}
  • uspace/srv/hid/input/port/z8530.c

    rdf8110d3 rd900699  
    11/*
    22 * Copyright (c) 2006 Martin Decky
     3 * Copyright (c) 2011 Jiri Svoboda
    34 * All rights reserved.
    45 *
     
    3940#include <async_obsolete.h>
    4041#include <sysinfo.h>
     42#include <input.h>
    4143#include <kbd.h>
    4244#include <kbd_port.h>
    43 #include <sun.h>
    4445#include <sys/types.h>
    4546#include <ddi.h>
    4647#include <errno.h>
     48
     49static int z8530_port_init(kbd_dev_t *);
     50static void z8530_port_yield(void);
     51static void z8530_port_reclaim(void);
     52static void z8530_port_write(uint8_t data);
     53
     54kbd_port_ops_t z8530_port = {
     55        .init = z8530_port_init,
     56        .yield = z8530_port_yield,
     57        .reclaim = z8530_port_reclaim,
     58        .write = z8530_port_write
     59};
     60
     61static kbd_dev_t *kbd_dev;
    4762
    4863#define CHAN_A_STATUS  4
     
    7792        }
    7893};
    79        
    80 irq_code_t z8530_kbd = {
     94
     95static irq_code_t z8530_kbd = {
    8196        sizeof(z8530_cmds) / sizeof(irq_cmd_t),
    8297        z8530_cmds
     
    85100static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call);
    86101
    87 int z8530_port_init(void)
     102static int z8530_port_init(kbd_dev_t *kdev)
    88103{
     104        kbd_dev = kdev;
     105       
     106        sysarg_t z8530;
     107        if (sysinfo_get_value("kbd.type.z8530", &z8530) != EOK)
     108                return -1;
     109        if (!z8530)
     110                return -1;
     111       
    89112        sysarg_t kaddr;
    90113        if (sysinfo_get_value("kbd.address.kernel", &kaddr) != EOK)
     
    104127}
    105128
     129static void z8530_port_yield(void)
     130{
     131}
     132
     133static void z8530_port_reclaim(void)
     134{
     135}
     136
     137static void z8530_port_write(uint8_t data)
     138{
     139        (void) data;
     140}
     141
    106142static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call)
    107143{
    108144        int scan_code = IPC_GET_ARG2(*call);
    109         kbd_push_scancode(scan_code);
     145        kbd_push_scancode(kbd_dev, scan_code);
    110146       
    111147        if (irc_service)
Note: See TracChangeset for help on using the changeset viewer.