mb/google/corsola: Revise power-on sequence of PS8640
Although the panel initializes fine and the fw recovery screen is displayed without issues, the current power-on sequence of the PS8640 violates the spec of the PS8640, which can be confirmed by measuring it with an oscilloscope. The sequence is: - set VDD12 to be 1.2V - set VDD33 to be 3.3V - pull hign PD# - pull down RST# - delay 2ms - pull high RST# - delay more than 50ms (55ms for margin) - pull down RST# - delay more than 50ms (55ms for margin) - pull high RST# This flow will increase 110ms if firmware display is enabled in krabby. For normal booting flow, the firmware will not be enabled, so it will meet boot time requirements of Chrome OS. (Less than 1s.) Datasheet name: PS8640_DS_V1.4_20200210.docx. Chapter: 14. BUG=b:222650141 TEST=show fw display normally in krabby. TEST=result of waveform meets the spec. Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com> Change-Id: I7706c56dc7fc13ac84c0d52a6e534bc0988e8fd3 Reviewed-on: https://review.coreboot.org/c/coreboot/+/62893 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
parent
5b51faaaea
commit
d6727ba972
|
@ -19,6 +19,20 @@
|
|||
/* Bridge functions */
|
||||
static void bridge_ps8640_power_on(void)
|
||||
{
|
||||
/*
|
||||
* PS8640 power-on sequence is described in chapter 14, PS8640_DS_V1.4_20200210.docx
|
||||
* - set VDD12 to be 1.2V
|
||||
* - set VDD33 to be 3.3V
|
||||
* - pull hign PD#
|
||||
* - pull down RST#
|
||||
* - delay 2ms
|
||||
* - pull high RST#
|
||||
* - delay more than 50ms (55ms for margin)
|
||||
* - pull down RST#
|
||||
* - delay more than 50ms (55ms for margin)
|
||||
* - pull high RST#
|
||||
*/
|
||||
|
||||
/* Set VRF12 to 1.2V and VCN33 to 3.3V */
|
||||
mainboard_set_regulator_vol(MTK_REGULATOR_VRF12, 1200000);
|
||||
mainboard_set_regulator_vol(MTK_REGULATOR_VCN33, 3300000);
|
||||
|
@ -29,6 +43,10 @@ static void bridge_ps8640_power_on(void)
|
|||
gpio_output(GPIO_EDPBRDG_RST_L, 0);
|
||||
mdelay(2);
|
||||
gpio_output(GPIO_EDPBRDG_RST_L, 1);
|
||||
mdelay(55);
|
||||
gpio_output(GPIO_EDPBRDG_RST_L, 0);
|
||||
mdelay(55);
|
||||
gpio_output(GPIO_EDPBRDG_RST_L, 1);
|
||||
}
|
||||
|
||||
static int bridge_ps8640_get_edid(u8 i2c_bus, struct edid *edid)
|
||||
|
|
Loading…
Reference in New Issue