linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Asus PN62S vs PN50 - ITE8708
@ 2021-04-30 23:37 Chris McCrae
  2021-05-03  9:20 ` Sean Young
  0 siblings, 1 reply; 6+ messages in thread
From: Chris McCrae @ 2021-04-30 23:37 UTC (permalink / raw)
  To: linux-media

Long time stalker, first time caller, so go easy please :-)  (I've
already learned I need to use plain text mode ... what's next?)

Recently acquired an Asus PN62S (Intel) as a media centre frontend
(currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
current BIOS available).  Having an integrated IR was part of the
selling features.  However, getting it to be recognized by my system
has become a challenge that I am getting obsessed with.  There's very
little to find online on this device that is current, but there has
been some recent conversation on this list about the same device, on a
related machine, the PN50 (AMD).  I'm hoping that the knowledge here
may lead to a solution for my issue.

I can provide more detail on request, but at the moment I am focusing
on the DSDT as a possible suspect.  I do not have the 16 byte issue
that the PN50 experiences.  Mine is defined as 8 bytes, which is
compatible with the ite-cir driver.  My issue is that there appears to
be no attempt to bind the device to the driver (but it is visible in
lsmod)... no messages about the driver in dmesg at all.  My thought is
that the definition of the device in DSDT may somehow give it enough
information (ITE8708) to know the driver could be needed, but not the
correct information to make it work.

An earlier message provided only part of the device definition in DSDT
for the PN50.  I would like to be able to see the full definition for
it from the PN50, to see if anything is significantly different.
Ideally, if I had the full DSDT as a starting point, I could compare
other areas such as motherboard resources.

I have learned a lot about ACPI lately, and am continuing to learn.
In the end, ACPI may have nothing to do with my problem.  If anyone
has other suggestions as to where an issue might originate, I'm ready
to look there too (like when does the kernel make the decision to bind
or not).  I've used acpi.debug_layer and debug_level options, tested
with fwts, recompiled kernels and drivers with patches, rebuilt the
DSDT to force some parameters, installed Windows 10 and confirmed
things actually work, and probably a few other things I can't
remember.

Any help is appreciated.

Chris

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Asus PN62S vs PN50 - ITE8708
  2021-04-30 23:37 Asus PN62S vs PN50 - ITE8708 Chris McCrae
@ 2021-05-03  9:20 ` Sean Young
  2021-05-03 15:44   ` Chris McCrae
  0 siblings, 1 reply; 6+ messages in thread
From: Sean Young @ 2021-05-03  9:20 UTC (permalink / raw)
  To: Chris McCrae; +Cc: linux-media

Hi Chris,

On Fri, Apr 30, 2021 at 07:37:10PM -0400, Chris McCrae wrote:
> Long time stalker, first time caller, so go easy please :-)  (I've
> already learned I need to use plain text mode ... what's next?)
> 
> Recently acquired an Asus PN62S (Intel) as a media centre frontend
> (currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
> current BIOS available).  Having an integrated IR was part of the
> selling features.  However, getting it to be recognized by my system
> has become a challenge that I am getting obsessed with.  There's very
> little to find online on this device that is current, but there has
> been some recent conversation on this list about the same device, on a
> related machine, the PN50 (AMD).  I'm hoping that the knowledge here
> may lead to a solution for my issue.
> 
> I can provide more detail on request, but at the moment I am focusing
> on the DSDT as a possible suspect.  I do not have the 16 byte issue
> that the PN50 experiences.  Mine is defined as 8 bytes, which is
> compatible with the ite-cir driver.  My issue is that there appears to
> be no attempt to bind the device to the driver (but it is visible in
> lsmod)... no messages about the driver in dmesg at all.  My thought is
> that the definition of the device in DSDT may somehow give it enough
> information (ITE8708) to know the driver could be needed, but not the
> correct information to make it work.
> 
> An earlier message provided only part of the device definition in DSDT
> for the PN50.  I would like to be able to see the full definition for
> it from the PN50, to see if anything is significantly different.
> Ideally, if I had the full DSDT as a starting point, I could compare
> other areas such as motherboard resources.

It would be great if we could see the entries for the IR device in your
DSDT. There is a guide here https://wiki.archlinux.org/title/DSDT on
how to do that.

Thanks

Sean

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Asus PN62S vs PN50 - ITE8708
  2021-05-03  9:20 ` Sean Young
@ 2021-05-03 15:44   ` Chris McCrae
  2021-05-04  9:03     ` Sean Young
  0 siblings, 1 reply; 6+ messages in thread
From: Chris McCrae @ 2021-05-03 15:44 UTC (permalink / raw)
  To: Sean Young; +Cc: linux-media

Thanks for answering the call Sean.

On Mon, 3 May 2021 at 05:20, Sean Young <sean@mess.org> wrote:
>
> Hi Chris,
>
> On Fri, Apr 30, 2021 at 07:37:10PM -0400, Chris McCrae wrote:
> > Recently acquired an Asus PN62S (Intel) as a media centre frontend
> > (currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
> > current BIOS available).  Having an integrated IR was part of the
> > selling features.  However, getting it to be recognized by my system
> > has become a challenge that I am getting obsessed with.  There's very
> > little to find online on this device that is current, but there has
> > been some recent conversation on this list about the same device, on a
> > related machine, the PN50 (AMD).  I'm hoping that the knowledge here
> > may lead to a solution for my issue.
> >
> > I can provide more detail on request, but at the moment I am focusing
> > on the DSDT as a possible suspect.  I do not have the 16 byte issue
> > that the PN50 experiences.  Mine is defined as 8 bytes, which is
> > compatible with the ite-cir driver.  My issue is that there appears to
> > be no attempt to bind the device to the driver (but it is visible in
> > lsmod)... no messages about the driver in dmesg at all.  My thought is
> > that the definition of the device in DSDT may somehow give it enough
> > information (ITE8708) to know the driver could be needed, but not the
> > correct information to make it work.
> >
> > An earlier message provided only part of the device definition in DSDT
> > for the PN50.  I would like to be able to see the full definition for
> > it from the PN50, to see if anything is significantly different.
> > Ideally, if I had the full DSDT as a starting point, I could compare
> > other areas such as motherboard resources.
>
> It would be great if we could see the entries for the IR device in your
> DSDT. There is a guide here https://wiki.archlinux.org/title/DSDT on
> how to do that.
>
Here the full device from the DSDT:

            Device (CR00)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (VBAN, 0x0680)
                Name (VIRQ, 0x0A)
                Name (UIDN, Zero)
                Name (_HID, EisaId ("ITE8708"))  // _HID: Hardware ID
                Method (_UID, 0, NotSerialized)  // _UID: Unique ID
                {
                    Return (UIDN) /* \_SB_.PCI0.CR00.UIDN */
                }

                Method (_STA, 0, Serialized)  // _STA: Status
                {
                    If ((CIRE == Zero))
                    {
                        Return (Zero)
                    }
                    Return (0x0F)
                }

                Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                {
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            _Y10)
                        IRQNoFlags (_Y11)
                            {}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    })
                    CreateWordField (BUF0,
\_SB.PCI0.CR00._CRS._Y10._MIN, IOPL)  // _MIN: Minimum Base Address
                    CreateWordField (BUF0,
\_SB.PCI0.CR00._CRS._Y10._MAX, IOPH)  // _MAX: Maximum Base Address
                    CreateWordField (BUF0,
\_SB.PCI0.CR00._CRS._Y11._INT, IRQ)  // _INT: Interrupts
                    IOPL = VBAN /* \_SB_.PCI0.CR00.VBAN */
                    IOPH = VBAN /* \_SB_.PCI0.CR00.VBAN */
                    IRQ = (One << VIRQ) /* \_SB_.PCI0.CR00.VIRQ */
                    Return (BUF0) /* \_SB_.PCI0.CR00._CRS.BUF0 */
                }
            }

> Thanks
>
> Sean

I've been using the latest ACPI Spec (6.3) to better comprehend the
macros, and what they should produce.  Running the DSDT through
acpiexec for \_SB.PCI0.CR00._CRS gives:

- execute \_SB.PCI0.CR00._CRS
Evaluating \_SB.PCI0.CR00._CRS
0x1 Outstanding allocations after evaluation of \_SB.PCI0.CR00._CRS
Evaluation of \_SB.PCI0.CR00._CRS returned object 0x562c4e9a9c90,
external buffer length 28
[Buffer] Length 10 =   0000: 47 01 80 06 80 06 01 08 22 00 04 2A 00 00
79 00  // G......."..*..y.

I'm still a little unclear on the first byte (47) and the last two (79
00), generated presumably by ResourceTemplate(), but the rest seem to
match the expected results based on the inputs.  Aside from the
obvious difference in the address range length compared to the PN50's
BUF0, which seems to be the PN50's problem, the definition of BUF0 is
consistent.  I've even recompiled the DSDT with a length of 0x10 just
to see if that made a difference, and it doesn't.  Still no sign of
the driver in dmesg.  Although it would be nice to see the full CR00
definition for the PN50, it seems less likely that the problem lies
here.

I've tried various acpi kernel debugging settings, but easily get
swamped with output.  Is there a process path somewhere that can be
followed to understand how the device goes through the ACPI process
and eventually gets picked up by the kernel?  I still feel like the
problem precedes the kernel's involvement.  The kernel obviously has
some degree of awareness of the DSDT entry, because I can find :

/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ITE8708:00/

The status is correct (0x0F), but under the physical_node, I have no
'resources' entry.  Should there be one?  I have a 'resource' file,
but it only returns zeroes.

And instead of being linked to ite_cir (which is showing in lsmod, but
not used by anything), the driver ->
../../../bus/pci/drivers/skl_uncore

To me, that seems like it's processing what it has been presented, but
I've been wrong before.  I'm open for directions on where to
investigate next.

Thanks,

Chris

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Asus PN62S vs PN50 - ITE8708
  2021-05-03 15:44   ` Chris McCrae
@ 2021-05-04  9:03     ` Sean Young
  2021-05-05  3:52       ` Chris McCrae
  0 siblings, 1 reply; 6+ messages in thread
From: Sean Young @ 2021-05-04  9:03 UTC (permalink / raw)
  To: Chris McCrae; +Cc: linux-acpi, linux-media

Hi Chris,

On Mon, May 03, 2021 at 11:44:04AM -0400, Chris McCrae wrote:
> Thanks for answering the call Sean.
> 
> On Mon, 3 May 2021 at 05:20, Sean Young <sean@mess.org> wrote:
> >
> > Hi Chris,
> >
> > On Fri, Apr 30, 2021 at 07:37:10PM -0400, Chris McCrae wrote:
> > > Recently acquired an Asus PN62S (Intel) as a media centre frontend
> > > (currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
> > > current BIOS available).  Having an integrated IR was part of the
> > > selling features.  However, getting it to be recognized by my system
> > > has become a challenge that I am getting obsessed with.  There's very
> > > little to find online on this device that is current, but there has
> > > been some recent conversation on this list about the same device, on a
> > > related machine, the PN50 (AMD).  I'm hoping that the knowledge here
> > > may lead to a solution for my issue.
> > >
> > > I can provide more detail on request, but at the moment I am focusing
> > > on the DSDT as a possible suspect.  I do not have the 16 byte issue
> > > that the PN50 experiences.  Mine is defined as 8 bytes, which is
> > > compatible with the ite-cir driver.  My issue is that there appears to
> > > be no attempt to bind the device to the driver (but it is visible in
> > > lsmod)... no messages about the driver in dmesg at all.  My thought is
> > > that the definition of the device in DSDT may somehow give it enough
> > > information (ITE8708) to know the driver could be needed, but not the
> > > correct information to make it work.
> > >
> > > An earlier message provided only part of the device definition in DSDT
> > > for the PN50.  I would like to be able to see the full definition for
> > > it from the PN50, to see if anything is significantly different.
> > > Ideally, if I had the full DSDT as a starting point, I could compare
> > > other areas such as motherboard resources.
> >
> > It would be great if we could see the entries for the IR device in your
> > DSDT. There is a guide here https://wiki.archlinux.org/title/DSDT on
> > how to do that.
> >
> Here the full device from the DSDT:
> 
>             Device (CR00)
>             {
>                 Name (_ADR, Zero)  // _ADR: Address
>                 Name (VBAN, 0x0680)
>                 Name (VIRQ, 0x0A)
>                 Name (UIDN, Zero)
>                 Name (_HID, EisaId ("ITE8708"))  // _HID: Hardware ID
>                 Method (_UID, 0, NotSerialized)  // _UID: Unique ID
>                 {
>                     Return (UIDN) /* \_SB_.PCI0.CR00.UIDN */
>                 }
> 
>                 Method (_STA, 0, Serialized)  // _STA: Status
>                 {
>                     If ((CIRE == Zero))
>                     {
>                         Return (Zero)
>                     }
>                     Return (0x0F)
>                 }
> 
>                 Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
>                 {
>                     Name (BUF0, ResourceTemplate ()
>                     {
>                         IO (Decode16,
>                             0x0000,             // Range Minimum
>                             0x0000,             // Range Maximum
>                             0x01,               // Alignment
>                             0x08,               // Length
>                             _Y10)
>                         IRQNoFlags (_Y11)
>                             {}
>                         DMA (Compatibility, NotBusMaster, Transfer8, )
>                             {}
>                     })
>                     CreateWordField (BUF0,
> \_SB.PCI0.CR00._CRS._Y10._MIN, IOPL)  // _MIN: Minimum Base Address
>                     CreateWordField (BUF0,
> \_SB.PCI0.CR00._CRS._Y10._MAX, IOPH)  // _MAX: Maximum Base Address
>                     CreateWordField (BUF0,
> \_SB.PCI0.CR00._CRS._Y11._INT, IRQ)  // _INT: Interrupts
>                     IOPL = VBAN /* \_SB_.PCI0.CR00.VBAN */
>                     IOPH = VBAN /* \_SB_.PCI0.CR00.VBAN */
>                     IRQ = (One << VIRQ) /* \_SB_.PCI0.CR00.VIRQ */
>                     Return (BUF0) /* \_SB_.PCI0.CR00._CRS.BUF0 */
>                 }
>             }

Hmm this is not really telling us everything yet. Would you mind sending
on the entire dmesg please?

> > Thanks
> >
> > Sean
> 
> I've been using the latest ACPI Spec (6.3) to better comprehend the
> macros, and what they should produce.  Running the DSDT through
> acpiexec for \_SB.PCI0.CR00._CRS gives:
> 
> - execute \_SB.PCI0.CR00._CRS
> Evaluating \_SB.PCI0.CR00._CRS
> 0x1 Outstanding allocations after evaluation of \_SB.PCI0.CR00._CRS
> Evaluation of \_SB.PCI0.CR00._CRS returned object 0x562c4e9a9c90,
> external buffer length 28
> [Buffer] Length 10 =   0000: 47 01 80 06 80 06 01 08 22 00 04 2A 00 00
> 79 00  // G......."..*..y.
> 
> I'm still a little unclear on the first byte (47) and the last two (79
> 00), generated presumably by ResourceTemplate(), but the rest seem to
> match the expected results based on the inputs.  Aside from the
> obvious difference in the address range length compared to the PN50's
> BUF0, which seems to be the PN50's problem, the definition of BUF0 is
> consistent.  I've even recompiled the DSDT with a length of 0x10 just
> to see if that made a difference, and it doesn't.  Still no sign of
> the driver in dmesg.  Although it would be nice to see the full CR00
> definition for the PN50, it seems less likely that the problem lies
> here.
> 
> I've tried various acpi kernel debugging settings, but easily get
> swamped with output.  Is there a process path somewhere that can be
> followed to understand how the device goes through the ACPI process
> and eventually gets picked up by the kernel?  I still feel like the
> problem precedes the kernel's involvement.  The kernel obviously has
> some degree of awareness of the DSDT entry, because I can find :
> 
> /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ITE8708:00/
> 
> The status is correct (0x0F), but under the physical_node, I have no
> 'resources' entry.  Should there be one?  I have a 'resource' file,
> but it only returns zeroes.

This does _sound_ like an acpi issue, I've cc'ed linux-acpi@vger.kernel.org.

> And instead of being linked to ite_cir (which is showing in lsmod, but
> not used by anything), the driver ->
> ../../../bus/pci/drivers/skl_uncore
> 
> To me, that seems like it's processing what it has been presented, but
> I've been wrong before.  I'm open for directions on where to
> investigate next.

This is not something I can help with, I'm afraid.

Thanks,

Sean

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Asus PN62S vs PN50 - ITE8708
  2021-05-04  9:03     ` Sean Young
@ 2021-05-05  3:52       ` Chris McCrae
  2021-05-05 21:18         ` Chris McCrae
  0 siblings, 1 reply; 6+ messages in thread
From: Chris McCrae @ 2021-05-05  3:52 UTC (permalink / raw)
  To: Sean Young; +Cc: linux-acpi, linux-media

On Tue, 4 May 2021 at 05:03, Sean Young <sean@mess.org> wrote:
>
> Hi Chris,
>
> On Mon, May 03, 2021 at 11:44:04AM -0400, Chris McCrae wrote:
> > Thanks for answering the call Sean.
> >
> > On Mon, 3 May 2021 at 05:20, Sean Young <sean@mess.org> wrote:
> > >
> > > Hi Chris,
> > >
> > > On Fri, Apr 30, 2021 at 07:37:10PM -0400, Chris McCrae wrote:
> > > > Recently acquired an Asus PN62S (Intel) as a media centre frontend
> > > > (currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
> > > > current BIOS available).  Having an integrated IR was part of the
> > > > selling features.  However, getting it to be recognized by my system
> > > > has become a challenge that I am getting obsessed with.  There's very
> > > > little to find online on this device that is current, but there has
> > > > been some recent conversation on this list about the same device, on a
> > > > related machine, the PN50 (AMD).  I'm hoping that the knowledge here
> > > > may lead to a solution for my issue.
> > > >
> > > > I can provide more detail on request, but at the moment I am focusing
> > > > on the DSDT as a possible suspect.  I do not have the 16 byte issue
> > > > that the PN50 experiences.  Mine is defined as 8 bytes, which is
> > > > compatible with the ite-cir driver.  My issue is that there appears to
> > > > be no attempt to bind the device to the driver (but it is visible in
> > > > lsmod)... no messages about the driver in dmesg at all.  My thought is
> > > > that the definition of the device in DSDT may somehow give it enough
> > > > information (ITE8708) to know the driver could be needed, but not the
> > > > correct information to make it work.
> > > >
> > > > An earlier message provided only part of the device definition in DSDT
> > > > for the PN50.  I would like to be able to see the full definition for
> > > > it from the PN50, to see if anything is significantly different.
> > > > Ideally, if I had the full DSDT as a starting point, I could compare
> > > > other areas such as motherboard resources.
> > >
> > > It would be great if we could see the entries for the IR device in your
> > > DSDT. There is a guide here https://wiki.archlinux.org/title/DSDT on
> > > how to do that.
> > >
> > Here the full device from the DSDT:
> >
> >             Device (CR00)
> >             {
> >                 Name (_ADR, Zero)  // _ADR: Address
> >                 Name (VBAN, 0x0680)
> >                 Name (VIRQ, 0x0A)
> >                 Name (UIDN, Zero)
> >                 Name (_HID, EisaId ("ITE8708"))  // _HID: Hardware ID
> >                 Method (_UID, 0, NotSerialized)  // _UID: Unique ID
> >                 {
> >                     Return (UIDN) /* \_SB_.PCI0.CR00.UIDN */
> >                 }
> >
> >                 Method (_STA, 0, Serialized)  // _STA: Status
> >                 {
> >                     If ((CIRE == Zero))
> >                     {
> >                         Return (Zero)
> >                     }
> >                     Return (0x0F)
> >                 }
> >
> >                 Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
> >                 {
> >                     Name (BUF0, ResourceTemplate ()
> >                     {
> >                         IO (Decode16,
> >                             0x0000,             // Range Minimum
> >                             0x0000,             // Range Maximum
> >                             0x01,               // Alignment
> >                             0x08,               // Length
> >                             _Y10)
> >                         IRQNoFlags (_Y11)
> >                             {}
> >                         DMA (Compatibility, NotBusMaster, Transfer8, )
> >                             {}
> >                     })
> >                     CreateWordField (BUF0,
> > \_SB.PCI0.CR00._CRS._Y10._MIN, IOPL)  // _MIN: Minimum Base Address
> >                     CreateWordField (BUF0,
> > \_SB.PCI0.CR00._CRS._Y10._MAX, IOPH)  // _MAX: Maximum Base Address
> >                     CreateWordField (BUF0,
> > \_SB.PCI0.CR00._CRS._Y11._INT, IRQ)  // _INT: Interrupts
> >                     IOPL = VBAN /* \_SB_.PCI0.CR00.VBAN */
> >                     IOPH = VBAN /* \_SB_.PCI0.CR00.VBAN */
> >                     IRQ = (One << VIRQ) /* \_SB_.PCI0.CR00.VIRQ */
> >                     Return (BUF0) /* \_SB_.PCI0.CR00._CRS.BUF0 */
> >                 }
> >             }
>
> Hmm this is not really telling us everything yet. Would you mind sending
> on the entire dmesg please?
>

I could send dmesg output, but aside from the fact that it's almost
1000 lines, I have just had a moderate degree of success.  Using the
pci=noacpi kernel option, gives me:

[    1.767176] ite_cir: Auto-detected model: ITE8708 CIR transceiver
[    1.767177] ite_cir: Using model: ITE8708 CIR transceiver
[    1.767178] ite_cir: TX-capable: 1
[    1.767179] ite_cir: Sample period (ns): 8680
[    1.767180] ite_cir: TX carrier frequency (Hz): 38000
[    1.767180] ite_cir: TX duty cycle (%): 33
[    1.767181] ite_cir: RX low carrier frequency (Hz): 0
[    1.767182] ite_cir: RX high carrier frequency (Hz): 0
[    1.840766] rc rc0: ITE8708 CIR transceiver as /devices/virtual/rc/rc0
[    1.840842] rc rc0: lirc_dev: driver ite-cir registered at minor =
0, raw IR receiver, raw IR transmitter
[    1.840881] input: ITE8708 CIR transceiver as /devices/virtual/rc/rc0/input3
[    1.844915] ite_cir: driver has been successfully loaded

So after a couple of weeks, I should be happier, right?  Never seen
any of these lines before.  I am happy that there's progress, but some
things still aren't right.

1.  The kernel option will be used to focus my debugging efforts.  At
least this seems to support the idea that ACPI plays a role in this.
I was beginning to lose faith in that idea.
2.  Since the device seems to be recognized by the system, I thought
I'd take a quick stab at seeing if it recognized a remote.  No matter
the protocol, the remote, or distance, neither ir-keytable or ir-ctl
(thanks for that tool!) wanted to register any signals.  So far I'm
chalking that up to the previous point.  Maybe it's possible that
communication is still hampered, even though the device can be
identified.  Sort out PCI, and maybe things start rolling.  I know the
receiver works, since I confirmed that with a test install of Windows
10 early on in this process.

Thanks for taking the time Sean.  I know you've got a lot of other
things on the go, so I really do appreciate it.

> > > Thanks
> > >
> > > Sean
> >
> > I've been using the latest ACPI Spec (6.3) to better comprehend the
> > macros, and what they should produce.  Running the DSDT through
> > acpiexec for \_SB.PCI0.CR00._CRS gives:
> >
> > - execute \_SB.PCI0.CR00._CRS
> > Evaluating \_SB.PCI0.CR00._CRS
> > 0x1 Outstanding allocations after evaluation of \_SB.PCI0.CR00._CRS
> > Evaluation of \_SB.PCI0.CR00._CRS returned object 0x562c4e9a9c90,
> > external buffer length 28
> > [Buffer] Length 10 =   0000: 47 01 80 06 80 06 01 08 22 00 04 2A 00 00
> > 79 00  // G......."..*..y.
> >
> > I'm still a little unclear on the first byte (47) and the last two (79
> > 00), generated presumably by ResourceTemplate(), but the rest seem to
> > match the expected results based on the inputs.  Aside from the
> > obvious difference in the address range length compared to the PN50's
> > BUF0, which seems to be the PN50's problem, the definition of BUF0 is
> > consistent.  I've even recompiled the DSDT with a length of 0x10 just
> > to see if that made a difference, and it doesn't.  Still no sign of
> > the driver in dmesg.  Although it would be nice to see the full CR00
> > definition for the PN50, it seems less likely that the problem lies
> > here.
> >
> > I've tried various acpi kernel debugging settings, but easily get
> > swamped with output.  Is there a process path somewhere that can be
> > followed to understand how the device goes through the ACPI process
> > and eventually gets picked up by the kernel?  I still feel like the
> > problem precedes the kernel's involvement.  The kernel obviously has
> > some degree of awareness of the DSDT entry, because I can find :
> >
> > /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ITE8708:00/
> >
> > The status is correct (0x0F), but under the physical_node, I have no
> > 'resources' entry.  Should there be one?  I have a 'resource' file,
> > but it only returns zeroes.
>
> This does _sound_ like an acpi issue, I've cc'ed linux-acpi@vger.kernel.org.
>
> > And instead of being linked to ite_cir (which is showing in lsmod, but
> > not used by anything), the driver ->
> > ../../../bus/pci/drivers/skl_uncore
> >
> > To me, that seems like it's processing what it has been presented, but
> > I've been wrong before.  I'm open for directions on where to
> > investigate next.
>
> This is not something I can help with, I'm afraid.
>
> Thanks,
>
> Sean

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Asus PN62S vs PN50 - ITE8708
  2021-05-05  3:52       ` Chris McCrae
@ 2021-05-05 21:18         ` Chris McCrae
  0 siblings, 0 replies; 6+ messages in thread
From: Chris McCrae @ 2021-05-05 21:18 UTC (permalink / raw)
  To: Sean Young; +Cc: linux-acpi, linux-media

On Tue, 4 May 2021 at 23:52, Chris McCrae <chrismccraeworks@gmail.com> wrote:
>
> On Tue, 4 May 2021 at 05:03, Sean Young <sean@mess.org> wrote:
> >
> > Hi Chris,
> >
> > On Mon, May 03, 2021 at 11:44:04AM -0400, Chris McCrae wrote:
> > > Thanks for answering the call Sean.
> > >
> > > On Mon, 3 May 2021 at 05:20, Sean Young <sean@mess.org> wrote:
> > > >
> > > > Hi Chris,
> > > >
> > > > On Fri, Apr 30, 2021 at 07:37:10PM -0400, Chris McCrae wrote:
> > > > > Recently acquired an Asus PN62S (Intel) as a media centre frontend
> > > > > (currently testing with Xubuntu 20.04 and a 5.10 kernel, and the most
> > > > > current BIOS available).  Having an integrated IR was part of the
> > > > > selling features.  However, getting it to be recognized by my system
> > > > > has become a challenge that I am getting obsessed with.  There's very
> > > > > little to find online on this device that is current, but there has
> > > > > been some recent conversation on this list about the same device, on a
> > > > > related machine, the PN50 (AMD).  I'm hoping that the knowledge here
> > > > > may lead to a solution for my issue.
> > > > >
> > > > > I can provide more detail on request, but at the moment I am focusing
> > > > > on the DSDT as a possible suspect.  I do not have the 16 byte issue
> > > > > that the PN50 experiences.  Mine is defined as 8 bytes, which is
> > > > > compatible with the ite-cir driver.  My issue is that there appears to
> > > > > be no attempt to bind the device to the driver (but it is visible in
> > > > > lsmod)... no messages about the driver in dmesg at all.  My thought is
> > > > > that the definition of the device in DSDT may somehow give it enough
> > > > > information (ITE8708) to know the driver could be needed, but not the
> > > > > correct information to make it work.
> > > > >
> > > > > An earlier message provided only part of the device definition in DSDT
> > > > > for the PN50.  I would like to be able to see the full definition for
> > > > > it from the PN50, to see if anything is significantly different.
> > > > > Ideally, if I had the full DSDT as a starting point, I could compare
> > > > > other areas such as motherboard resources.
> > > >
> > > > It would be great if we could see the entries for the IR device in your
> > > > DSDT. There is a guide here https://wiki.archlinux.org/title/DSDT on
> > > > how to do that.
> > > >
> > > Here the full device from the DSDT:
> > >
> > >             Device (CR00)
> > >             {
> > >                 Name (_ADR, Zero)  // _ADR: Address
> > >                 Name (VBAN, 0x0680)
> > >                 Name (VIRQ, 0x0A)
> > >                 Name (UIDN, Zero)
> > >                 Name (_HID, EisaId ("ITE8708"))  // _HID: Hardware ID
> > >                 Method (_UID, 0, NotSerialized)  // _UID: Unique ID
> > >                 {
> > >                     Return (UIDN) /* \_SB_.PCI0.CR00.UIDN */
> > >                 }
> > >
> > >                 Method (_STA, 0, Serialized)  // _STA: Status
> > >                 {
> > >                     If ((CIRE == Zero))
> > >                     {
> > >                         Return (Zero)
> > >                     }
> > >                     Return (0x0F)
> > >                 }
> > >
> > >                 Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
> > >                 {
> > >                     Name (BUF0, ResourceTemplate ()
> > >                     {
> > >                         IO (Decode16,
> > >                             0x0000,             // Range Minimum
> > >                             0x0000,             // Range Maximum
> > >                             0x01,               // Alignment
> > >                             0x08,               // Length
> > >                             _Y10)
> > >                         IRQNoFlags (_Y11)
> > >                             {}
> > >                         DMA (Compatibility, NotBusMaster, Transfer8, )
> > >                             {}
> > >                     })
> > >                     CreateWordField (BUF0,
> > > \_SB.PCI0.CR00._CRS._Y10._MIN, IOPL)  // _MIN: Minimum Base Address
> > >                     CreateWordField (BUF0,
> > > \_SB.PCI0.CR00._CRS._Y10._MAX, IOPH)  // _MAX: Maximum Base Address
> > >                     CreateWordField (BUF0,
> > > \_SB.PCI0.CR00._CRS._Y11._INT, IRQ)  // _INT: Interrupts
> > >                     IOPL = VBAN /* \_SB_.PCI0.CR00.VBAN */
> > >                     IOPH = VBAN /* \_SB_.PCI0.CR00.VBAN */
> > >                     IRQ = (One << VIRQ) /* \_SB_.PCI0.CR00.VIRQ */
> > >                     Return (BUF0) /* \_SB_.PCI0.CR00._CRS.BUF0 */
> > >                 }
> > >             }
> >
> > Hmm this is not really telling us everything yet. Would you mind sending
> > on the entire dmesg please?
> >
>
> I could send dmesg output, but aside from the fact that it's almost
> 1000 lines, I have just had a moderate degree of success.  Using the
> pci=noacpi kernel option, gives me:
>
> [    1.767176] ite_cir: Auto-detected model: ITE8708 CIR transceiver
> [    1.767177] ite_cir: Using model: ITE8708 CIR transceiver
> [    1.767178] ite_cir: TX-capable: 1
> [    1.767179] ite_cir: Sample period (ns): 8680
> [    1.767180] ite_cir: TX carrier frequency (Hz): 38000
> [    1.767180] ite_cir: TX duty cycle (%): 33
> [    1.767181] ite_cir: RX low carrier frequency (Hz): 0
> [    1.767182] ite_cir: RX high carrier frequency (Hz): 0
> [    1.840766] rc rc0: ITE8708 CIR transceiver as /devices/virtual/rc/rc0
> [    1.840842] rc rc0: lirc_dev: driver ite-cir registered at minor =
> 0, raw IR receiver, raw IR transmitter
> [    1.840881] input: ITE8708 CIR transceiver as /devices/virtual/rc/rc0/input3
> [    1.844915] ite_cir: driver has been successfully loaded
>
> So after a couple of weeks, I should be happier, right?  Never seen
> any of these lines before.  I am happy that there's progress, but some
> things still aren't right.
>
> 1.  The kernel option will be used to focus my debugging efforts.  At
> least this seems to support the idea that ACPI plays a role in this.
> I was beginning to lose faith in that idea.
> 2.  Since the device seems to be recognized by the system, I thought
> I'd take a quick stab at seeing if it recognized a remote.  No matter
> the protocol, the remote, or distance, neither ir-keytable or ir-ctl
> (thanks for that tool!) wanted to register any signals.  So far I'm
> chalking that up to the previous point.  Maybe it's possible that
> communication is still hampered, even though the device can be
> identified.  Sort out PCI, and maybe things start rolling.  I know the
> receiver works, since I confirmed that with a test install of Windows
> 10 early on in this process.

Getting happier :-)  I have at least a work-around for each of my two
points of contention.

For #1.  Having ruled out IRQ as an area of interest, looked at PCI
enumeration.  After some reading, on a bit of a whim, I changed device
\_SB.PCI0.CR00._ADR from Zero to One in my custom DSDT.  Now the
driver shows up without having to use pci=noacpi.  In fact, I tested
addresses from 0x01 to 0x0F, and all produced driver loading results.
So I can make this work with a custom DSDT, however I don't know if
this is the correct/accurate fix, or did 2 ugly bugs just have a
beautiful child?  I'd like to know and understand the true solution,
plus I'd like to at least try to feed some sort of realistic
information to ASUS to perhaps make its way into a future BIOS
revision.  Should I start a new thread on linux-acpi with this more
pointed question?

For #2.  This seems to be mostly the common Linux gotcha of
permissions.  Once I added the user to the groups 'input' and 'video'
I started to see results.  Plus the barebones kernel I had made (to
save compile time and have a huge log buffer) was missing most of the
protocols.  Once I added the user to the groups, rebooted with the
full kernel sporting a custom DSDT, ir-keytable and ir-ctl both had
lots to say.

Thanks again.

Chris

>
> Thanks for taking the time Sean.  I know you've got a lot of other
> things on the go, so I really do appreciate it.
>
> > > > Thanks
> > > >
> > > > Sean
> > >
> > > I've been using the latest ACPI Spec (6.3) to better comprehend the
> > > macros, and what they should produce.  Running the DSDT through
> > > acpiexec for \_SB.PCI0.CR00._CRS gives:
> > >
> > > - execute \_SB.PCI0.CR00._CRS
> > > Evaluating \_SB.PCI0.CR00._CRS
> > > 0x1 Outstanding allocations after evaluation of \_SB.PCI0.CR00._CRS
> > > Evaluation of \_SB.PCI0.CR00._CRS returned object 0x562c4e9a9c90,
> > > external buffer length 28
> > > [Buffer] Length 10 =   0000: 47 01 80 06 80 06 01 08 22 00 04 2A 00 00
> > > 79 00  // G......."..*..y.
> > >
> > > I'm still a little unclear on the first byte (47) and the last two (79
> > > 00), generated presumably by ResourceTemplate(), but the rest seem to
> > > match the expected results based on the inputs.  Aside from the
> > > obvious difference in the address range length compared to the PN50's
> > > BUF0, which seems to be the PN50's problem, the definition of BUF0 is
> > > consistent.  I've even recompiled the DSDT with a length of 0x10 just
> > > to see if that made a difference, and it doesn't.  Still no sign of
> > > the driver in dmesg.  Although it would be nice to see the full CR00
> > > definition for the PN50, it seems less likely that the problem lies
> > > here.
> > >
> > > I've tried various acpi kernel debugging settings, but easily get
> > > swamped with output.  Is there a process path somewhere that can be
> > > followed to understand how the device goes through the ACPI process
> > > and eventually gets picked up by the kernel?  I still feel like the
> > > problem precedes the kernel's involvement.  The kernel obviously has
> > > some degree of awareness of the DSDT entry, because I can find :
> > >
> > > /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ITE8708:00/
> > >
> > > The status is correct (0x0F), but under the physical_node, I have no
> > > 'resources' entry.  Should there be one?  I have a 'resource' file,
> > > but it only returns zeroes.
> >
> > This does _sound_ like an acpi issue, I've cc'ed linux-acpi@vger.kernel.org.
> >
> > > And instead of being linked to ite_cir (which is showing in lsmod, but
> > > not used by anything), the driver ->
> > > ../../../bus/pci/drivers/skl_uncore
> > >
> > > To me, that seems like it's processing what it has been presented, but
> > > I've been wrong before.  I'm open for directions on where to
> > > investigate next.
> >
> > This is not something I can help with, I'm afraid.
> >
> > Thanks,
> >
> > Sean

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-05-05 21:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-30 23:37 Asus PN62S vs PN50 - ITE8708 Chris McCrae
2021-05-03  9:20 ` Sean Young
2021-05-03 15:44   ` Chris McCrae
2021-05-04  9:03     ` Sean Young
2021-05-05  3:52       ` Chris McCrae
2021-05-05 21:18         ` Chris McCrae

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).