X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=usbhost%2Fusb%2Fc67x00%2Fc67x00-hcd.h;fp=usbhost%2Fusb%2Fc67x00%2Fc67x00-hcd.h;h=0000000000000000000000000000000000000000;hb=be5e0463be71f581804375736a417723dc9f46bb;hp=e8c6d94b251493017cc7d0dbeb3ca48ec0d7acc7;hpb=b9788a4ac72d4b9819a8ce3d8faf0ce3b049185a;p=kernel-power diff --git a/usbhost/usb/c67x00/c67x00-hcd.h b/usbhost/usb/c67x00/c67x00-hcd.h deleted file mode 100644 index e8c6d94..0000000 --- a/usbhost/usb/c67x00/c67x00-hcd.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * c67x00-hcd.h: Cypress C67X00 USB HCD - * - * Copyright (C) 2006-2008 Barco N.V. - * Derived from the Cypress cy7c67200/300 ezusb linux driver and - * based on multiple host controller drivers inside the linux kernel. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA. - */ - -#ifndef _USB_C67X00_HCD_H -#define _USB_C67X00_HCD_H - -#include -#include -#include -#include -#include "../core/hcd.h" -#include "c67x00.h" - -/* - * The following parameters depend on the CPU speed, bus speed, ... - * These can be tuned for specific use cases, e.g. if isochronous transfers - * are very important, bandwith can be sacrificed to guarantee that the - * 1ms deadline will be met. - * If bulk transfers are important, the MAX_FRAME_BW can be increased, - * but some (or many) isochronous deadlines might not be met. - * - * The values are specified in bittime. - */ - -/* - * The current implementation switches between _STD (default) and _ISO (when - * isochronous transfers are scheduled), in order to optimize the throughput - * in normal cicrumstances, but also provide good isochronous behaviour. - * - * Bandwidth is described in bit time so with a 12MHz USB clock and 1ms - * frames; there are 12000 bit times per frame. - */ - -#define TOTAL_FRAME_BW 12000 -#define DEFAULT_EOT 2250 - -#define MAX_FRAME_BW_STD (TOTAL_FRAME_BW - DEFAULT_EOT) -#define MAX_FRAME_BW_ISO 2400 - -/* - * Periodic transfers may only use 90% of the full frame, but as - * we currently don't even use 90% of the full frame, we may - * use the full usable time for periodic transfers. - */ -#define MAX_PERIODIC_BW(full_bw) full_bw - -/* -------------------------------------------------------------------------- */ - -struct c67x00_hcd { - spinlock_t lock; - struct c67x00_sie *sie; - unsigned int low_speed_ports; /* bitmask of low speed ports */ - unsigned int urb_count; - unsigned int urb_iso_count; - - struct list_head list[4]; /* iso, int, ctrl, bulk */ -#if PIPE_BULK != 3 -#error "Sanity check failed, this code presumes PIPE_... to range from 0 to 3" -#endif - - /* USB bandwidth allocated to td_list */ - int bandwidth_allocated; - /* USB bandwidth allocated for isoc/int transfer */ - int periodic_bw_allocated; - struct list_head td_list; - int max_frame_bw; - - u16 td_base_addr; - u16 buf_base_addr; - u16 next_td_addr; - u16 next_buf_addr; - - struct tasklet_struct tasklet; - - struct completion endpoint_disable; - - u16 current_frame; - u16 last_frame; -}; - -static inline struct c67x00_hcd *hcd_to_c67x00_hcd(struct usb_hcd *hcd) -{ - return (struct c67x00_hcd *)(hcd->hcd_priv); -} - -static inline struct usb_hcd *c67x00_hcd_to_hcd(struct c67x00_hcd *c67x00) -{ - return container_of((void *)c67x00, struct usb_hcd, hcd_priv); -} - -/* --------------------------------------------------------------------- - * Functions used by c67x00-drv - */ - -int c67x00_hcd_probe(struct c67x00_sie *sie); -void c67x00_hcd_remove(struct c67x00_sie *sie); - -/* --------------------------------------------------------------------- - * Transfer Descriptor scheduling functions - */ -int c67x00_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags); -int c67x00_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status); -void c67x00_endpoint_disable(struct usb_hcd *hcd, - struct usb_host_endpoint *ep); - -void c67x00_hcd_msg_received(struct c67x00_sie *sie, u16 msg); -void c67x00_sched_kick(struct c67x00_hcd *c67x00); -int c67x00_sched_start_scheduler(struct c67x00_hcd *c67x00); -void c67x00_sched_stop_scheduler(struct c67x00_hcd *c67x00); - -#define c67x00_hcd_dev(x) (c67x00_hcd_to_hcd(x)->self.controller) - -#endif /* _USB_C67X00_HCD_H */