• John Keeping's avatar
    usb: dwc2: Fix IN FIFO allocation · 644139f8
    John Keeping authored
    On chips with fewer FIFOs than endpoints (for example RK3288 which has 9
    endpoints, but only 6 which are cabable of input), the DPTXFSIZN
    registers above the FIFO count may return invalid values.
    
    With logging added on startup, I see:
    
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=1 sz=256
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=2 sz=128
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=3 sz=128
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=4 sz=64
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=5 sz=64
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=6 sz=32
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=7 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=8 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=9 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=10 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=11 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=12 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=13 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=14 sz=0
    	dwc2 ff580000.usb: dwc2_hsotg_init_fifo: ep=15 sz=0
    
    but:
    
    	# cat /sys/kernel/debug/ff580000.usb/fifo
    	Non-periodic FIFOs:
    	RXFIFO: Size 275
    	NPTXFIFO: Size 16, Start 0x00000113
    
    	Periodic TXFIFOs:
    		DPTXFIFO 1: Size 256, Start 0x00000123
    		DPTXFIFO 2: Size 128, Start 0x00000223
    		DPTXFIFO 3: Size 128, Start 0x000002a3
    		DPTXFIFO 4: Size 64, Start 0x00000323
    		DPTXFIFO 5: Size 64, Start 0x00000363
    		DPTXFIFO 6: Size 32, Start 0x000003a3
    		DPTXFIFO 7: Size 0, Start 0x000003e3
    		DPTXFIFO 8: Size 0, Start 0x000003a3
    		DPTXFIFO 9: Size 256, Start 0x00000123
    
    so it seems that FIFO 9 is mirroring FIFO 1.
    
    Fix the allocation by using the FIFO count instead of the endpoint count
    when selecting a FIFO for an endpoint.
    Acked-by: default avatarMinas Harutyunyan <hminas@synopsys.com>
    Signed-off-by: default avatarJohn Keeping <john@metanate.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    644139f8
gadget.c 137 KB