Ignore:
File:
1 edited

Legend:

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

    r7aa94304 rd5c1051  
    3737 */
    3838
     39#include <adt/fifo.h>
    3940#include <adt/list.h>
    40 #include <stdbool.h>
     41#include <async.h>
     42#include <config.h>
     43#include <errno.h>
     44#include <fibril.h>
    4145#include <fibril_synch.h>
     46#include <io/chardev.h>
     47#include <io/console.h>
     48#include <io/keycode.h>
    4249#include <ipc/services.h>
    4350#include <ipc/input.h>
    44 #include <config.h>
     51#include <loc.h>
     52#include <ns.h>
     53#include <stdbool.h>
    4554#include <stdio.h>
    4655#include <stdlib.h>
    47 #include <ns.h>
    48 #include <async.h>
    49 #include <errno.h>
    50 #include <adt/fifo.h>
    51 #include <io/console.h>
    52 #include <io/keycode.h>
    53 #include <loc.h>
    5456#include <str_error.h>
    55 #include <char_dev_iface.h>
    56 #include <fibril.h>
    57 #include "layout.h"
     57
     58#include "input.h"
    5859#include "kbd.h"
    5960#include "kbd_port.h"
    6061#include "kbd_ctl.h"
     62#include "layout.h"
    6163#include "mouse.h"
    6264#include "mouse_proto.h"
    6365#include "serial.h"
    64 #include "input.h"
    6566
    6667#define NUM_LAYOUTS  4
     
    364365}
    365366
    366 static void kconsole_event_handler(ipc_callid_t callid, ipc_call_t *call,
    367     void *arg)
     367static void kconsole_event_handler(ipc_call_t *call, void *arg)
    368368{
    369369        if (IPC_GET_ARG1(*call)) {
     
    458458}
    459459
    460 /** Add new legacy mouse device. */
    461 static void mouse_add_dev(mouse_port_ops_t *port, mouse_proto_ops_t *proto)
    462 {
    463         mouse_dev_t *mdev = mouse_dev_new();
    464         if (mdev == NULL)
    465                 return;
    466        
    467         mdev->port_ops = port;
    468         mdev->proto_ops = proto;
    469         mdev->svc_id = 0;
    470        
    471         /* Initialize port driver. */
    472         if ((*mdev->port_ops->init)(mdev) != 0)
    473                 goto fail;
    474        
    475         /* Initialize protocol driver. */
    476         if ((*mdev->proto_ops->init)(mdev) != 0) {
    477                 /* XXX Uninit port */
    478                 goto fail;
    479         }
    480        
    481         list_append(&mdev->link, &mouse_devs);
    482         return;
    483        
    484 fail:
    485         free(mdev);
    486 }
    487 
    488460/** Add new kbdev device.
    489461 *
     
    514486        list_append(&kdev->link, &kbd_devs);
    515487        *kdevp = kdev;
    516         return EOK;
     488        return 0;
    517489       
    518490fail:
     
    551523        list_append(&mdev->link, &mouse_devs);
    552524        *mdevp = mdev;
    553         return EOK;
     525        return 0;
    554526       
    555527fail:
     
    564536        while (true) {
    565537                uint8_t data;
    566 
    567                 char_dev_read(sdev->sess, &data, sizeof(data));
     538                size_t nread;
     539
     540                chardev_read(sdev->chardev, &data, sizeof(data), &nread);
     541                /* XXX Handle error */
    568542                kbd_push_data(sdev->kdev, data);
    569543        }
     
    580554{
    581555        bool match = false;
     556        int rc;
    582557
    583558        serial_dev_t *sdev = serial_dev_new();
     
    587562        sdev->kdev->svc_id = service_id;
    588563       
    589         int rc = loc_service_get_name(service_id, &sdev->kdev->svc_name);
     564        rc = loc_service_get_name(service_id, &sdev->kdev->svc_name);
    590565        if (rc != EOK)
    591566                goto fail;
     
    611586                    IPC_FLAG_BLOCKING);
    612587
     588                rc = chardev_open(sdev->sess, &sdev->chardev);
     589                if (rc != EOK) {
     590                        async_hangup(sdev->sess);
     591                        sdev->sess = NULL;
     592                        list_remove(&sdev->link);
     593                        goto fail;
     594                }
     595
    613596                fid_t fid = fibril_create(serial_consumer, sdev);
    614597                fibril_add_ready(fid);
     
    616599       
    617600        *sdevp = sdev;
    618         return EOK;
     601        return 0;
    619602       
    620603fail:
     
    643626        kbd_add_dev(&chardev_port, &stty_ctl);
    644627#endif
    645 #if defined(UARCH_ppc32)
    646         kbd_add_dev(&adb_port, &apple_ctl);
    647 #endif
    648628#if defined(UARCH_sparc64) && defined(PROCESSOR_sun4v)
    649629        kbd_add_dev(&chardev_port, &stty_ctl);
     
    651631        /* Silence warning on abs32le about kbd_add_dev() being unused */
    652632        (void) kbd_add_dev;
    653 }
    654 
    655 /** Add legacy drivers/devices. */
    656 static void mouse_add_legacy_devs(void)
    657 {
    658         /*
    659          * Need to add these drivers based on config unless we can probe
    660          * them automatically.
    661          */
    662 #if defined(UARCH_ppc32)
    663         mouse_add_dev(&adb_mouse_port, &adb_proto);
    664 #endif
    665         /* Silence warning on abs32le about mouse_add_dev() being unused */
    666         (void) mouse_add_dev;
    667633}
    668634
     
    704670                if (!already_known) {
    705671                        kbd_dev_t *kdev;
    706                         if (kbd_add_kbdev(svcs[i], &kdev) == EOK) {
     672                        if (kbd_add_kbdev(svcs[i], &kdev) == 0) {
    707673                                printf("%s: Connected keyboard device '%s'\n",
    708674                                    NAME, kdev->svc_name);
     
    755721                if (!already_known) {
    756722                        mouse_dev_t *mdev;
    757                         if (mouse_add_mousedev(svcs[i], &mdev) == EOK) {
     723                        if (mouse_add_mousedev(svcs[i], &mdev) == 0) {
    758724                                printf("%s: Connected mouse device '%s'\n",
    759725                                    NAME, mdev->svc_name);
     
    806772                if (!already_known) {
    807773                        serial_dev_t *sdev;
    808                         if (serial_add_srldev(svcs[i], &sdev) == EOK) {
     774                        if (serial_add_srldev(svcs[i], &sdev) == 0) {
    809775                                printf("%s: Connected serial device '%s'\n",
    810776                                    NAME, sdev->kdev->svc_name);
     
    861827        int rc = loc_register_cat_change_cb(cat_change_cb);
    862828        if (rc != EOK) {
    863                 printf("%s: Failed registering callback for device discovery. "
    864                     "(%d)\n", NAME, rc);
     829                printf("%s: Failed registering callback for device discovery: "
     830                    "%s\n", NAME, str_error(rc));
    865831                return rc;
    866832        }
     
    894860        /* Add legacy keyboard devices. */
    895861        kbd_add_legacy_devs();
    896        
    897         /* Add legacy mouse devices. */
    898         mouse_add_legacy_devs();
    899862       
    900863        /* Register driver */
Note: See TracChangeset for help on using the changeset viewer.