From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f182.google.com ([209.85.210.182]) by ewsd; Fri Nov 20 17:19:54 -0500 2020 Received: by mail-pf1-f182.google.com with SMTP id b63so9203882pfg.12 for <9front@9front.org>; Fri, 20 Nov 2020 14:19:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=offblast-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=6LiuNoT4mGXBa9PJhs/JLeL0ZpJ/etnDIkiR+iDwlJI=; b=h/ACxGX6wax3VdqW7QhRsVmfw+MuvpwzCn79pl/ZG+MUkaRBa1y7oxhQw1sAB80crM OZ9rHmHmN/vJKhe1W716714UGFWSwXN0SyOuNHVvXgdFtERyw7IySY6mDBG+Hw31m7G3 PXHX5nevChcba1RfXmt/aXfHDw0fjGLEAHnxjZU/+C0LEx/Ds6jauNgmCbZrHRozYISK 9vbIhC8zNSVQfXbM5XndkOTRFJoeSHZVDBPvFo+ZUmMRUIKVLvxqruQKZOX3o9NvwSGV bac++5hbYeIM5XWnmKm3obFFh6IJzoCuLdAr+zqCwSTUh0FtLFsDqpFU8bR/ZRqDocZz qovw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=6LiuNoT4mGXBa9PJhs/JLeL0ZpJ/etnDIkiR+iDwlJI=; b=e7clf97b+JqWNueJfpuLcGWE3+yVpIrffSJF/tTtBxM8yqvvM8K2raEVq+/Ohb7D3J DifDPfgTvkzY8Oxh9pLdQ/VlZeNY8Ae6xPAtcCsY9rYlW2xuYdNw/sI0W+Yy8nlNg9GJ Iri5TnJO00sjHVuOtipN6C4Av4ca6U20cR5CCP4mJifXRJ9sHoPKDtoECzQhCedsrrEo o8+HCc05O5H06nHyKDKp7b67ElHHvPAU72AaVBRktB466afRvp+UY65NO4BUPgorict1 7wiDcJ/W1NZ5D0hszfK2GCGKuKpEWQXoBmsfbm27PoEcpoaVC3VU8BoW0gMXuOTrlOHU AWdA== X-Gm-Message-State: AOAM532dSXX1CROYB/zqpg7OmipzPmmecl0+HiuvO2c9SVhLXM3YFUYh FoEf3n8i4pMmx0iAGrSFW01axwJ8cJhdxRTG X-Google-Smtp-Source: ABdhPJwXSIOIaTLmlroczavo+FwyT5rux7ciXa+bJvyjyWGte4OqWRxriXCIwRziP5GfkgOMWz4f5g== X-Received: by 2002:a17:90a:9f8e:: with SMTP id o14mr10615999pjp.181.1605910786967; Fri, 20 Nov 2020 14:19:46 -0800 (PST) Return-Path: Received: from wololo.home.arpa ([2601:646:100:8cb:2c6d:f3ff:fe32:a632]) by smtp.gmail.com with ESMTPSA id k17sm4070297pgh.41.2020.11.20.14.19.45 for <9front@9front.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Nov 2020 14:19:46 -0800 (PST) Date: Fri, 20 Nov 2020 14:19:44 -0800 From: Nick Owens To: 9front@9front.org Subject: Re: [9front] bug: nusb fails to set report protocol with a stall error Message-ID: <20201120221944.bayqfjwceqp55x6s@wololo.home.arpa> References: <26C61BE088AB556C851A08493C15610F@smtp.pobox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <26C61BE088AB556C851A08493C15610F@smtp.pobox.com> User-Agent: NeoMutt/20180716 List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: transactional open-source standard markup On Fri, Nov 20, 2020 at 01:43:04PM -0800, Romano wrote: > The patch to kb.c compiled fine, but the patch for joy.c didn't compile for me: > > cpu% mk > 7c -I../lib -FTVw joy.c > joy.c:228 name not declared: iface > mk: 7c -I../lib -FTVw joy.c : exit status=rc 2880351: 7c 2880353: error > > Just to see if it would compile I replaced "iface" with "f->dev->usb->ep[eid]->iface" and it did. Did you have iface referring to something else? m( thats what i get for hasty copypasta. you are correct. update patch below, uses Subclass macro to access subclass. diff --git a/sys/src/cmd/nusb/joy/joy.c b/sys/src/cmd/nusb/joy/joy.c --- a/sys/src/cmd/nusb/joy/joy.c +++ b/sys/src/cmd/nusb/joy/joy.c @@ -222,6 +222,12 @@ setproto(KDev *f, int eid) proto = Reportproto; }else kbfatal(f, "no report"); + + // if a HID's subclass code is 0, it may not support setproto, + // and is always initialized in report mode. + if(Subclass(f->dev->usb->ep[eid]->iface->csp) == 0) + return 0; + return usbcmd(f->dev, Rh2d|Rclass|Riface, Setproto, proto, id, nil, 0); } diff --git a/sys/src/cmd/nusb/kb/kb.c b/sys/src/cmd/nusb/kb/kb.c --- a/sys/src/cmd/nusb/kb/kb.c +++ b/sys/src/cmd/nusb/kb/kb.c @@ -368,6 +368,12 @@ setproto(Hiddev *f, int eid) } proto = Bootproto; } + + // if a HID's subclass code is 0, it may not support setproto, + // and is always initialized in report mode. + if(Subclass(iface->csp) == 0) + return 0; + return usbcmd(f->dev, Rh2d|Rclass|Riface, Setproto, proto, iface->id, nil, 0); }