libpayload: Remove bitfield use from OHCI data structures

We agreed that bitfields are a Bad Idea[tm].

Change-Id: Ic04f151091c359912835b8b3db488d2d41bd4bbb
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Reviewed-on: http://review.coreboot.org/479
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Peter Stuge <peter@stuge.se>
This commit is contained in:
Patrick Georgi
2011-11-24 09:12:11 +01:00
committed by Peter Stuge
parent ad6331d25f
commit c4348d0a44
2 changed files with 65 additions and 80 deletions

View File

@@ -206,49 +206,43 @@
typedef enum { OHCI_SETUP=0, OHCI_OUT=1, OHCI_IN=2, OHCI_FROM_TD=3 } ohci_pid_t;
typedef volatile struct {
union {
u32 dword0;
struct {
unsigned long function_address:7;
unsigned long endpoint_number:4;
unsigned long direction:2;
unsigned long lowspeed:1;
unsigned long skip:1;
unsigned long format:1;
unsigned long maximum_packet_size:11;
unsigned long:5;
} __attribute__ ((packed));
};
u32 config;
u32 tail_pointer;
union {
u32 head_pointer;
struct {
unsigned long halted:1;
unsigned long toggle:1;
unsigned long:30;
} __attribute__ ((packed));
};
u32 head_pointer;
u32 next_ed;
} __attribute__ ((packed)) ed_t;
#define ED_HALTED 1
#define ED_TOGGLE 2
#define ED_FUNC_SHIFT 0
#define ED_FUNC_MASK MASK(7, 0)
#define ED_EP_SHIFT 7
#define ED_EP_MASK MASK(4, 7)
#define ED_DIR_SHIFT 11
#define ED_DIR_MASK MASK(2, 11)
#define ED_LOWSPEED (1 << 13)
#define ED_MPS_SHIFT 16
typedef volatile struct {
union {
u32 dword0;
struct {
unsigned long:18;
unsigned long buffer_rounding:1;
unsigned long direction:2;
unsigned long delay_interrupt:3;
unsigned long toggle:1;
unsigned long toggle_from_td:1;
unsigned long error_count:2;
unsigned long condition_code:4;
} __attribute__ ((packed));
};
u32 config;
u32 current_buffer_pointer;
u32 next_td;
u32 buffer_end;
} __attribute__ ((packed)) td_t;
#define TD_DIRECTION_SHIFT 19
#define TD_DIRECTION_MASK MASK(2, TD_DIRECTION_SHIFT)
#define TD_DIRECTION_SETUP OHCI_SETUP << TD_DIRECTION_SHIFT
#define TD_DIRECTION_IN OHCI_IN << TD_DIRECTION_SHIFT
#define TD_DIRECTION_OUT OHCI_OUT << TD_DIRECTION_SHIFT
#define TD_DELAY_INTERRUPT_NODELAY (7 << 21)
#define TD_TOGGLE_DATA0 0
#define TD_TOGGLE_DATA1 (1 << 24)
#define TD_TOGGLE_FROM_ED 0
#define TD_TOGGLE_FROM_TD (1 << 25)
#define TD_CC_SHIFT 28
#define TD_CC_MASK MASK(4, TD_CC_SHIFT)
#define TD_CC_NOERR 0
#define TD_CC_NOACCESS (14 << TD_CC_SHIFT) /* the lower of the two values, so "no access" can be tested with >= */
#define OHCI_INST(controller) ((ohci_t*)((controller)->instance))