Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/driver.c

    r228e490 r0b5a4131  
    4848#include <ctype.h>
    4949#include <errno.h>
    50 #include <inttypes.h>
    5150
    5251#include <ipc/driver.h>
     
    8180static void driver_irq_handler(ipc_callid_t iid, ipc_call_t *icall)
    8281{
    83         int id = (int)IPC_GET_IMETHOD(*icall);
     82        int id = (int)IPC_GET_METHOD(*icall);
    8483        interrupt_context_t *ctx;
    8584       
     
    165164       
    166165        devman_handle_t dev_handle =  IPC_GET_ARG1(*icall);
    167         devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall);
    168    
    169166        device_t *dev = create_device();
    170167        dev->handle = dev_handle;
     
    174171       
    175172        add_to_devices_list(dev);
    176         dev->parent = driver_get_device(&devices, parent_dev_handle);
    177        
    178173        res = driver->driver_ops->add_device(dev);
    179174        if (0 == res) {
    180                 printf("%s: new device with handle=%" PRIun " was added.\n",
     175                printf("%s: new device with handle = %x was added.\n",
    181176                    driver->name, dev_handle);
    182177        } else {
    183                 printf("%s: failed to add a new device with handle = %" PRIun ".\n",
     178                printf("%s: failed to add a new device with handle = %d.\n",
    184179                    driver->name, dev_handle);
    185180                remove_from_devices_list(dev);
     
    200195                ipc_callid_t callid = async_get_call(&call);
    201196
    202                 switch (IPC_GET_IMETHOD(call)) {
     197                switch (IPC_GET_METHOD(call)) {
    203198                case IPC_M_PHONE_HUNGUP:
    204199                        cont = false;
     
    208203                        break;
    209204                default:
    210                         ipc_answer_0(callid, ENOENT);
     205                        if (!(callid & IPC_CALLID_NOTIFICATION))
     206                                ipc_answer_0(callid, ENOENT);
    211207                }
    212208        }
     
    230226        if (dev == NULL) {
    231227                printf("%s: driver_connection_gen error - no device with handle"
    232                     " %" PRIun " was found.\n", driver->name, handle);
     228                    " %x was found.\n", driver->name, handle);
    233229                ipc_answer_0(iid, ENOENT);
    234230                return;
     
    254250                ipc_call_t call;
    255251                callid = async_get_call(&call);
    256                 sysarg_t method = IPC_GET_IMETHOD(call);
     252                ipcarg_t method = IPC_GET_METHOD(call);
    257253                int iface_idx;
    258254               
     
    294290                                printf("%s: driver_connection_gen error - ",
    295291                                    driver->name);
    296                                 printf("device with handle %" PRIun " has no interface "
     292                                printf("device with handle %d has no interface "
    297293                                    "with id %d.\n", handle, iface_idx);
    298294                                ipc_answer_0(callid, ENOTSUP);
     
    308304
    309305                        /* get the method of the remote interface */
    310                         sysarg_t iface_method_idx = IPC_GET_ARG1(call);
     306                        ipcarg_t iface_method_idx = IPC_GET_ARG1(call);
    311307                        remote_iface_func_ptr_t iface_method_ptr =
    312308                            get_remote_method(rem_iface, iface_method_idx);
     
    346342{
    347343        /* Select interface */
    348         switch ((sysarg_t) (IPC_GET_ARG1(*icall))) {
     344        switch ((ipcarg_t) (IPC_GET_ARG1(*icall))) {
    349345        case DRIVER_DEVMAN:
    350346                /* handle PnP events from device manager */
     
    381377}
    382378
    383 /** Wrapper for child_device_register for devices with single match id.
    384  *
    385  * @param parent Parent device.
    386  * @param child_name Child device name.
    387  * @param child_match_id Child device match id.
    388  * @param child_match_score Child device match score.
    389  * @return Error code.
    390  */
    391 int child_device_register_wrapper(device_t *parent, const char *child_name,
    392     const char *child_match_id, int child_match_score)
    393 {
    394         device_t *child = NULL;
    395         match_id_t *match_id = NULL;
    396         int rc;
    397 
    398         child = create_device();
    399         if (child == NULL) {
    400                 rc = ENOMEM;
    401                 goto failure;
    402         }
    403 
    404         child->name = child_name;
    405 
    406         match_id = create_match_id();
    407         if (match_id == NULL) {
    408                 rc = ENOMEM;
    409                 goto failure;
    410         }
    411 
    412         match_id->id = child_match_id;
    413         match_id->score = child_match_score;
    414         add_match_id(&child->match_ids, match_id);
    415 
    416         rc = child_device_register(child, parent);
    417         if (EOK != rc)
    418                 goto failure;
    419 
    420         return EOK;
    421 
    422 failure:
    423         if (match_id != NULL) {
    424                 match_id->id = NULL;
    425                 delete_match_id(match_id);
    426         }
    427 
    428         if (child != NULL) {
    429                 child->name = NULL;
    430                 delete_device(child);
    431         }
    432 
    433         return rc;
    434 }
    435 
    436379int driver_main(driver_t *drv)
    437380{
Note: See TracChangeset for help on using the changeset viewer.