mb/google/octopus: Disable BT before S5 entry
The CNVi wifi/bt module prevents entry into S5 by keeping internal SoC clocks running. Therefore it's necessary to disable BT prior to S5 entry. BUG=b:79606769 TEST= Test if BT device works under following cases: 1. Power-on 2. Press powerbtn before OS entry 3. Power-on from S5 again Change-Id: Ibc14b4080a27de48d197e16d0eed162603482de2 Signed-off-by: Hannah Williams <hannah.williams@intel.com> Reviewed-on: https://review.coreboot.org/26238 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						 Furquan Shaikh
						Furquan Shaikh
					
				
			
			
				
	
			
			
			
						parent
						
							5c3452b800
						
					
				
				
					commit
					09b883f352
				
			| @@ -34,7 +34,7 @@ void mainboard_smi_sleep(u8 slp_typ) | ||||
| 	const struct pad_config *pads; | ||||
| 	size_t num; | ||||
|  | ||||
| 	pads = variant_sleep_gpio_table(&num); | ||||
| 	pads = variant_sleep_gpio_table(&num, slp_typ); | ||||
| 	gpio_configure_pads(pads, num); | ||||
|  | ||||
| 	chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS, | ||||
|   | ||||
| @@ -13,6 +13,7 @@ | ||||
|  * GNU General Public License for more details. | ||||
|  */ | ||||
|  | ||||
| #include <arch/acpi.h> | ||||
| #include <baseboard/gpio.h> | ||||
| #include <baseboard/variants.h> | ||||
| #include <commonlib/helpers.h> | ||||
| @@ -300,9 +301,20 @@ variant_early_gpio_table(size_t *num) | ||||
| static const struct pad_config sleep_gpio_table[] = { | ||||
| }; | ||||
|  | ||||
| /* GPIO settings before entering slp_s5. */ | ||||
| static const struct pad_config sleep_s5_gpio_table[] = { | ||||
| 	/* BT_DISABLE_L */ | ||||
| 	PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_109, 0, DEEP, NONE, Tx0RXDCRx1, SAME), | ||||
| }; | ||||
|  | ||||
| const struct pad_config *__weak | ||||
| variant_sleep_gpio_table(size_t *num) | ||||
| variant_sleep_gpio_table(size_t *num, int slp_typ) | ||||
| { | ||||
| 	if (slp_typ == ACPI_S5) { | ||||
| 		*num = ARRAY_SIZE(sleep_s5_gpio_table); | ||||
| 		return sleep_s5_gpio_table; | ||||
| 	} | ||||
|  | ||||
| 	*num = ARRAY_SIZE(sleep_gpio_table); | ||||
| 	return sleep_gpio_table; | ||||
| } | ||||
|   | ||||
| @@ -28,7 +28,7 @@ uint8_t variant_board_id(void); | ||||
|  * entries for each table. */ | ||||
| const struct pad_config *variant_gpio_table(size_t *num); | ||||
| const struct pad_config *variant_early_gpio_table(size_t *num); | ||||
| const struct pad_config *variant_sleep_gpio_table(size_t *num); | ||||
| const struct pad_config *variant_sleep_gpio_table(size_t *num, int slp_typ); | ||||
|  | ||||
| /* Baseboard default swizzle. Can be reused if swizzle is same. */ | ||||
| extern const struct lpddr4_swizzle_cfg baseboard_lpddr4_swizzle; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user