25
Mainlining
emeric edited this page 2026-10-18 20:21:55 +02:00
Table of contents
Overview
- WLAN works
- Display works
- Torch/flashlight works
Open
diff --git a/arch/arm64/boot/dts/vendor/qcom/yupik-iot-idp-pm7250b-overlay.dts b/arch/arm64/boot/dts/vendor/qcom/yupik-iot-idp-pm7250b-overlay.dts
index 82336601fcdd..32232b34c5cf 100644
--- a/arch/arm64/boot/dts/vendor/qcom/yupik-iot-idp-pm7250b-overlay.dts
+++ b/arch/arm64/boot/dts/vendor/qcom/yupik-iot-idp-pm7250b-overlay.dts
@@ -4,8 +4,8 @@
#include "yupik-iot-idp-pm7250b.dtsi"
/ {
- model = "Qualcomm Technologies, Inc. Yupik IOT IDP + PM7250B";
- compatible = "qcom,yupik-iot-idp", "qcom,yupik-iot", "qcom,idp";
+ model = "SHIFT SHIFTphone 8";
+ compatible = "shift,otter", "qcom,yupik-iot-idp", "qcom,yupik-iot", "qcom,idp";
qcom,msm-id = <497 0x10000>, <575 0x10000>, <576 0x10000>;
qcom,board-id = <34 0>;
};
Audioo
- Capture
amixer-c 0 cset name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1
amixer-c 0 cset name='VA DEC0 MUX' 'VA_DMIC'
amixer-c 0 cset name='VA DMIC MUX0' DMIC0
amixer-c 0 cset name='VA_AIF1_CAP Mixer DEC0' on
arecord-D hw:0,1 -f S16_LE -r 48000 -c 1 -d 10 /tmp/va_dmic0.wav
- ADSP
- Test:
cat /sys/kernel/debug/remoteproc/remoteproc*/state
- Test:
- TAS2563
- Add:
&i2c4node - Test:
i2cdetect -y 4,dmesg(firmware error expected)
- Add:
- Firmware binary
bsdtar xf ~/Downloads/SHIFTPHONE_8.SOS.7.1.L-RELEASE-LIGHT-20260710-OTA.zip -O payload.bin | dd bs=1 skip=964203097 count=548720 | unxz | dd bs=1 skip=1941504 count=27375 > tas2563_coef.bin bsdtar xf ~/Downloads/SHIFTPHONE_8.SOS.7.1.L-RELEASE-LIGHT-20260710-OTA.zip -O payload.bin | dd bs=1 skip=964203097 count=548720 | unxz | dd bs=1 skip=1970176 count=2184 > tas2563RCA2.bin sudo mv tas*.bin /lib/firmware
Missing parts
tas2563.binfor left and right speakers
sudo cp tas2563-2amp-reg.bin /lib/firmware/tas2563RCA2.bin
sudo cp tas2563-2amp-dsp.bin /lib/firmware/tas2563_coef.bin
amixer -c 0 cset name='QUIN_MI2S_RX Audio Mixer MultiMedia1' 1
amixer -c 0 cset name="Speaker Profile Id" 1
amixer -c 0 cset name='Speaker Config Id' 0
amixer -c 0 cset name="Activate Tasdevice Num" 1
speaker-test -D sysdefault -t sine -c 2 -l 1
# Working sine with
amixer -D hw:0 cset name='PRI_MI2S_RX Audio Mixer MultiMedia1' 1
amixer -c 0 cset name="Speaker Profile Id" 5
speaker-test -D hw:0,0 -t sine -c 2
- UCM2
sudo mkdir /usr/share/alsa/ucm2/S8
sudo tee /usr/share/alsa/ucm2/S8/S8.conf <<'EOF'
Syntax 2
SectionDefaults [
cset "name='PRI_MI2S_RX Audio Mixer MultiMedia1' 1"
cset "name='PRI_MI2S_RX Audio Mixer MultiMedia2' 1"
cset "name='PRI_MI2S_RX Audio Mixer MultiMedia3' 1"
]
SectionUseCase."HiFi" {
File "HiFi.conf"
Comment "HiFi"
}
EOF
sudo tee /usr/share/alsa/ucm2/S8/HiFi.conf <<'EOF'
SectionVerb {
EnableSequence [
cset "name='PRI_MI2S_RX Audio Mixer MultiMedia1' 1"
cset "name='Speaker Profile Id' 5"
]
DisableSequence [
cset "name='PRI_MI2S_RX Audio Mixer MultiMedia1' 0"
]
Value {
PlaybackPCM "hw:0,0"
TQ "HiFi"
}
}
SectionDevice."Speaker" {
Comment "Built-in Speakers"
Value {
PlaybackChannels 2
PlaybackPCM "hw:0,0"
PlaybackVolume "Speaker Digital Volume"
}
}
EOF
sudo tee /usr/share/wireplumber/wireplumber.conf.d/52-otter.conf <<'EOF'
monitor.alsa.rules = [
{
matches = [
{ device.name = "alsa_card.platform-sound" }
]
actions = {
update-props = {
api.alsa.use-acp = true
api.alsa.split-enable = false
}
}
}
]
EOF
But that still doesn't work because the routing is not up by the time pipewire is started.
sudo mkdir -p /usr/local/sbin/
sudo tee /usr/local/sbin/otter-audio-init << 'EOF'
#!/bin/sh
exec >> /var/log/otter-audio-init.log 2>&1
echo "$(date): starting"
/usr/sbin/amixer -c 0 cset name='PRI_MI2S_RX Audio Mixer MultiMedia1' 1
/usr/sbin/amixer -c 0 cset name='PRI_MI2S_RX Audio Mixer MultiMedia2' 1
/usr/sbin/amixer -c 0 cset name='PRI_MI2S_RX Audio Mixer MultiMedia3' 1
/usr/sbin/amixer -c 0 cset name='Speaker Profile Id' 5
echo "$(date): done"
EOF
sudo chmod +x /usr/local/sbin/otter-audio-init
sudo tee /etc/udev/rules.d/90-otter-audio.rules << 'EOF'
SUBSYSTEM=="sound", ACTION=="add", KERNEL=="controlC0", ATTRS{id}=="S8", RUN+="/usr/local/sbin/otter-audio-init"
EOF
- LPASS macros
- Add: qcs6490-audioreach
- Test:
ls /sys/bus/platform/drivers/lpass-*-macro/
- SoundWire buses
- Add: swr0/swr1 + LPI pinctrl
- Test:
ls /sys/bus/soundwire/devices/
- WCD9385
- Add:
wcd9385codec node + reset GPIO pinctrl +wcd_rx/wcd_txslave nodes. - Test:
dmesg | grep -i wcd938;ls /sys/bus/soundwire/devices/sdw:*
- Add:
- Sound card (input)
- Test:
dmesg(ASoC, snd_soc_register_card, otter-sndcard);cat /proc/asound/cards
- Test: