The answers to the queries are:
1.) There is no current selection mechanism in the plug an receptacle design based on the schematics in the KBA, it is made to work at 5V and not more than 3A by default. Even if the source advertises the current limits, because of the pull-down on the CC lines, the FX3 Type-C design is supposed to work at the default 5V 3A.
2.) Please refer to the following thread: Type C connector enumeration issue .
The FX3 firmware does the following steps to control the switching of the MUXSEL signal:
A) Disable the USB2 support.
B) Try to establish USB3 connection using the first USB3 pair.
C) check for CY_U3P_USB_EVENT_SS_COMP_ENTRY and CY_U3P_USB_EVENT_USB3_LNKFAIL.
If any of the two event gets triggered, do the following:
(a)disable the USB PHY by using CyU3PConnectState(CyFalse, CyFalse);
(b)toggle the mux selection GPIO.
(c)enable the USB 2.0 support
(d)Call connectstate API to establish a USB 3.0 connection using the second pair.
The above thread shows the implementation of mux control in the firmware.
1.) Of course it will work at the 5V 3A. My issue here is that the default current on USB Type-C is not 3A. The default is either 500mA or 900mA. It might also offer 1.5A or 3A, so the KBA should be made to work at 5V and 500mA. It might get more power but that's not guaranteed. The way it currently says "by default, the Host provides 5 V, 3 A" leads to users thinking they can always draw 3A which they can't.
2.) Ok thanks for the explanation.
1.) We have no mechanism to understand the host's current limits in our hardware or software and has to be implemented externally using a PD controller since it can understand the CC terminations.
NOTE: Please don't follow the schematics of the PD controller design from the KBA as it is not correct.