Skip to content
  • Stefan Kristiansson's avatar
    usb: align usb_endpoint_descriptor to 16-bit boundary · 97929877
    Stefan Kristiansson authored
    
    
    The usb_endpoint_descriptor struct is 7 bytes large and is
    defined as an array (ep_desc[USB_MAXENDPOINTS])
    in the usb_interface struct in include/usb.h
    
    This fact will result in that every odd index in that
    array will start at an uneven address, this in
    turn makes accesses to u16 wMaxPacketSize unaligned.
    Such accesses are illegal on the OpenRISC architecture
    (as well as other architectures) and will render a bus error.
    
    Setting the aligned(2) attribute on usb_endpoint_descriptor
    will force wMaxPacketSize to a 16-bit boundary.
    
    Signed-off-by: default avatarStefan Kristiansson <stefan.kristiansson@saunalahti.fi>
    97929877