public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* Toggling VGA out on Eee 901
@ 2008-09-16 21:43 Phil Endecott
  2008-09-17  5:47 ` Zhang Rui
  0 siblings, 1 reply; 7+ messages in thread
From: Phil Endecott @ 2008-09-16 21:43 UTC (permalink / raw)
  To: linux acpi

Dear Experts,

I'm trying to work out how to get console video out toggling working on 
my ASUS EEE 901 (running Debian).  I get the feeling that I may be the 
first person to try to do this, and I knew almost nothing about ACPI 
until a couple of hours ago.  Can anyone help?

Output toggling for X works fine, but that doesn't use ACPI.  If the 
machine is booted with an external monitor connected, console VGA out 
is enabled; if the monitor is not connected it's not enabled.  Looking 
in /proc/acpi/video/VGA/CRTD/state I see

state: 0x1f
query: 0x01

when the machine was booted with the monitor connected and

state: 0x0d
query: 0x00

when the machine was booted without the monitor.  Following the advice 
of an old ACPI HOWTO I tried to store 0x80000001 in that file:

# /bin/echo 0x80000001 > /proc/acpi/video/VGA/CRTD/state
/bin/echo: write error: Bad address

I had a look at my iasl-disassembled /proc/dsdt and found this:

Device (VGA)
{
     .....
     Name (DONE, Zero)
     .....

     Device (CRTD)
     {
         .....
         Method (_DSS, 1, NotSerialized)
         {
             If (And (Arg0, 0x40000000))
             {
                 If (And (Arg0, 0x80000000))
                 {
                     Store (One, DONE)
                 }
             }
         }
     }
}

I have never looked at this stuff before, but I don't get the 
impression that it's actually going to do anything to the hardware 
registers, is it?  Am I looking in the wrong place?  Based on that I 
did try to store 0xC0000000 and 0xC0000001, and in this case there was 
no "Bad address" error - but no output change either.

Can someone point me in the right direction?
I have put the complete dsdt.dsl here: http://chezphil.org/tmp/eee_901_dsdt.dsl


Many thanks,  Phil.

(Please cc: me in any replies)




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

* Re: Toggling VGA out on Eee 901
  2008-09-16 21:43 Toggling VGA out on Eee 901 Phil Endecott
@ 2008-09-17  5:47 ` Zhang Rui
  2008-09-17 10:52   ` Phil Endecott
  0 siblings, 1 reply; 7+ messages in thread
From: Zhang Rui @ 2008-09-17  5:47 UTC (permalink / raw)
  To: Phil Endecott; +Cc: linux acpi

Hi, phil,

On Tue, 2008-09-16 at 22:43 +0100, Phil Endecott wrote:
> Dear Experts,
> 
> I'm trying to work out how to get console video out toggling working on 
> my ASUS EEE 901 (running Debian).  I get the feeling that I may be the 
> first person to try to do this, and I knew almost nothing about ACPI 
> until a couple of hours ago.  Can anyone help?
> Output toggling for X works fine, but that doesn't use ACPI.
well, ACPI control method for video output switching seldom works.
And we use xrandr to switch the display in X.
I'm not sure but I'm afraid we don't have the plan to support video
output switch in console mode.

thanks,
rui

>   If the 
> machine is booted with an external monitor connected, console VGA out 
> is enabled; if the monitor is not connected it's not enabled.  Looking 
> in /proc/acpi/video/VGA/CRTD/state I see
> 
> state: 0x1f
> query: 0x01
> 
> when the machine was booted with the monitor connected and
> 
> state: 0x0d
> query: 0x00
> 
> when the machine was booted without the monitor.  Following the advice 
> of an old ACPI HOWTO I tried to store 0x80000001 in that file:
> 
> # /bin/echo 0x80000001 > /proc/acpi/video/VGA/CRTD/state
> /bin/echo: write error: Bad address
> 
> I had a look at my iasl-disassembled /proc/dsdt and found this:
> 
> Device (VGA)
> {
>      .....
>      Name (DONE, Zero)
>      .....
> 
>      Device (CRTD)
>      {
>          .....
>          Method (_DSS, 1, NotSerialized)
>          {
>              If (And (Arg0, 0x40000000))
>              {
>                  If (And (Arg0, 0x80000000))
>                  {
>                      Store (One, DONE)
>                  }
>              }
>          }
>      }
> }
> 
> I have never looked at this stuff before, but I don't get the 
> impression that it's actually going to do anything to the hardware 
> registers, is it?  Am I looking in the wrong place?  Based on that I 
> did try to store 0xC0000000 and 0xC0000001, and in this case there was 
> no "Bad address" error - but no output change either.
> 
> Can someone point me in the right direction?
> I have put the complete dsdt.dsl here: http://chezphil.org/tmp/eee_901_dsdt.dsl
> 
> 
> Many thanks,  Phil.
> 
> (Please cc: me in any replies)
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: Toggling VGA out on Eee 901
  2008-09-17  5:47 ` Zhang Rui
@ 2008-09-17 10:52   ` Phil Endecott
  2008-09-18  2:47     ` Zhang Rui
  0 siblings, 1 reply; 7+ messages in thread
From: Phil Endecott @ 2008-09-17 10:52 UTC (permalink / raw)
  To: Zhang Rui; +Cc: linux acpi

Hi Rui,

Zhang Rui wrote:
> Hi, phil,
> 
> On Tue, 2008-09-16 at 22:43 +0100, Phil Endecott wrote:
>> Dear Experts,
>>
>> I'm trying to work out how to get console video out toggling working on 
>> my ASUS EEE 901 (running Debian).  I get the feeling that I may be the 
>> first person to try to do this, and I knew almost nothing about ACPI 
>> until a couple of hours ago.  Can anyone help?
>> Output toggling for X works fine, but that doesn't use ACPI.

> well, ACPI control method for video output switching seldom works.
> And we use xrandr to switch the display in X.
> I'm not sure but I'm afraid we don't have the plan to support video
> output switch in console mode.

As far as I can see, the code already exists in the kernel to support 
this.  The problem is that this BIOS doesn't define the necessary 
methods (unless I've misunderstood something).  When you say "don't plan 
to support", do you mean that the existing kernel functionality is now 
deprecated, or something?

Thanks,  Phil.

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: Toggling VGA out on Eee 901
       [not found] <71cd59b00809170813hba237e8y2bb3b4b2e7604d04@mail.gmail.com>
@ 2008-09-17 19:31 ` Phil Endecott
  2008-09-17 19:47   ` Corentin Chary
  0 siblings, 1 reply; 7+ messages in thread
From: Phil Endecott @ 2008-09-17 19:31 UTC (permalink / raw)
  To: Corentin Chary; +Cc: linux acpi

Corentin Chary wrote:
> you can try the "disp" file under /sys/device/platform/eeepc-laptop/
> Try echo 1, echo 0, etc ... It may do something

Thanks for the suggestion.  It doesn't work, though I think it's trying 
to do something.  The code for the "disp" file checks a capabilities 
bitmask in which I think the DISPLAYSWITCH bit is set, and writes call 
a method called SDSP, which eventually seems to do an I/O byte write (I 
think).  I'm well out of my depth here so I'm going to move on to the 
next problem, but I'm willing to try out any suggestions that people have.

Cheers,  Phil




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

* Re: Toggling VGA out on Eee 901
  2008-09-17 19:31 ` Phil Endecott
@ 2008-09-17 19:47   ` Corentin Chary
  2008-09-17 21:08     ` Phil Endecott
  0 siblings, 1 reply; 7+ messages in thread
From: Corentin Chary @ 2008-09-17 19:47 UTC (permalink / raw)
  To: Phil Endecott; +Cc: linux acpi

On Wed, Sep 17, 2008 at 9:31 PM, Phil Endecott
<phil_hmpau_endecott@chezphil.org> wrote:
> Corentin Chary wrote:
>>
>> you can try the "disp" file under /sys/device/platform/eeepc-laptop/
>> Try echo 1, echo 0, etc ... It may do something
>
> Thanks for the suggestion.  It doesn't work, though I think it's trying to
> do something.  The code for the "disp" file checks a capabilities bitmask in
> which I think the DISPLAYSWITCH bit is set, and writes call a method called
> SDSP, which eventually seems to do an I/O byte write (I think).  I'm well
> out of my depth here so I'm going to move on to the next problem, but I'm
> willing to try out any suggestions that people have.
>
> Cheers,  Phil

It may be like http://acpi4asus.sourceforge.net/README
 4.1.1 Display switching

  Note: the display switching code is currently considered EXPERIMENTAL.

  Switching works for the following models:
    L3800C
    A2500H
    L5800C
    M5200N
    W1000N (albeit with some glitches)
    M6700R
    A6JC
    F3J

  Switching doesn't work for the following:
    M3700N
    L2X00D (locks the laptop under certain conditions)

  To switch the displays, echo values from 0 to 15 to
  /sys/devices/platform/asus-laptop/display. The significance of those values
  is as follows:

  +-------+-----+-----+-----+-----+-----+
  | Bin   | Val | DVI | TV  | CRT | LCD |
  +-------+-----+-----+-----+-----+-----+
  + 0000  +   0 +     +     +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 0001  +   1 +     +     +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 0010  +   2 +     +     +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 0011  +   3 +     +     +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 0100  +   4 +     +  X  +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 0101  +   5 +     +  X  +     + X   +
  +-------+-----+-----+-----+-----+-----+
  + 0110  +   6 +     +  X  +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 0111  +   7 +     +  X  +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1000  +   8 +  X  +     +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 1001  +   9 +  X  +     +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1010  +  10 +  X  +     +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 1011  +  11 +  X  +     +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1100  +  12 +  X  +  X  +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 1101  +  13 +  X  +  X  +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1110  +  14 +  X  +  X  +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 1111  +  15 +  X  +  X  +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+

  In most cases, the appropriate displays must be plugged in for the above
  combinations to work. TV-Out may need to be initialized at boot time.

  Debugging:
  1) Check whether the Fn+F8 key:
     a) does not lock the laptop (try disabling CONFIG_X86_UP_APIC or boot with
        noapic / nolapic if it does)
     b) generates events (0x6n, where n is the value corresponding to the
        configuration above)
     c) actually works
     Record the disp value at every configuration.
  2) Echo values from 0 to 15 to /sys/devices/platform/asus-laptop/display.
     Record its value, note any change. If nothing changes, try a broader range,
     up to 65535.
  3) Send ANY output (both positive and negative reports are needed, unless your
     machine is already listed above) to the acpi4asus-user mailing list.

  Note: on some machines (e.g. L3C), after the module has been loaded, only 0x6n
  events are generated and no actual switching occurs. In such a case, a line
  like:

    echo $((10#$arg-60)) > /sys/devices/platform/asus-laptop/display

  will usually do the trick ($arg is the 0000006n-like event passed to acpid).

  Note: there is currently no reliable way to read display status on xxN
  (Centrino) models.

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

* Re: Toggling VGA out on Eee 901
  2008-09-17 19:47   ` Corentin Chary
@ 2008-09-17 21:08     ` Phil Endecott
  0 siblings, 0 replies; 7+ messages in thread
From: Phil Endecott @ 2008-09-17 21:08 UTC (permalink / raw)
  To: Corentin Chary; +Cc: linux acpi

Corentin Chary wrote:
> On Wed, Sep 17, 2008 at 9:31 PM, Phil Endecott
> <phil_hmpau_endecott@chezphil.org> wrote:
>> Corentin Chary wrote:
>>>
>>> you can try the "disp" file under /sys/device/platform/eeepc-laptop/
>>> Try echo 1, echo 0, etc ... It may do something
>>
>> Thanks for the suggestion.  It doesn't work, though I think it's trying to
>> do something.  The code for the "disp" file checks a capabilities bitmask in
>> which I think the DISPLAYSWITCH bit is set, and writes call a method called
>> SDSP, which eventually seems to do an I/O byte write (I think).  I'm well
>> out of my depth here so I'm going to move on to the next problem, but I'm
>> willing to try out any suggestions that people have.

> It may be like http://acpi4asus.sourceforge.net/README

>   To switch the displays, echo values from 0 to 15 to
>   /sys/devices/platform/asus-laptop/display. The significance of those values
>   is as follows:
>
>   +-------+-----+-----+-----+-----+-----+
>   | Bin   | Val | DVI | TV  | CRT | LCD |
>   +-------+-----+-----+-----+-----+-----+
>   + 0000  +   0 +     +     +     +     +
>   +-------+-----+-----+-----+-----+-----+
[snip]

Yes, I tried all these values (and a few hundred thousand more...) with 
no luck.  Thanks for the suggestion.


Phil.




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

* Re: Toggling VGA out on Eee 901
  2008-09-17 10:52   ` Phil Endecott
@ 2008-09-18  2:47     ` Zhang Rui
  0 siblings, 0 replies; 7+ messages in thread
From: Zhang Rui @ 2008-09-18  2:47 UTC (permalink / raw)
  To: Phil Endecott; +Cc: linux acpi

On Wed, 2008-09-17 at 18:52 +0800, Phil Endecott wrote:
> Hi Rui,
> 
> Zhang Rui wrote:
> > Hi, phil,
> >
> > On Tue, 2008-09-16 at 22:43 +0100, Phil Endecott wrote:
> >> Dear Experts,
> >>
> >> I'm trying to work out how to get console video out toggling
> working on
> >> my ASUS EEE 901 (running Debian).  I get the feeling that I may be
> the
> >> first person to try to do this, and I knew almost nothing about
> ACPI
> >> until a couple of hours ago.  Can anyone help?
> >> Output toggling for X works fine, but that doesn't use ACPI.
> 
> > well, ACPI control method for video output switching seldom works.
> > And we use xrandr to switch the display in X.
> > I'm not sure but I'm afraid we don't have the plan to support video
> > output switch in console mode.
> 
> As far as I can see, the code already exists in the kernel to support
> this.  The problem is that this BIOS doesn't define the necessary
> methods (unless I've misunderstood something).
it's true that there is some code that is used for display switch in
ACPI video driver.
It evaluates the ACPI control methods to switch the display, but
unfortunately we don't have any BIOSes that these methods actually
work...

>   When you say "don't plan
> to support", do you mean that the existing kernel functionality is now
> deprecated,
right.
I've sent a patch to remove this piece of code sometime before...

BTW: forgot to mention, the platform drivers may have the ability to
switch the display via some platform specific methods, but that depends.
and it's beyond my scope. :).
I can only say that display switching via the predefined ACPI control
methods doesn't work.

thanks,
rui

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2008-09-18  2:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-16 21:43 Toggling VGA out on Eee 901 Phil Endecott
2008-09-17  5:47 ` Zhang Rui
2008-09-17 10:52   ` Phil Endecott
2008-09-18  2:47     ` Zhang Rui
     [not found] <71cd59b00809170813hba237e8y2bb3b4b2e7604d04@mail.gmail.com>
2008-09-17 19:31 ` Phil Endecott
2008-09-17 19:47   ` Corentin Chary
2008-09-17 21:08     ` Phil Endecott

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox