Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
  1#ifndef _ISP1760_HCD_H_
  2#define _ISP1760_HCD_H_
  3
  4#include <linux/spinlock.h>
  5
  6struct isp1760_qh;
  7struct isp1760_qtd;
  8struct resource;
  9struct usb_hcd;
 10
 11/*
 12 * 60kb divided in:
 13 * - 32 blocks @ 256  bytes
 14 * - 20 blocks @ 1024 bytes
 15 * -  4 blocks @ 8192 bytes
 16 */
 17
 18#define BLOCK_1_NUM 32
 19#define BLOCK_2_NUM 20
 20#define BLOCK_3_NUM 4
 21
 22#define BLOCK_1_SIZE 256
 23#define BLOCK_2_SIZE 1024
 24#define BLOCK_3_SIZE 8192
 25#define BLOCKS (BLOCK_1_NUM + BLOCK_2_NUM + BLOCK_3_NUM)
 26#define MAX_PAYLOAD_SIZE BLOCK_3_SIZE
 27#define PAYLOAD_AREA_SIZE 0xf000
 28
 29struct isp1760_slotinfo {
 30	struct isp1760_qh *qh;
 31	struct isp1760_qtd *qtd;
 32	unsigned long timestamp;
 33};
 34
 35/* chip memory management */
 36struct isp1760_memory_chunk {
 37	unsigned int start;
 38	unsigned int size;
 39	unsigned int free;
 40};
 41
 42enum isp1760_queue_head_types {
 43	QH_CONTROL,
 44	QH_BULK,
 45	QH_INTERRUPT,
 46	QH_END
 47};
 48
 49struct isp1760_hcd {
 50#ifdef CONFIG_USB_ISP1760_HCD
 51	struct usb_hcd		*hcd;
 52
 53	u32 hcs_params;
 54	spinlock_t		lock;
 55	struct isp1760_slotinfo	atl_slots[32];
 56	int			atl_done_map;
 57	struct isp1760_slotinfo	int_slots[32];
 58	int			int_done_map;
 59	struct isp1760_memory_chunk memory_pool[BLOCKS];
 60	struct list_head	qh_list[QH_END];
 61
 62	/* periodic schedule support */
 63#define	DEFAULT_I_TDPS		1024
 64	unsigned		periodic_size;
 65	unsigned		i_thresh;
 66	unsigned long		reset_done;
 67	unsigned long		next_statechange;
 68#endif
 69};
 70
 71#ifdef CONFIG_USB_ISP1760_HCD
 72int isp1760_hcd_register(struct isp1760_hcd *priv, void __iomem *regs,
 73			 struct resource *mem, int irq, unsigned long irqflags,
 74			 struct device *dev);
 75void isp1760_hcd_unregister(struct isp1760_hcd *priv);
 76
 77int isp1760_init_kmem_once(void);
 78void isp1760_deinit_kmem_cache(void);
 79#else
 80static inline int isp1760_hcd_register(struct isp1760_hcd *priv,
 81				       void __iomem *regs, struct resource *mem,
 82				       int irq, unsigned long irqflags,
 83				       struct device *dev)
 84{
 85	return 0;
 86}
 87
 88static inline void isp1760_hcd_unregister(struct isp1760_hcd *priv)
 89{
 90}
 91
 92static inline int isp1760_init_kmem_once(void)
 93{
 94	return 0;
 95}
 96
 97static inline void isp1760_deinit_kmem_cache(void)
 98{
 99}
100#endif
101
102#endif /* _ISP1760_HCD_H_ */