[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linuxbios
Subject:    [coreboot] Re: Mainboard porting assistance
From:       "Benjamin Doron" <benjamin.doron00 () gmail ! com>
Date:       2020-01-26 20:28:38
Message-ID: 158007051816.18.93619638105089900 () 9548bf9ee149
[Download RAW message or body]

Hi Nico,

> How did you figure out the GPIO pins?

I found the schematics online.

> why are you using this system76 sequence?

The Lenovo hybrid_graphics code wasn't relevant enough, so I looked for the function \
and arguments to call to set GPIOs. Once I had code to do that, I didn't care to \
remove the system76 references, but it is fairly generic code.

> Hmmm, looking at the code, it doesn't seem to leave much time. IIRC, a
> PCI device should be given 100ms (or was it 200ms?) to show up.

Right. Well, the schematics define a *slightly* different sequence of GPIOs. If a \
dGPU is present (DGPU_PRESENT asserted low indicates "OPTIMUS," as opposed to "UMA"), \
DGPU_PWR_EN is meant to be sent. I think that triggers a VGA core power enable GPIO \
pin and then DGPU_PWROK can be checked.

So, if PWROK means powered on (rather than that power is in a stable state, which \
seems to be the case for system76), it can't check PWROK after disabling power, so I \
commented out that loop and just added a delay.

The delay does sound like it is too short, could this be the problem? Also, does it \
make sense to cut the code down to just using the above 3 pins, ignoring HOLD_RST and \
never sending power disable?

Note: Even if it is a problem, somehow, it still gets PWROK. Hopefully, this does not \
mean that it's getting a result set in gpio.h. With GPIO debugging on, I did not see \
the messages as this code ran, only higher up in the ramstage log.

Some other questions:
1. Can and should this be done in ramstage, or should it be done earlier?
2. I added in "pc_keyboard_init(NO_AUX_DEVICE)" because the drivers in the ec \
directory would run that to initialise their chips. (Do I need \
"CONFIG_DRIVERS_PS2_KEYBOARD?") The printk before it never gets logged. What does \
this mean and is it related/relevant?  3. Do I need to do anything with the EC? I \
know that the vendor firmware includes the EC's ROM in a padding section at the top \
of the BIOS section, but I did successfully boot into an OS using coreboot before. \
The laptop responds to the power key, LED indicators and the battery work (well, OS \
thought it wasn't present, but that was ACPI related), fans presumably spin and if I \
tried charging it, it did that too.

As an aside, the first PCIe root port now appears. I don't know how this might be \
tangled up with the dGPU, "pci 01.0" or anything else, but maybe it could be \
appearing because of the SUBSYSTEM_{VENDOR,DEVICE}? In which case, perhaps boot is \
freezing up because the dGPU isn't actually available?

> That is really odd, now I'm a little bit concerned about the well-
> being of your board.

No, they appear with the vendor firmware. I'd find it very weird, but maybe I need \
"SOFTWARE_I2C?" _______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-leave@coreboot.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic