mb/google/dedede/var/beadrix: Add a Proximity Sensor SX9324 for SAR

To meet LTE's RF Specific Absorption Rate (SAR) certification, we add a
Semtech Smart Proximity Sensor (P-Sensor) SX9324. P-Sensor connects
EC of I2C 5 bus and GPIO D22, D23, as well  as, SoC of GPIO E11, refer
to mainboard schematic.

BUG=b:213549229
BRANCH=dedede
TEST=emerge-dedede coreboot

Signed-off-by: Teddy Shih <teddyshih@ami.corp-partner.google.com>
Change-Id: If172d13aa62503547227adf91f049ea50b948888
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63652
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/mainboard/google/dedede/variants/beadrix/gpio.c b/src/mainboard/google/dedede/variants/beadrix/gpio.c
index 57573cc..2af138d 100644
--- a/src/mainboard/google/dedede/variants/beadrix/gpio.c
+++ b/src/mainboard/google/dedede/variants/beadrix/gpio.c
@@ -21,6 +21,8 @@
 	PAD_NC(GPP_C19, NONE),
 	/* C22 : UART2_RTS_N ==> NC */
 	PAD_NC(GPP_C22, NONE),
+	/* C23 : UART2_CTS_N ==> NC */
+	PAD_NC(GPP_C23, NONE),
 
 	/* D0  : WWAN_HOST_WAKE ==> WWAN_WDISABLE_L */
 	PAD_CFG_GPO(GPP_D0, 1, DEEP),
@@ -38,6 +40,10 @@
 	PAD_NC(GPP_D20, NONE),
 	/* D21 : WWAN_WLAN_COEX3 ==> TP */
 	PAD_NC(GPP_D21, NONE),
+	/* D22 : AP_I2C_SUB_SDA*/
+	PAD_CFG_NF(GPP_D22, NONE, DEEP, NF1),
+	/* D23 : AP_I2C_SUB_SCL */
+	PAD_CFG_NF(GPP_D23, NONE, DEEP, NF1),
 
 	/* E1  : EMR_RESET_L ==> NC */
 	PAD_NC(GPP_E1, NONE),
@@ -47,6 +53,8 @@
 	PAD_NC(GPP_E5, NONE),
 	/* E10 : GPP_E10/SML_DATA0 ==> NC */
 	PAD_NC(GPP_E10, NONE),
+	/* E11 : AP_I2C_SUB_INT_ODL */
+	PAD_CFG_GPI_APIC(GPP_E11, NONE, PLTRST, LEVEL, NONE),
 
 	/* G0  : SD_CMD ==> NC */
 	PAD_NC(GPP_G0, NONE),
diff --git a/src/mainboard/google/dedede/variants/beadrix/overridetree.cb b/src/mainboard/google/dedede/variants/beadrix/overridetree.cb
index f3f5d56..2c82fa5 100644
--- a/src/mainboard/google/dedede/variants/beadrix/overridetree.cb
+++ b/src/mainboard/google/dedede/variants/beadrix/overridetree.cb
@@ -14,10 +14,11 @@
 	#|                   | for TPM communication     |
 	#|                   | before memory is up       |
 	#| I2C0              | Trackpad                  |
-	#| I2C1              | Digitizer                 |
+	#| I2C1              |                           |
 	#| I2C2              | Touchscreen               |
-	#| I2C3              | Camera                    |
+	#| I2C3              |                           |
 	#| I2C4              | Audio                     |
+	#| I2C5              | P-sensor                  |
 	#+-------------------+---------------------------+
 	register "common_soc_config" = "{
 		.gspi[0] = {
@@ -39,6 +40,18 @@
 		.i2c[4] = {
 			.speed = I2C_SPEED_FAST,
 		},
+		.i2c[5] = {
+			.speed = I2C_SPEED_FAST,
+		},
+	}"
+
+	register "SerialIoI2cMode" = "{
+		[PchSerialIoIndexI2C0]  = PchSerialIoPci,
+		[PchSerialIoIndexI2C1]  = PchSerialIoDisabled,
+		[PchSerialIoIndexI2C2]  = PchSerialIoPci,
+		[PchSerialIoIndexI2C3]  = PchSerialIoDisabled,
+		[PchSerialIoIndexI2C4]  = PchSerialIoPci,
+		[PchSerialIoIndexI2C5]  = PchSerialIoPci,
 	}"
 
 	device domain 0 on
@@ -131,6 +144,60 @@
 				device i2c 1a on end
 			end
 		end # I2C 4
+		device pci 19.1 on
+			chip drivers/i2c/sx9324
+				register "desc" = ""SAR Proximity Sensor""
+				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_E11_IRQ)"
+				register "uid" = "0"
+				register "reg_gnrl_ctrl0" = "0x0a"
+				register "reg_gnrl_ctrl1" = "0x22"
+				register "reg_afe_ctrl0" = "0x20"
+				register "reg_afe_ctrl3" = "0x01"
+				register "reg_afe_ctrl4" = "0x47"
+				register "reg_afe_ctrl6" = "0x00"
+				register "reg_afe_ctrl7" = "0x47"
+				register "reg_afe_ctrl8" = "0x12"
+				register "reg_afe_ctrl9" = "0x0f"
+				register "reg_afe_ph0" = "0x37"
+				register "reg_afe_ph1" = "0x29"
+				register "reg_afe_ph2" = "0x1f"
+				register "reg_afe_ph3" = "0x3d"
+				register "reg_prox_ctrl0" = "0x0b"
+				register "reg_prox_ctrl1" = "0x0b"
+				register "reg_prox_ctrl2" = "0x20"
+				register "reg_prox_ctrl3" = "0x20"
+				register "reg_prox_ctrl4" = "0x0c"
+				register "reg_prox_ctrl5" = "0x00"
+				register "reg_prox_ctrl6" = "0x2d"
+				register "reg_prox_ctrl7" = "0xc0"
+				register "reg_adv_ctrl0" = "0x00"
+				register "reg_adv_ctrl1" = "0x00"
+				register "reg_adv_ctrl2" = "0x00"
+				register "reg_adv_ctrl3" = "0x00"
+				register "reg_adv_ctrl4" = "0x00"
+				register "reg_adv_ctrl5" = "0x05"
+				register "reg_adv_ctrl6" = "0x00"
+				register "reg_adv_ctrl7" = "0x00"
+				register "reg_adv_ctrl8" = "0x00"
+				register "reg_adv_ctrl9" = "0x00"
+				register "reg_adv_ctrl10" = "0x00"
+				register "reg_adv_ctrl11" = "0x00"
+				register "reg_adv_ctrl12" = "0x00"
+				register "reg_adv_ctrl13" = "0x00"
+				register "reg_adv_ctrl14" = "0x80"
+				register "reg_adv_ctrl15" = "0x0c"
+				register "reg_adv_ctrl16" = "0x04"
+				register "reg_adv_ctrl17" = "0x70"
+				register "reg_adv_ctrl18" = "0x40"
+				register "reg_adv_ctrl19" = "0x00"
+				register "reg_adv_ctrl20" = "0x00"
+				register "reg_irq_msk" = "0x6f"
+				register "reg_irq_cfg0" = "0x00"
+				register "reg_irq_cfg1" = "0x80"
+				register "reg_irq_cfg2" = "0x00"
+				device i2c 28 on end
+			end
+		end # I2C 5
 		device pci 1c.6 off end # PCI Express Root Port 7 / SATA_0. Baseboard/devicetree.cb is off
 		device pci 1c.7 off end # PCI Express Root Port 8 / SATA_1
 		device pci 1f.3 on