/* * This file is part of the coreboot project. * * Copyright (C) 2015 Google Inc. * Copyright (C) 2015 Intel Corporation. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ /* Intel Storage Controllers */ Device (EMMC) { Name (_ADR, 0x001E0004) Name (_DDN, "eMMC Controller") OperationRegion (EMCR, PCI_Config, 0x00, 0x100) Field (EMCR, DWordAcc, NoLock, Preserve) { Offset (0x84), /* PMECTRLSTATUS */ D0D3, 2, /* POWERSTATE */ Offset (0xa2), /* PG_CONFIG */ , 2, PGEN, 1, /* PG_ENABLE */ } Method (_PS0, 0, Serialized) { /* Disable Power Gate */ Store (0, ^PGEN) /* Clear bits 31, 6, 2, 0 */ ^^PCRA (PID_SCS, 0x600, 0x7FFFFFBA) Sleep (2) /* Set bits 31, 6, 2, 0 */ ^^PCRO (PID_SCS, 0x600, 0x80000045) /* Set Power State to D0 */ Store (Zero, Local0) Store (Local0, ^D0D3) Store (^D0D3, Local0) } Method (_PS3, 0, Serialized) { /* Enable Power Gate */ Store (1, ^PGEN) /* Set Power State to D0 */ Store (3, Local0) Store (Local0, ^D0D3) Store (^D0D3, Local0) } } #if !IS_ENABLED(CONFIG_EXCLUDE_NATIVE_SD_INTERFACE) Device (SDXC) { Name (_ADR, 0x001E0006) Name (_DDN, "SD Controller") OperationRegion (SDCR, PCI_Config, 0x00, 0x100) Field (SDCR, DWordAcc, NoLock, Preserve) { Offset (0x84), /* PMECTRLSTATUS */ D0D3, 2, /* POWERSTATE */ Offset (0xa2), /* PG_CONFIG */ , 2, PGEN, 1, /* PG_ENABLE */ } Method (_PS0, 0, Serialized) { /* Disable 20K pull-down on CLK, CMD and DAT lines */ ^^PCRA (PID_GPIOCOM3, 0x4c4, 0xFFFFEFFF) ^^PCRA (PID_GPIOCOM3, 0x4cc, 0xFFFFEFFF) ^^PCRA (PID_GPIOCOM3, 0x4d4, 0xFFFFEFFF) ^^PCRA (PID_GPIOCOM3, 0x4dc, 0xFFFFEFFF) ^^PCRA (PID_GPIOCOM3, 0x4e4, 0xFFFFEFFF) ^^PCRA (PID_GPIOCOM3, 0x4f4, 0xFFFFEFFF) /* Disable Power Gate */ Store (0, ^PGEN) /* Clear bits 8, 7, 2, 0 */ ^^PCRA (PID_SCS, 0x600, 0xFFFFFE7A) Sleep (2) /* Set bits 31, 6, 2, 0 */ ^^PCRO (PID_SCS, 0x600, 0x00000185) /* Set Power State to D0 */ Store (Zero, Local0) Store (Local0, ^D0D3) Store (^D0D3, Local0) } Method (_PS3, 0, Serialized) { /* Enable Power Gate */ Store (1, ^PGEN) /* Set Power State to D0 */ Store (3, Local0) Store (Local0, ^D0D3) Store (^D0D3, Local0) /* Enable 20K pull-down on CLK, CMD and DAT lines */ ^^PCRO (PID_GPIOCOM3, 0x4c4, 0x00001000) ^^PCRO (PID_GPIOCOM3, 0x4cc, 0x00001000) ^^PCRO (PID_GPIOCOM3, 0x4d4, 0x00001000) ^^PCRO (PID_GPIOCOM3, 0x4dc, 0x00001000) ^^PCRO (PID_GPIOCOM3, 0x4e4, 0x00001000) ^^PCRO (PID_GPIOCOM3, 0x4f4, 0x00001000) } } #endif