- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We're using CYPD5225 notebook template project and have configured our solution as a source only.
Display port alt modes and USB 2.0 work fine.
For some reason SuperSpeed USB 3.X only devices are recognized correctly only in one orientation. When cable is flipped they are enumerated as USB 2.0 devices.
When we plug any Alt Mode enabled device firmware framework calls function mux_ctrl_set_cfg with correct polarity and mux_select_t is correctly given. Code configures then our board Muxes accordingly. However it looks that when a SuperSpeed device is plugged this function is not called at all or it's called with the polarity argument always set 0. I can't be sure because I've not ever been able to run debugger succesfully.
If mux_ctrl_set_cfg is not called for SuperSpeed only device then where and when I should configure the mux? How do I know polarity in this case?
Firmware base version is 3.4.0.2559.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Problem has been solved. Root cause ended up being simple. Event handling of APP_EVT_TYPEC_ATTACH calls set_mux(port,MUX_CONFIG_SS_ONLY, 0) that calls mux_ctrl_set_cfg(). After this framework calls sln_psrc_enable(). Our mux configuration implementation had incorrectly assumed that the sln_psrc_enable() is called before any mux_ctrl_set_cfg().
After realizing this it was easy to to fix mux configuration. Superspeed only polarity works now correctly.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
It seems that the Mux polarity is not being set correctly since the mux_ctrl_set_cfg() is called with the appropriate polarity and configuration in the alternate mode handler. By default, the mux_ctrl_init() initializes the Mux with polarity of 0 and since the USB 3.0 devices are not alternate mode capable, the mux may not be getting configured after that.
Please add the following call in the app_event_handler() under APP_EVT_TYPEC_ATTACH and let us know if it helps-
mux_ctrl_set_cfg (port, MUX_CONFIG_SS_ONLY, dpm_get_polarity (port))
Please also let us know if you have made any changes to the project.
Best Regards,
Sananya
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, I'll try this out as soon as possible. We have not modified the templates code logic, just replaced the i2c configuration calls in function mux_ctrl_set_cfg() with configuration specific for our boards muxes.
@Sananya_14 wrote:
Hi,
It seems that the Mux polarity is not being set correctly since the mux_ctrl_set_cfg() is called with the appropriate polarity and configuration in the alternate mode handler. By default, the mux_ctrl_init() initializes the Mux with polarity of 0 and since the USB 3.0 devices are not alternate mode capable, the mux may not be getting configured after that.
Please add the following call in the app_event_handler() under APP_EVT_TYPEC_ATTACH and let us know if it helps-
mux_ctrl_set_cfg (port, MUX_CONFIG_SS_ONLY, dpm_get_polarity (port))
Please also let us know if you have made any changes to the project.
Best Regards,
Sananya
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've verified that the firmware framework calls the mux_set() on APP_EVT_TYPEC_ATTACH and this function passes the MUX_CONFIG_SS_ONLY and correct polarity to mux_ctrl_set_cfg().
Our problem lies elsewhere than I originally assumed, will have to investigate more.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Problem has been solved. Root cause ended up being simple. Event handling of APP_EVT_TYPEC_ATTACH calls set_mux(port,MUX_CONFIG_SS_ONLY, 0) that calls mux_ctrl_set_cfg(). After this framework calls sln_psrc_enable(). Our mux configuration implementation had incorrectly assumed that the sln_psrc_enable() is called before any mux_ctrl_set_cfg().
After realizing this it was easy to to fix mux configuration. Superspeed only polarity works now correctly.