2  * amd5536.h -- header for AMD 5536 UDC high/full speed USB device controller
 
   4  * Copyright (C) 2007 AMD (http://www.amd.com)
 
   5  * Author: Thomas Dahlmann
 
   7  * This program is free software; you can redistribute it and/or modify
 
   8  * it under the terms of the GNU General Public License as published by
 
   9  * the Free Software Foundation; either version 2 of the License, or
 
  10  * (at your option) any later version.
 
  12  * This program is distributed in the hope that it will be useful,
 
  13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  15  * GNU General Public License for more details.
 
  17  * You should have received a copy of the GNU General Public License
 
  18  * along with this program; if not, write to the Free Software
 
  19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
  25 /* various constants */
 
  26 #define UDC_RDE_TIMER_SECONDS           1
 
  27 #define UDC_RDE_TIMER_DIV               10
 
  28 #define UDC_POLLSTALL_TIMER_USECONDS    500
 
  30 /* Hs AMD5536 chip rev. */
 
  31 #define UDC_HSA0_REV 1
 
  32 #define UDC_HSB1_REV 2
 
  36  * needed, because some SETUP's are handled in hw, but must be passed to
 
  40 #define UDC_SETCONFIG_DWORD0                    0x00000900
 
  41 #define UDC_SETCONFIG_DWORD0_VALUE_MASK         0xffff0000
 
  42 #define UDC_SETCONFIG_DWORD0_VALUE_OFS          16
 
  44 #define UDC_SETCONFIG_DWORD1                    0x00000000
 
  47 #define UDC_SETINTF_DWORD0                      0x00000b00
 
  48 #define UDC_SETINTF_DWORD0_ALT_MASK             0xffff0000
 
  49 #define UDC_SETINTF_DWORD0_ALT_OFS              16
 
  51 #define UDC_SETINTF_DWORD1                      0x00000000
 
  52 #define UDC_SETINTF_DWORD1_INTF_MASK            0x0000ffff
 
  53 #define UDC_SETINTF_DWORD1_INTF_OFS             0
 
  55 /* Mass storage reset */
 
  56 #define UDC_MSCRES_DWORD0                       0x0000ff21
 
  57 #define UDC_MSCRES_DWORD1                       0x00000000
 
  59 /* Global CSR's -------------------------------------------------------------*/
 
  60 #define UDC_CSR_ADDR                            0x500
 
  64 #define UDC_CSR_NE_NUM_MASK                     0x0000000f
 
  65 #define UDC_CSR_NE_NUM_OFS                      0
 
  67 #define UDC_CSR_NE_DIR_MASK                     0x00000010
 
  68 #define UDC_CSR_NE_DIR_OFS                      4
 
  70 #define UDC_CSR_NE_TYPE_MASK                    0x00000060
 
  71 #define UDC_CSR_NE_TYPE_OFS                     5
 
  72 /* EP config number */
 
  73 #define UDC_CSR_NE_CFG_MASK                     0x00000780
 
  74 #define UDC_CSR_NE_CFG_OFS                      7
 
  75 /* EP interface number */
 
  76 #define UDC_CSR_NE_INTF_MASK                    0x00007800
 
  77 #define UDC_CSR_NE_INTF_OFS                     11
 
  79 #define UDC_CSR_NE_ALT_MASK                     0x00078000
 
  80 #define UDC_CSR_NE_ALT_OFS                      15
 
  83 #define UDC_CSR_NE_MAX_PKT_MASK                 0x3ff80000
 
  84 #define UDC_CSR_NE_MAX_PKT_OFS                  19
 
  86 /* Device Config Register ---------------------------------------------------*/
 
  87 #define UDC_DEVCFG_ADDR                         0x400
 
  89 #define UDC_DEVCFG_SOFTRESET                    31
 
  90 #define UDC_DEVCFG_HNPSFEN                      30
 
  91 #define UDC_DEVCFG_DMARST                       29
 
  92 #define UDC_DEVCFG_SET_DESC                     18
 
  93 #define UDC_DEVCFG_CSR_PRG                      17
 
  94 #define UDC_DEVCFG_STATUS                       7
 
  95 #define UDC_DEVCFG_DIR                          6
 
  96 #define UDC_DEVCFG_PI                           5
 
  97 #define UDC_DEVCFG_SS                           4
 
  98 #define UDC_DEVCFG_SP                           3
 
  99 #define UDC_DEVCFG_RWKP                         2
 
 101 #define UDC_DEVCFG_SPD_MASK                     0x3
 
 102 #define UDC_DEVCFG_SPD_OFS                      0
 
 103 #define UDC_DEVCFG_SPD_HS                       0x0
 
 104 #define UDC_DEVCFG_SPD_FS                       0x1
 
 105 #define UDC_DEVCFG_SPD_LS                       0x2
 
 106 /*#define UDC_DEVCFG_SPD_FS                     0x3*/
 
 109 /* Device Control Register --------------------------------------------------*/
 
 110 #define UDC_DEVCTL_ADDR                         0x404
 
 112 #define UDC_DEVCTL_THLEN_MASK                   0xff000000
 
 113 #define UDC_DEVCTL_THLEN_OFS                    24
 
 115 #define UDC_DEVCTL_BRLEN_MASK                   0x00ff0000
 
 116 #define UDC_DEVCTL_BRLEN_OFS                    16
 
 118 #define UDC_DEVCTL_CSR_DONE                     13
 
 119 #define UDC_DEVCTL_DEVNAK                       12
 
 120 #define UDC_DEVCTL_SD                           10
 
 121 #define UDC_DEVCTL_MODE                         9
 
 122 #define UDC_DEVCTL_BREN                         8
 
 123 #define UDC_DEVCTL_THE                          7
 
 124 #define UDC_DEVCTL_BF                           6
 
 125 #define UDC_DEVCTL_BE                           5
 
 126 #define UDC_DEVCTL_DU                           4
 
 127 #define UDC_DEVCTL_TDE                          3
 
 128 #define UDC_DEVCTL_RDE                          2
 
 129 #define UDC_DEVCTL_RES                          0
 
 132 /* Device Status Register ---------------------------------------------------*/
 
 133 #define UDC_DEVSTS_ADDR                         0x408
 
 135 #define UDC_DEVSTS_TS_MASK                      0xfffc0000
 
 136 #define UDC_DEVSTS_TS_OFS                       18
 
 138 #define UDC_DEVSTS_SESSVLD                      17
 
 139 #define UDC_DEVSTS_PHY_ERROR                    16
 
 140 #define UDC_DEVSTS_RXFIFO_EMPTY                 15
 
 142 #define UDC_DEVSTS_ENUM_SPEED_MASK              0x00006000
 
 143 #define UDC_DEVSTS_ENUM_SPEED_OFS               13
 
 144 #define UDC_DEVSTS_ENUM_SPEED_FULL              1
 
 145 #define UDC_DEVSTS_ENUM_SPEED_HIGH              0
 
 147 #define UDC_DEVSTS_SUSP                         12
 
 149 #define UDC_DEVSTS_ALT_MASK                     0x00000f00
 
 150 #define UDC_DEVSTS_ALT_OFS                      8
 
 152 #define UDC_DEVSTS_INTF_MASK                    0x000000f0
 
 153 #define UDC_DEVSTS_INTF_OFS                     4
 
 155 #define UDC_DEVSTS_CFG_MASK                     0x0000000f
 
 156 #define UDC_DEVSTS_CFG_OFS                      0
 
 159 /* Device Interrupt Register ------------------------------------------------*/
 
 160 #define UDC_DEVINT_ADDR                         0x40c
 
 162 #define UDC_DEVINT_SVC                          7
 
 163 #define UDC_DEVINT_ENUM                         6
 
 164 #define UDC_DEVINT_SOF                          5
 
 165 #define UDC_DEVINT_US                           4
 
 166 #define UDC_DEVINT_UR                           3
 
 167 #define UDC_DEVINT_ES                           2
 
 168 #define UDC_DEVINT_SI                           1
 
 169 #define UDC_DEVINT_SC                           0
 
 171 /* Device Interrupt Mask Register -------------------------------------------*/
 
 172 #define UDC_DEVINT_MSK_ADDR                     0x410
 
 174 #define UDC_DEVINT_MSK                          0x7f
 
 176 /* Endpoint Interrupt Register ----------------------------------------------*/
 
 177 #define UDC_EPINT_ADDR                          0x414
 
 179 #define UDC_EPINT_OUT_MASK                      0xffff0000
 
 180 #define UDC_EPINT_OUT_OFS                       16
 
 181 #define UDC_EPINT_IN_MASK                       0x0000ffff
 
 182 #define UDC_EPINT_IN_OFS                        0
 
 184 #define UDC_EPINT_IN_EP0                        0
 
 185 #define UDC_EPINT_IN_EP1                        1
 
 186 #define UDC_EPINT_IN_EP2                        2
 
 187 #define UDC_EPINT_IN_EP3                        3
 
 188 #define UDC_EPINT_OUT_EP0                       16
 
 189 #define UDC_EPINT_OUT_EP1                       17
 
 190 #define UDC_EPINT_OUT_EP2                       18
 
 191 #define UDC_EPINT_OUT_EP3                       19
 
 193 #define UDC_EPINT_EP0_ENABLE_MSK                0x001e001e
 
 195 /* Endpoint Interrupt Mask Register -----------------------------------------*/
 
 196 #define UDC_EPINT_MSK_ADDR                      0x418
 
 198 #define UDC_EPINT_OUT_MSK_MASK                  0xffff0000
 
 199 #define UDC_EPINT_OUT_MSK_OFS                   16
 
 200 #define UDC_EPINT_IN_MSK_MASK                   0x0000ffff
 
 201 #define UDC_EPINT_IN_MSK_OFS                    0
 
 203 #define UDC_EPINT_MSK_DISABLE_ALL               0xffffffff
 
 204 /* mask non-EP0 endpoints */
 
 205 #define UDC_EPDATAINT_MSK_DISABLE               0xfffefffe
 
 206 /* mask all dev interrupts */
 
 207 #define UDC_DEV_MSK_DISABLE                     0x7f
 
 209 /* Endpoint-specific CSR's --------------------------------------------------*/
 
 210 #define UDC_EPREGS_ADDR                         0x0
 
 211 #define UDC_EPIN_REGS_ADDR                      0x0
 
 212 #define UDC_EPOUT_REGS_ADDR                     0x200
 
 214 #define UDC_EPCTL_ADDR                          0x0
 
 216 #define UDC_EPCTL_RRDY                          9
 
 217 #define UDC_EPCTL_CNAK                          8
 
 218 #define UDC_EPCTL_SNAK                          7
 
 219 #define UDC_EPCTL_NAK                           6
 
 221 #define UDC_EPCTL_ET_MASK                       0x00000030
 
 222 #define UDC_EPCTL_ET_OFS                        4
 
 223 #define UDC_EPCTL_ET_CONTROL                    0
 
 224 #define UDC_EPCTL_ET_ISO                        1
 
 225 #define UDC_EPCTL_ET_BULK                       2
 
 226 #define UDC_EPCTL_ET_INTERRUPT                  3
 
 228 #define UDC_EPCTL_P                             3
 
 229 #define UDC_EPCTL_SN                            2
 
 230 #define UDC_EPCTL_F                             1
 
 231 #define UDC_EPCTL_S                             0
 
 233 /* Endpoint Status Registers ------------------------------------------------*/
 
 234 #define UDC_EPSTS_ADDR                          0x4
 
 236 #define UDC_EPSTS_RX_PKT_SIZE_MASK              0x007ff800
 
 237 #define UDC_EPSTS_RX_PKT_SIZE_OFS               11
 
 239 #define UDC_EPSTS_TDC                           10
 
 240 #define UDC_EPSTS_HE                            9
 
 241 #define UDC_EPSTS_BNA                           7
 
 242 #define UDC_EPSTS_IN                            6
 
 244 #define UDC_EPSTS_OUT_MASK                      0x00000030
 
 245 #define UDC_EPSTS_OUT_OFS                       4
 
 246 #define UDC_EPSTS_OUT_DATA                      1
 
 247 #define UDC_EPSTS_OUT_DATA_CLEAR                0x10
 
 248 #define UDC_EPSTS_OUT_SETUP                     2
 
 249 #define UDC_EPSTS_OUT_SETUP_CLEAR               0x20
 
 250 #define UDC_EPSTS_OUT_CLEAR                     0x30
 
 252 /* Endpoint Buffer Size IN/ Receive Packet Frame Number OUT Registers ------*/
 
 253 #define UDC_EPIN_BUFF_SIZE_ADDR                 0x8
 
 254 #define UDC_EPOUT_FRAME_NUMBER_ADDR             0x8
 
 256 #define UDC_EPIN_BUFF_SIZE_MASK                 0x0000ffff
 
 257 #define UDC_EPIN_BUFF_SIZE_OFS                  0
 
 258 /* EP0in txfifo = 128 bytes*/
 
 259 #define UDC_EPIN0_BUFF_SIZE                     32
 
 260 /* EP0in fullspeed txfifo = 128 bytes*/
 
 261 #define UDC_FS_EPIN0_BUFF_SIZE                  32
 
 263 /* fifo size mult = fifo size / max packet */
 
 264 #define UDC_EPIN_BUFF_SIZE_MULT                 2
 
 266 /* EPin data fifo size = 1024 bytes DOUBLE BUFFERING */
 
 267 #define UDC_EPIN_BUFF_SIZE                      256
 
 268 /* EPin small INT data fifo size = 128 bytes */
 
 269 #define UDC_EPIN_SMALLINT_BUFF_SIZE             32
 
 271 /* EPin fullspeed data fifo size = 128 bytes DOUBLE BUFFERING */
 
 272 #define UDC_FS_EPIN_BUFF_SIZE                   32
 
 274 #define UDC_EPOUT_FRAME_NUMBER_MASK             0x0000ffff
 
 275 #define UDC_EPOUT_FRAME_NUMBER_OFS              0
 
 277 /* Endpoint Buffer Size OUT/Max Packet Size Registers -----------------------*/
 
 278 #define UDC_EPOUT_BUFF_SIZE_ADDR                0x0c
 
 279 #define UDC_EP_MAX_PKT_SIZE_ADDR                0x0c
 
 281 #define UDC_EPOUT_BUFF_SIZE_MASK                0xffff0000
 
 282 #define UDC_EPOUT_BUFF_SIZE_OFS                 16
 
 283 #define UDC_EP_MAX_PKT_SIZE_MASK                0x0000ffff
 
 284 #define UDC_EP_MAX_PKT_SIZE_OFS                 0
 
 285 /* EP0in max packet size = 64 bytes */
 
 286 #define UDC_EP0IN_MAX_PKT_SIZE                  64
 
 287 /* EP0out max packet size = 64 bytes */
 
 288 #define UDC_EP0OUT_MAX_PKT_SIZE                 64
 
 289 /* EP0in fullspeed max packet size = 64 bytes */
 
 290 #define UDC_FS_EP0IN_MAX_PKT_SIZE               64
 
 291 /* EP0out fullspeed max packet size = 64 bytes */
 
 292 #define UDC_FS_EP0OUT_MAX_PKT_SIZE              64
 
 295  * Endpoint dma descriptors ------------------------------------------------
 
 297  * Setup data, Status dword
 
 299 #define UDC_DMA_STP_STS_CFG_MASK                0x0fff0000
 
 300 #define UDC_DMA_STP_STS_CFG_OFS                 16
 
 301 #define UDC_DMA_STP_STS_CFG_ALT_MASK            0x000f0000
 
 302 #define UDC_DMA_STP_STS_CFG_ALT_OFS             16
 
 303 #define UDC_DMA_STP_STS_CFG_INTF_MASK           0x00f00000
 
 304 #define UDC_DMA_STP_STS_CFG_INTF_OFS            20
 
 305 #define UDC_DMA_STP_STS_CFG_NUM_MASK            0x0f000000
 
 306 #define UDC_DMA_STP_STS_CFG_NUM_OFS             24
 
 307 #define UDC_DMA_STP_STS_RX_MASK                 0x30000000
 
 308 #define UDC_DMA_STP_STS_RX_OFS                  28
 
 309 #define UDC_DMA_STP_STS_BS_MASK                 0xc0000000
 
 310 #define UDC_DMA_STP_STS_BS_OFS                  30
 
 311 #define UDC_DMA_STP_STS_BS_HOST_READY           0
 
 312 #define UDC_DMA_STP_STS_BS_DMA_BUSY             1
 
 313 #define UDC_DMA_STP_STS_BS_DMA_DONE             2
 
 314 #define UDC_DMA_STP_STS_BS_HOST_BUSY            3
 
 315 /* IN data, Status dword */
 
 316 #define UDC_DMA_IN_STS_TXBYTES_MASK             0x0000ffff
 
 317 #define UDC_DMA_IN_STS_TXBYTES_OFS              0
 
 318 #define UDC_DMA_IN_STS_FRAMENUM_MASK            0x07ff0000
 
 319 #define UDC_DMA_IN_STS_FRAMENUM_OFS             0
 
 320 #define UDC_DMA_IN_STS_L                        27
 
 321 #define UDC_DMA_IN_STS_TX_MASK                  0x30000000
 
 322 #define UDC_DMA_IN_STS_TX_OFS                   28
 
 323 #define UDC_DMA_IN_STS_BS_MASK                  0xc0000000
 
 324 #define UDC_DMA_IN_STS_BS_OFS                   30
 
 325 #define UDC_DMA_IN_STS_BS_HOST_READY            0
 
 326 #define UDC_DMA_IN_STS_BS_DMA_BUSY              1
 
 327 #define UDC_DMA_IN_STS_BS_DMA_DONE              2
 
 328 #define UDC_DMA_IN_STS_BS_HOST_BUSY             3
 
 329 /* OUT data, Status dword */
 
 330 #define UDC_DMA_OUT_STS_RXBYTES_MASK            0x0000ffff
 
 331 #define UDC_DMA_OUT_STS_RXBYTES_OFS             0
 
 332 #define UDC_DMA_OUT_STS_FRAMENUM_MASK           0x07ff0000
 
 333 #define UDC_DMA_OUT_STS_FRAMENUM_OFS            0
 
 334 #define UDC_DMA_OUT_STS_L                       27
 
 335 #define UDC_DMA_OUT_STS_RX_MASK                 0x30000000
 
 336 #define UDC_DMA_OUT_STS_RX_OFS                  28
 
 337 #define UDC_DMA_OUT_STS_BS_MASK                 0xc0000000
 
 338 #define UDC_DMA_OUT_STS_BS_OFS                  30
 
 339 #define UDC_DMA_OUT_STS_BS_HOST_READY           0
 
 340 #define UDC_DMA_OUT_STS_BS_DMA_BUSY             1
 
 341 #define UDC_DMA_OUT_STS_BS_DMA_DONE             2
 
 342 #define UDC_DMA_OUT_STS_BS_HOST_BUSY            3
 
 343 /* max ep0in packet */
 
 344 #define UDC_EP0IN_MAXPACKET                     1000
 
 346 #define UDC_DMA_MAXPACKET                       65536
 
 348 /* un-usable DMA address */
 
 349 #define DMA_DONT_USE                            (~(dma_addr_t) 0 )
 
 351 /* other Endpoint register addresses and values-----------------------------*/
 
 352 #define UDC_EP_SUBPTR_ADDR                      0x10
 
 353 #define UDC_EP_DESPTR_ADDR                      0x14
 
 354 #define UDC_EP_WRITE_CONFIRM_ADDR               0x1c
 
 356 /* EP number as layouted in AHB space */
 
 357 #define UDC_EP_NUM                              32
 
 358 #define UDC_EPIN_NUM                            16
 
 359 #define UDC_EPIN_NUM_USED                       5
 
 360 #define UDC_EPOUT_NUM                           16
 
 361 /* EP number of EP's really used = EP0 + 8 data EP's */
 
 362 #define UDC_USED_EP_NUM                         9
 
 363 /* UDC CSR regs are aligned but AHB regs not - offset for OUT EP's */
 
 364 #define UDC_CSR_EP_OUT_IX_OFS                   12
 
 366 #define UDC_EP0OUT_IX                           16
 
 367 #define UDC_EP0IN_IX                            0
 
 369 /* Rx fifo address and size = 1k -------------------------------------------*/
 
 370 #define UDC_RXFIFO_ADDR                         0x800
 
 371 #define UDC_RXFIFO_SIZE                         0x400
 
 373 /* Tx fifo address and size = 1.5k -----------------------------------------*/
 
 374 #define UDC_TXFIFO_ADDR                         0xc00
 
 375 #define UDC_TXFIFO_SIZE                         0x600
 
 377 /* default data endpoints --------------------------------------------------*/
 
 378 #define UDC_EPIN_STATUS_IX                      1
 
 379 #define UDC_EPIN_IX                             2
 
 380 #define UDC_EPOUT_IX                            18
 
 382 /* general constants -------------------------------------------------------*/
 
 383 #define UDC_DWORD_BYTES                         4
 
 384 #define UDC_BITS_PER_BYTE_SHIFT                 3
 
 385 #define UDC_BYTE_MASK                           0xff
 
 386 #define UDC_BITS_PER_BYTE                       8
 
 388 /*---------------------------------------------------------------------------*/
 
 392         /* sca - setup command address */
 
 396         u32 ne[UDC_USED_EP_NUM];
 
 397 } __attribute__ ((packed));
 
 399 /* AHB subsystem CSR registers */
 
 402         /* device configuration */
 
 411         /* device interrupt */
 
 414         /* device interrupt mask */
 
 417         /* endpoint interrupt */
 
 420         /* endpoint interrupt mask */
 
 422 } __attribute__ ((packed));
 
 424 /* endpoint specific registers */
 
 427         /* endpoint control */
 
 430         /* endpoint status */
 
 433         /* endpoint buffer size in/ receive packet frame number out */
 
 436         /* endpoint buffer size out/max packet size */
 
 439         /* endpoint setup buffer pointer */
 
 442         /* endpoint data descriptor pointer */
 
 448         /* write/read confirmation */
 
 451 } __attribute__ ((packed));
 
 453 /* control data DMA desc */
 
 459         /* first setup word */
 
 461         /* second setup word */
 
 463 } __attribute__ ((aligned (16)));
 
 465 /* normal data DMA desc */
 
 466 struct udc_data_dma {
 
 473         /* next descriptor pointer */
 
 475 } __attribute__ ((aligned (16)));
 
 479         /* embedded gadget ep */
 
 480         struct usb_request              req;
 
 483         unsigned                        dma_going : 1,
 
 488         /* first dma desc. of chain */
 
 489         struct udc_data_dma             *td_data;
 
 490         /* last dma desc. of chain */
 
 491         struct udc_data_dma             *td_data_last;
 
 492         struct list_head                queue;
 
 499 /* UDC specific endpoint parameters */
 
 502         struct udc_ep_regs __iomem      *regs;
 
 506         dma_addr_t                      td_stp_dma;
 
 507         struct udc_stp_dma              *td_stp;
 
 508         struct udc_data_dma             *td;
 
 510         struct udc_request              *req;
 
 512         unsigned                        req_completed;
 
 513         /* dummy DMA desc for BNA dummy */
 
 514         struct udc_request              *bna_dummy_req;
 
 515         unsigned                        bna_occurred;
 
 522         /* queue for requests */
 
 523         struct list_head                queue;
 
 524         const struct usb_endpoint_descriptor    *desc;
 
 526         unsigned                        cancel_transfer;
 
 534         struct usb_gadget               gadget;
 
 535         spinlock_t                      lock;   /* protects all state */
 
 537         struct udc_ep                   ep[UDC_EP_NUM];
 
 538         struct usb_gadget_driver        *driver;
 
 539         /* operational flags */
 
 542                                         waiting_zlp_ack_ep0in : 1,
 
 543                                         set_cfg_not_acked : 1,
 
 554         struct pci_dev                  *pdev;
 
 555         struct udc_csrs __iomem         *csr;
 
 556         struct udc_regs __iomem         *regs;
 
 557         struct udc_ep_regs __iomem      *ep_regs;
 
 562         struct pci_pool                 *data_requests;
 
 563         struct pci_pool                 *stp_requests;
 
 566         unsigned long                   phys_addr;
 
 567         void __iomem                    *virt_addr;
 
 576 /* setup request data */
 
 577 union udc_setup_data {
 
 579         struct usb_ctrlrequest  request;
 
 583  *---------------------------------------------------------------------------
 
 584  * SET and GET bitfields in u32 values
 
 585  * via constants for mask/offset:
 
 586  * <bit_field_stub_name> is the text between
 
 587  * UDC_ and _MASK|_OFS of appropiate
 
 590  * set bitfield value in u32 u32Val
 
 592 #define AMD_ADDBITS(u32Val, bitfield_val, bitfield_stub_name)           \
 
 593         (((u32Val) & (((u32) ~((u32) bitfield_stub_name##_MASK))))      \
 
 594         | (((bitfield_val) << ((u32) bitfield_stub_name##_OFS))         \
 
 595                 & ((u32) bitfield_stub_name##_MASK)))
 
 598  * set bitfield value in zero-initialized u32 u32Val
 
 599  * => bitfield bits in u32Val are all zero
 
 601 #define AMD_INIT_SETBITS(u32Val, bitfield_val, bitfield_stub_name)      \
 
 603         | (((bitfield_val) << ((u32) bitfield_stub_name##_OFS))         \
 
 604                 & ((u32) bitfield_stub_name##_MASK)))
 
 606 /* get bitfield value from u32 u32Val */
 
 607 #define AMD_GETBITS(u32Val, bitfield_stub_name)                         \
 
 608         ((u32Val & ((u32) bitfield_stub_name##_MASK))                   \
 
 609                 >> ((u32) bitfield_stub_name##_OFS))
 
 611 /* SET and GET bits in u32 values ------------------------------------------*/
 
 612 #define AMD_BIT(bit_stub_name) (1 << bit_stub_name)
 
 613 #define AMD_UNMASK_BIT(bit_stub_name) (~AMD_BIT(bit_stub_name))
 
 614 #define AMD_CLEAR_BIT(bit_stub_name) (~AMD_BIT(bit_stub_name))
 
 616 /* debug macros ------------------------------------------------------------*/
 
 618 #define DBG(udc , args...)      dev_dbg(&(udc)->pdev->dev, args)
 
 623 #define VDBG(udc , args...)     do {} while (0)
 
 626 #endif /* #ifdef AMD5536UDC_H */