Changeset cf3a905c in mainline for uspace/drv/char/ski-con/ski-con.c


Ignore:
Timestamp:
2018-11-23T18:32:50Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
04c35fca
Parents:
2519349
git-author:
Jiri Svoboda <jiri@…> (2018-11-22 19:31:08)
git-committer:
Jiri Svoboda <jiri@…> (2018-11-23 18:32:50)
Message:

Arbitrate ski console device using an arbitration parea.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/char/ski-con/ski-con.c

    r2519349 rcf3a905c  
    3131 */
    3232
     33#include <as.h>
    3334#include <async.h>
    3435#include <ddf/driver.h>
    3536#include <ddf/log.h>
     37#include <ddi.h>
    3638#include <errno.h>
    3739#include <fibril.h>
     
    6971        ddf_fun_t *fun = NULL;
    7072        bool bound = false;
     73        uintptr_t faddr;
     74        void *addr = AS_AREA_ANY;
    7175        errno_t rc;
    7276
     
    8892        con->cds.sarg = con;
    8993
     94        rc = sysinfo_get_value("ski.paddr", &faddr);
     95        if (rc != EOK)
     96                faddr = 0; /* No kernel driver to arbitrate with */
     97
     98        if (faddr != 0) {
     99                addr = AS_AREA_ANY;
     100                rc = physmem_map(faddr, 1, AS_AREA_READ | AS_AREA_CACHEABLE,
     101                    &addr);
     102                if (rc != EOK) {
     103                        ddf_msg(LVL_ERROR, "Cannot map kernel driver arbitration area.");
     104                        goto error;
     105                }
     106        }
     107
    90108        rc = ddf_fun_bind(fun);
    91109        if (rc != EOK) {
     
    108126        return EOK;
    109127error:
     128        if (addr != AS_AREA_ANY)
     129                as_area_destroy(addr);
    110130        if (bound)
    111131                ddf_fun_unbind(fun);
Note: See TracChangeset for help on using the changeset viewer.