• Peter Chen's avatar
    usb: chipidea: add system interface for ttctrl.ttha · aa738187
    Peter Chen authored
    In chipidea IP RTL, there is a very limited design for siTD, the detail
    like below:
    There is no Max Packet Size at siTD, so it uses one constant for both
    Max Packet Size for packet and the packet size for the last transaction
    when considering schedule.
    If the ttctrl.ttha does not match against Hub Address field in siTD,
    this constant is 188 bytes, else this constant is 1023 bytes.
    
    If the ttctrl.ttha is non-zero value, RTL will use 188 as this constant,
    so it will lose the data if the packet size is larger than 188 bytes, eg,
    if we playback a wav which format is 48khz, 16 bits, 2 channels, the
    packet size will be 192bytes, but the controller will only send 188 bytes
    for this packet, the noise will be heared using USB audio card.
    The use case is single transaction, but higher frame rate.
    
    If the ttctr.ttha is zero value, we can send 1023 bytes within one
    transaction, but the controller will not accept the coming tranaction
    if it considers the schedule time is less than 1023 bytes. So the
    limitation is we can't schedule as many as transactions within frame.
    If the total bytes is already 256 bytes for previous transactions within
    frame, it can't accept another transaction. The use case is multiple
    transactions, but less frame rate.
    Signed-off-by: default avatarPeter Chen <peter.chen@nxp.com>
    aa738187
core.c 29.3 KB