Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/pci.c

    rb375bb8 rfb78ae72  
    3939#include <device/hw_res.h>
    4040
    41 #include <usb/debug.h>
    42 #include <pci_dev_iface.h>
    43 
    4441#include "pci.h"
    4542
     
    5249 * @return Error code.
    5350 */
    54 int pci_get_my_registers(ddf_dev_t *dev,
     51int pci_get_my_registers(device_t *dev,
    5552    uintptr_t *io_reg_address, size_t *io_reg_size,
    5653    int *irq_no)
     
    8683                                irq = res->res.interrupt.irq;
    8784                                irq_found = true;
    88                                 usb_log_debug2("Found interrupt: %d.\n", irq);
    8985                                break;
    9086                        case IO_RANGE:
    91                                 io_address = res->res.io_range.address;
     87                                io_address = (uintptr_t)
     88                                    res->res.io_range.address;
    9289                                io_size = res->res.io_range.size;
    93                                 usb_log_debug2("Found io: %llx %zu.\n",
    94                                     res->res.io_range.address, res->res.io_range.size);
    9590                                io_found = true;
    9691                                break;
     
    110105        }
    111106
    112         *io_reg_address = io_address;
    113         *io_reg_size = io_size;
    114         *irq_no = irq;
     107        if (io_reg_address != NULL) {
     108                *io_reg_address = io_address;
     109        }
     110        if (io_reg_size != NULL) {
     111                *io_reg_size = io_size;
     112        }
     113        if (irq_no != NULL) {
     114                *irq_no = irq;
     115        }
    115116
    116117        rc = EOK;
     
    121122}
    122123/*----------------------------------------------------------------------------*/
    123 int pci_enable_interrupts(ddf_dev_t *device)
     124int pci_enable_interrupts(device_t *device)
    124125{
    125126        int parent_phone = devman_parent_device_connect(device->handle,
    126127            IPC_FLAG_BLOCKING);
    127128        bool enabled = hw_res_enable_interrupt(parent_phone);
    128         async_hangup(parent_phone);
    129129        return enabled ? EOK : EIO;
    130130}
    131 /*----------------------------------------------------------------------------*/
    132 int pci_disable_legacy(ddf_dev_t *device)
    133 {
    134         assert(device);
    135         int parent_phone = devman_parent_device_connect(device->handle,
    136                 IPC_FLAG_BLOCKING);
    137         if (parent_phone < 0) {
    138                 return parent_phone;
    139         }
    140 
    141         /* See UHCI design guide for these values,
    142          * write all WC bits in USB legacy register */
    143         sysarg_t address = 0xc0;
    144         sysarg_t value = 0x8f00;
    145 
    146   int rc = async_req_3_0(parent_phone, DEV_IFACE_ID(PCI_DEV_IFACE),
    147             IPC_M_CONFIG_SPACE_WRITE_16, address, value);
    148         async_hangup(parent_phone);
    149 
    150   return rc;
    151 }
    152 /*----------------------------------------------------------------------------*/
    153131/**
    154132 * @}
Note: See TracChangeset for help on using the changeset viewer.