Yeah. I guess it's fine... I was going to suggest adding the + 1 in a different place but actually it doesn't matter. The key to understanding dwc2_set_param_host_channels() is that the "val" parameter is always -1. That means it always returns -EINVAL and the caller jumbles the error code in with some other error codes and then ignores any errors. :/ 2182 int dwc2_set_param_host_channels(struct dwc2_hsotg *hsotg, int val) 2183 { 2184 int valid = 1; 2185 int retval = 0; 2186 2187 if (val < 1 || val > hsotg->hw_params.host_channels) 2188 valid = 0; 2189 2190 if (!valid) { 2191 if (val >= 0) 2192 dev_err(hsotg->dev, 2193 "%d invalid for host_channels. Check HW configuration.\n", 2194 val); 2195 val = hsotg->hw_params.host_channels; 2196 dev_dbg(hsotg->dev, "Setting host_channels to %d\n", val); 2197 retval = -EINVAL; 2198 } 2199 2200 hsotg->core_params->host_channels = val; 2201 return retval; 2202 } It would be better to re-write this with all the dead cruft removed: int dwc2_set_param_host_channels(struct dwc2_hsotg *hsotg) { hsotg->core_params->host_channels = hsotg->hw_params.host_channels + 1; return 0; } regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html