Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1029 → Rev 1600

/drivers/usb/uhci/hcd.inc
118,7 → 118,7
}
 
 
Bool init_hc(hc_t *hc)
bool init_hc(hc_t *hc)
{
int port;
u32_t ifl;
212,7 → 212,7
status = in16(hc->iobase + USBPORTSC1 + (port * 2));
if(status & 1)
{
udev_t *dev = malloc(sizeof(udev_t));
udev_t *dev = kmalloc(sizeof(udev_t),0);
 
out16(hc->iobase + USBPORTSC1 + (port * 2), 0x0E);
 
222,10 → 222,9
status = in16(hc->iobase + USBPORTSC1 + (port * 2));
dbgprintf("port%d status %x\n", port, status);
 
link_initialize(&dev->link);
dev->id = 0;
INIT_LIST_HEAD(&dev->list);
 
dev->host = hc;
dev->addr = 0;
dev->port = port;
dev->ep0_size = 8;
dev->status = status;
244,7 → 243,7
};
 
if(set_address(dev)) {
list_prepend(&dev->link, &newdev_list);
list_add_tail(&dev->list, &newdev_list);
hc->port_map |= 1<<port;
}
else {
255,7 → 254,7
};
};
};
return TRUE;
return true;
};
 
u16_t __attribute__((aligned(16)))
269,7 → 268,7
*/
 
 
Bool set_address(udev_t *dev)
bool set_address(udev_t *dev)
{
static udev_id = 0;
static udev_addr = 0;
292,7 → 291,7
req_addr[1] = address;
 
if( !ctrl_request(dev, &req_addr, DOUT, NULL, 0))
return FALSE;
return false;
 
dev->addr = address;
dev->id = (++udev_id << 8) | address;
303,12 → 302,12
data[1] = 0;
 
if( !ctrl_request(dev, &req_descr, DIN, data, 8))
return FALSE;
return false;
 
dev_descr_t *descr = (dev_descr_t*)&data;
dev->ep0_size = descr->bMaxPacketSize0;
 
return TRUE;
return true;
}
 
request_t *create_request(udev_t *dev, endp_t *enp, u32_t dir,
317,12 → 316,12
td_t *td, *td_prev;
addr_t data_dma;
 
request_t *rq = (request_t*)malloc(sizeof(request_t));
size_t packet_size = enp->size;
size_t size = req_size;
 
link_initialize(&rq->link);
request_t *rq = (request_t*)kmalloc(sizeof(request_t),0);
 
rq->td_head = 0;
rq->td_tail = 0;
INIT_LIST_HEAD(&rq->list);
 
rq->data = (addr_t)data;
rq->size = req_size;
333,8 → 332,13
 
td_prev = NULL;
 
while(req_size >= enp->size)
while(size > 0)
{
if ( size < packet_size)
{
packet_size = size;
};
 
td = alloc_td();
td->link = 1;
 
344,7 → 348,7
if( td_prev )
td_prev->link = td->dma | 4;
td->status = 0x00800000 | dev->speed;
td->token = TOKEN(enp->size,enp->toggle,enp->address,
td->token = TOKEN(packet_size,enp->toggle,enp->address,
dev->addr,dir);
td->buffer = data_dma;
td->bk = td_prev;
351,29 → 355,10
 
td_prev = td;
 
data_dma+= enp->size;
req_size-= enp->size;
data_dma+= packet_size;
size-= packet_size;
enp->toggle ^= DATA1;
}
if(req_size)
{
td = alloc_td();
td->link = 1;
 
if(rq->td_head == NULL)
rq->td_head = td;
 
if( td_prev )
td_prev->link = td->dma | 4;
 
td->status = 0x00800000 | dev->speed;
td->token = TOKEN( req_size, enp->toggle, enp->address,
dev->addr, dir);
td->buffer = data_dma;
td->bk = td_prev;
 
enp->toggle ^= DATA1;
}
rq->td_tail = td;
/*
dbgprintf("create request %x\n"
387,7 → 372,7
return rq;
}
 
Bool ctrl_request(udev_t *dev, void *req, u32_t pid,
bool ctrl_request(udev_t *dev, void *req, u32_t pid,
void *data, size_t req_size)
{
size_t packet_size = dev->ep0_size;
397,7 → 382,7
td_t *td0, *td, *td_prev;
qh_t *qh;
addr_t data_dma = 0;
Bool retval;
bool retval;
 
td0 = alloc_td();
 
411,8 → 396,13
 
td_prev = td0;
 
while(size >= packet_size)
while(size > 0)
{
if ( size < packet_size)
{
packet_size = size;
};
 
td = alloc_td();
td_prev->link = td->dma | 4;
td->status = 0x00800000 | dev->speed;
426,22 → 416,7
size-= packet_size;
toggle ^= DATA1;
}
if(size)
{
td = alloc_td();
td_prev->link = td->dma | 4;
td->status = 0x00800000 | dev->speed;
td->token = ((size-1)<<21)|toggle|(dev->addr<<8)|pid;
td->buffer = data_dma;
td->bk = td_prev;
 
td_prev = td;
 
data_dma+= packet_size;
size-= packet_size;
toggle ^= DATA1;
}
 
td = alloc_td();
td_prev->link = td->dma | 4;
 
480,8 → 455,8
dbgprintf("td status %x\n",td->status);
dbgprintf("qh %x \n", qh->qelem);
 
retval = FALSE;
} else retval = TRUE;
retval = false;
} else retval = true;
 
do
{
494,7 → 469,7
};
 
 
Bool init_device(udev_t *dev)
bool init_device(udev_t *dev)
{
static u16_t __attribute__((aligned(16)))
req_descr[4] = {0x0680,0x0100,0x0000,18};
586,7 → 561,7
break;
case USB_CLASS_HID:
dev->conf = conf;
list_remove(&dev->link);
list_del(&dev->list);
return init_hid(dev);
 
case USB_CLASS_PRINTER: