Google Pixel C (google-smaug)

__TOC__
== Contributors ==
* jja2000
* Jenneron
== Users owning this device ==
== How to enter flash mode ==
==== fastboot ====
When turned off press and hold the power button and volume down until the bootloader menu displays. Using the volume button select "Switch to fastboot mode" and press the power button.
==== APX ====
There seems to be no key combination for entering APX mode. Use these commands instead:
$ pmbootstrap initfs hook_add apx
$ pmbootstrap flasher flash_kernel
This will cause device entering APX on boot
== Installation ==
=== Installation keeping Android partition table (easy way) ===
$ pmbootstrap init
$ pmbootstrap install --no-cgpt
Then in fastboot mode:
$ pmbootstrap flasher flash_kernel
$ pmbootstrap flasher flash_rootfs
=== Installation with repartition and booting from USB (recommended way) ===
==== Enable booting from USB ====
On PC:
$ wget https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_15183.78.0_trogdor_recovery_stable-channel_mp-v7.bin.zip
$ unzip chromeos_15183.78.0_trogdor_recovery_stable-channel_mp-v7.bin.zip
$ sudo losetup -Pf chromeos_15183.78.0_trogdor_recovery_stable-channel_mp-v7.bin
$ sudo cp $(findfs LABEL=ROOT-A) recovery.img
$ adb push recovery.img /sdcard/recovery.img
On device in adb shell:
$ su # assuming you have root
# cd /sdcard
# mkdir rootdir
# losetup /dev/block/loop0 recovery.img # this may throw an error, but still pass. check blkid command, make sure there is /dev/block/loop0 in the output
# mount -o ro -t ext4 /dev/block/loop0 rootdir
# cd rootdir
# mount -t sysfs /sys sys
# mount -t proc /proc proc
# mount -o bind /dev dev
# mount -t tmpfs -o size=100M tmpfs tmp # for flashrom to avoid read-only fs
# mount -t tmpfs -o size=100M tmpfs run # for crossystem to avoid read-only fs
# mkdir run/lock # crossystem will create /run/lock/crossystem.lock there
# chroot . /bin/bash
# export PATH="$PATH:/usr/sbin:/bin"
# ln -s /dev/mtd/mtd0 /dev/mtd0 # this is needed for crossystem to work with downstream SPI flash driver
# crossystem dev_boot_usb=1 dev_boot_signed_only=0 # this command enables booting from USB
Everything else is the same to Chrome OS devices except that we don't have prebuilt images yet.
==== Installation to USB storage ====
Use these commands:
$ pmbootstrap init # select google-smaug
$ pmbootstrap install --sdcard /dev/sdX # replace /dev/sdX with your storage
You can boot from USB with pressing + in bootloader.
==== Installation to eMMC ====
==== Mainline Kernel Status ====
Table of components in the device
Component 	Model 	Mainline kernel driver 	Notes
USB-C 	- 	Yes 	Working in kernel (Only Host mode, see cros-ec)
eMMC 	- 	Yes 	Working in kernel
Battery/Charger 	Texas Instruments BQ27742 	Yes 	Working in kernel (uses cros-ec-i2c-tunnel)
SoC/General PMIC 	Maxim MAX77620 	Yes 	Working in kernel
Volume/Power/Home keys 	GPIO 	Yes 	Working in kernel
Keyboard Detection 	GPIO 	Yes 	Working in kernel, needs script to automatically connect to BT device
cros-ec:‎- Accelerometer‎- Ambient Light Sensor- Lightbar- USB Connector (alerts tegra-xusb/-xudc when modeswitching)	- Bosch BMI160- Silicon Labs Si114x- Included in platform driver- cros-ec-typec	Yes, but see notes 	cros-ec-i2c (the platformdriver) broke for the Pixel C somewhere inbetween 4.14 and 4.19, needs bisection with UART, none of the mentioned components work
Temperature Sensor 	Texas Instruments TMP451 	Yes 	Working in kernel fork
Display 	JDI LPM102A188A 	Yes 	Working in kernel
Backlight IC 	Texas Instruments LP8557 	Yes 	Working in kernel
Audio 	- NAU8825 (3.5mm)- RT5677- MAX98357A (Speaker) 	- No, misses tegra specific driver- Yes- No, misses tegra specific driver	Needs Tegra specific sound drivers
Touch Screen 	i2c-hid 	Yes 	Working in kernel fork
GPU 	Nvidia GM20b 	Yes 	Loads DE's with the latest mesa, crashes a lot and is not performant. Needs patches or nvk in the future.
GPU PMIC 	Maxim MAX77621 	Yes 	Working in kernel
Wi-Fi 	Broadcom BCM4354 	Yes 	Working in kernel
Bluetooth 	Broadcom BCM43540 	Yes 	Working in kernel
Front camera 	Sony IMX208 	Yes 	Needs tegravi and nvenc, untested
Main camera 	Sony IMX219 	Yes 	Needs tegravi and nvenc, untested
Lens actuator (autofocus) 	Analog Devices AD5823 	No 	Erroneously added to AD5820 driver, doesn't work, got dropped
TPM 	Infineon SLB9645TT 	Yes 	Untested
SPI Flash Chip 	W25Q64FW/W25Q128FW 	Yes 	Untested, contains Coreboot