root/drivers/usb/isp1760/isp1760-hcd.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. isp1760_hcd_register
  2. isp1760_hcd_unregister
  3. isp1760_init_kmem_once
  4. isp1760_deinit_kmem_cache

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

/* [<][>][^][v][top][bottom][index][help] */