lkml.org 
[lkml]   [2019]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH v8 1/6] software node: rename is_array to is_inline
    Hi Marek,

    On Thu, Dec 12, 2019 at 12:12:36PM +0100, Marek Szyprowski wrote:
    > Dear All,
    >
    > On 08.11.2019 05:22, Dmitry Torokhov wrote:
    > > We do not need a special flag to know if we are dealing with an array,
    > > as we can get that data from ratio between element length and the data
    > > size, however we do need a flag to know whether the data is stored
    > > directly inside property_entry or separately.
    > >
    > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    >
    > Today I've noticed that this patch got merged to linux-next as commit
    > e6bff4665c595b5a4aff173848851ed49ac3bfad. Sadly it breaks DWC3/xHCI
    > driver operation on Samsung Exynos5 SoCs (and probably on other SoCs
    > which use DWC3 in host mode too). I get the following errors during boot:
    >
    > dwc3 12000000.dwc3: failed to add properties to xHCI
    > dwc3 12000000.dwc3: failed to initialize host
    > dwc3: probe of 12000000.dwc3 failed with error -61
    >
    > Here is a full kernel log from Exynos5250-based Snow Chromebook on KernelCI:
    >
    > https://storage.kernelci.org/next/master/next-20191212/arm/exynos_defconfig/gcc-8/lab-collabora/boot-exynos5250-snow.txt
    >
    > (lack of 'ref' clk is not related nor fatal to the driver operation).
    >
    > The code which fails after this patch is located in
    > drivers/usb/dwc3/host.c. Let me know if I can help more in locating the bug.

    Does the following help? If, as I expect, it does, I'll submit it
    formally.

    ---

    diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
    index 5567ed2cddbec..fa252870c926f 100644
    --- a/drivers/usb/dwc3/host.c
    +++ b/drivers/usb/dwc3/host.c
    @@ -88,10 +88,10 @@ int dwc3_host_init(struct dwc3 *dwc)
    memset(props, 0, sizeof(struct property_entry) * ARRAY_SIZE(props));

    if (dwc->usb3_lpm_capable)
    - props[prop_idx++].name = "usb3-lpm-capable";
    + props[prop_idx++] = PROPERTY_ENTRY_BOOL("usb3-lpm-capable");

    if (dwc->usb2_lpm_disable)
    - props[prop_idx++].name = "usb2-lpm-disable";
    + props[prop_idx++] = PROPERTY_ENTRY_BOOL("usb2-lpm-disable");

    /**
    * WORKAROUND: dwc3 revisions <=3.00a have a limitation
    @@ -103,7 +103,7 @@ int dwc3_host_init(struct dwc3 *dwc)
    * This following flag tells XHCI to do just that.
    */
    if (dwc->revision <= DWC3_REVISION_300A)
    - props[prop_idx++].name = "quirk-broken-port-ped";
    + props[prop_idx++] = PROPERTY_ENTRY_BOOL("quirk-broken-port-ped");

    if (prop_idx) {
    ret = platform_device_add_properties(xhci, props);

    --
    Dmitry

    \
     
     \ /
      Last update: 2019-12-13 02:25    [W:3.259 / U:0.756 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site