Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ehci/res.c

    r53a309e re4d7363  
    3939#include <str_error.h>
    4040#include <assert.h>
    41 #include <ddf/driver.h>
     41#include <devman.h>
    4242#include <ddi.h>
    4343#include <usb/debug.h>
     
    172172}
    173173
    174 int disable_legacy(ddf_dev_t *device)
     174int disable_legacy(hc_t *hc, ddf_dev_t *device)
    175175{
    176176        assert(device);
    177177
    178         async_sess_t *parent_sess = ddf_dev_parent_sess_get(device);
    179         if (parent_sess == NULL)
     178        async_sess_t *parent_sess = devman_parent_device_connect(
     179            ddf_dev_get_handle(device), IPC_FLAG_BLOCKING);
     180        if (!parent_sess)
    180181                return ENOMEM;
    181182
    182183        usb_log_debug("Disabling EHCI legacy support.\n");
    183184
    184         hw_res_list_parsed_t res;
    185         hw_res_list_parsed_init(&res);
    186         int ret = hw_res_get_list_parsed(parent_sess, &res, 0);
    187         if (ret != EOK) {
    188                 usb_log_error("Failed to get resource list: %s\n",
    189                     str_error(ret));
    190                 goto clean;
    191         }
    192 
    193         if (res.mem_ranges.count < 1) {
    194                 usb_log_error("Incorrect mem range count: %zu",
    195                     res.mem_ranges.count);
    196                 ret = EINVAL;
    197                 goto clean;
    198         }
    199 
    200         /* Map EHCI registers */
    201         void *regs = NULL;
    202         ret = pio_enable_range(&res.mem_ranges.ranges[0], &regs);
    203         if (ret != EOK) {
    204                 usb_log_error("Failed to map registers %p: %s.\n",
    205                     RNGABSPTR(res.mem_ranges.ranges[0]), str_error(ret));
    206                 goto clean;
    207         }
    208 
    209         usb_log_debug("Registers mapped at: %p.\n", regs);
    210 
    211         ehci_caps_regs_t *ehci_caps = regs;
    212 
    213         const uint32_t hcc_params = EHCI_RD(ehci_caps->hccparams);
     185
     186        const uint32_t hcc_params = EHCI_RD(hc->caps->hccparams);
    214187        usb_log_debug2("Value of hcc params register: %x.\n", hcc_params);
    215188
     
    220193        usb_log_debug2("Value of EECP: %x.\n", eecp);
    221194
    222         ret = disable_extended_caps(parent_sess, eecp);
     195        int ret = disable_extended_caps(parent_sess, eecp);
    223196        if (ret != EOK) {
    224197                usb_log_error("Failed to disable extended capabilities: %s.\n",
     
    227200        }
    228201clean:
    229         //TODO unmap registers
    230         hw_res_list_parsed_clean(&res);
     202        async_hangup(parent_sess);
    231203        return ret;
    232204}
Note: See TracChangeset for help on using the changeset viewer.