Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1600 → Rev 1599

/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 = kmalloc(sizeof(udev_t),0);
udev_t *dev = malloc(sizeof(udev_t));
 
out16(hc->iobase + USBPORTSC1 + (port * 2), 0x0E);
 
222,9 → 222,10
status = in16(hc->iobase + USBPORTSC1 + (port * 2));
dbgprintf("port%d status %x\n", port, status);
 
INIT_LIST_HEAD(&dev->list);
 
link_initialize(&dev->link);
dev->id = 0;
dev->host = hc;
dev->addr = 0;
dev->port = port;
dev->ep0_size = 8;
dev->status = status;
243,7 → 244,7
};
 
if(set_address(dev)) {
list_add_tail(&dev->list, &newdev_list);
list_prepend(&dev->link, &newdev_list);
hc->port_map |= 1<<port;
}
else {
254,7 → 255,7
};
};
};
return true;
return TRUE;
};
 
u16_t __attribute__((aligned(16)))
268,7 → 269,7
*/
 
 
bool set_address(udev_t *dev)
Bool set_address(udev_t *dev)
{
static udev_id = 0;
static udev_addr = 0;
291,7 → 292,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;
302,12 → 303,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,
316,12 → 317,12
td_t *td, *td_prev;
addr_t data_dma;
 
size_t packet_size = enp->size;
size_t size = req_size;
request_t *rq = (request_t*)malloc(sizeof(request_t));
 
request_t *rq = (request_t*)kmalloc(sizeof(request_t),0);
link_initialize(&rq->link);
 
INIT_LIST_HEAD(&rq->list);
rq->td_head = 0;
rq->td_tail = 0;
 
rq->data = (addr_t)data;
rq->size = req_size;
332,13 → 333,8
 
td_prev = NULL;
 
while(size > 0)
while(req_size >= enp->size)
{
if ( size < packet_size)
{
packet_size = size;
};
 
td = alloc_td();
td->link = 1;
 
348,7 → 344,7
if( td_prev )
td_prev->link = td->dma | 4;
td->status = 0x00800000 | dev->speed;
td->token = TOKEN(packet_size,enp->toggle,enp->address,
td->token = TOKEN(enp->size,enp->toggle,enp->address,
dev->addr,dir);
td->buffer = data_dma;
td->bk = td_prev;
355,10 → 351,29
 
td_prev = td;
 
data_dma+= packet_size;
size-= packet_size;
data_dma+= enp->size;
req_size-= enp->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"
372,7 → 387,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;
382,7 → 397,7
td_t *td0, *td, *td_prev;
qh_t *qh;
addr_t data_dma = 0;
bool retval;
Bool retval;
 
td0 = alloc_td();
 
396,13 → 411,8
 
td_prev = td0;
 
while(size > 0)
while(size >= packet_size)
{
if ( size < packet_size)
{
packet_size = size;
};
 
td = alloc_td();
td_prev->link = td->dma | 4;
td->status = 0x00800000 | dev->speed;
416,7 → 426,22
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;
 
455,8 → 480,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
{
469,7 → 494,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};
561,7 → 586,7
break;
case USB_CLASS_HID:
dev->conf = conf;
list_del(&dev->list);
list_remove(&dev->link);
return init_hid(dev);
 
case USB_CLASS_PRINTER: