Kumar Gala wrote:

>>     setmaskedbits_be32(&uccp->gumr_l,
>>         UCC_SLOW_GUMR_L_MODE_QMC | UCC_SLOW_GUMR_L_TDCR_1 |
>>         UCC_SLOW_GUMR_L_RDCR_16,
>>                 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK |
>>         UCC_SLOW_GUMR_L_RDCR_MASK);
>>
>>     setmaskedbits_be32(&uccp->gumr_h,
>>         UCC_SLOW_GUMR_H_SUART | UCC_SLOW_GUMR_H_TRX |
>>         UCC_SLOW_GUMR_H_TTX, UCC_SLOW_GUMR_H_RFW);
> 
> Can you also show what the UCC_SLOW* values look like.

The second example is actually a trick that lets me set some bits and clear 
others in one shot, so for the gumr_h register, all of the above values are 
single bits.  I guess that's not a good example.

For gumr_l, we have:

#define UCC_SLOW_GUMR_L_TDCR_MASK       0x00030000
#define UCC_SLOW_GUMR_L_TDCR_32         0x00030000
#define UCC_SLOW_GUMR_L_TDCR_16         0x00020000
#define UCC_SLOW_GUMR_L_TDCR_8          0x00010000
#define UCC_SLOW_GUMR_L_TDCR_1          0x00000000
#define UCC_SLOW_GUMR_L_RDCR_MASK       0x0000c000
#define UCC_SLOW_GUMR_L_RDCR_32         0x0000c000
#define UCC_SLOW_GUMR_L_RDCR_16         0x00008000
#define UCC_SLOW_GUMR_L_RDCR_8          0x00004000
#define UCC_SLOW_GUMR_L_RDCR_1          0x00000000
#define UCC_SLOW_GUMR_L_MODE_MASK       0x0000000F
#define UCC_SLOW_GUMR_L_MODE_BISYNC     0x00000008
#define UCC_SLOW_GUMR_L_MODE_AHDLC      0x00000006
#define UCC_SLOW_GUMR_L_MODE_UART       0x00000004
#define UCC_SLOW_GUMR_L_MODE_QMC        0x00000002

So for example, I could not use setbits32 to set UCC_SLOW_GUMR_L_RDCR_16 (10) 
if it was currently UCC_SLOW_GUMR_L_RDCR_32 (11).


-- 
Timur Tabi
Linux Kernel Developer @ Freescale
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to