Nicki: mainlining progress
Following #154 (closed) I decided to open an issue on GitLab where I will describe the progress on running mainline kernel on sony-nicki.
As a starting point I used a msm8930 port that @flto kindly sent me some time ago, it only required some defconfig changes and DTS adjustments to make it boot to initramfs. Actually it used to boot to userland back when 4.17 was the newest release, but I forgot to push my changes to git, bad things happened and now I'm yet to discover what's the missing part to make it allow me to connect via ssh.
Status as of 31.1.2019
-
Boots to initramfs / debug-shell
-
To make it expose a network interface you need to power it on via connecting USB for some reason which probably makes charging screen to load and therefore no ssh access (Connection refused)
-
Getting
dmesg
is possible in debug-shell, here is one -
I should probably fix voltages in DTS with correct ones taken from downstream kernel
-
Display backlight works, but the display itself doesn't
-
Charger is.. a mystery, it should work in theory but I'm unsure
-
Defconfig (nicki_defconfig / xnicki_defconfig [i keep two of these just because]) has to be fixed too I think
-
There is no cpufreq driver as far as I'm aware
-
I included a
new_kernel.sh
script (with hardcoded paths for my folders, oops) in my repo to somewhat automate-ish making the boot.img (looking these commands up every time was annoying) -
Vibrator works (
fftest
) and power button is recognized (pmic8xxx_pwrkey inevtest
also/dev/input/event1
) -
maximum-attention
hook makes screen flash -
I don't think this device has UART pins to get serial output because the board AND the downstream kernel was made by FIH rather than Sony
Todo (in no particular order)
Main problems to solve
-
Boot with power button -
SSH access -
Fix and cleanup the DTS -
IOMMU/SMMU -
RPM -
CPUfreq -
GPIO -
IRQ -
CMA -
Remove / reuse nodes from L625 dts -
Thermal zones / throttling
-
Usability
-
100% working USB and charger -
Device <----> PC charging -
Device <----> Wall charger charging -
Battery percentage / voltage read -
USB OTG
-
-
Touch -
Calibration -
Adjust deviceinfo
-
-
Buttons -
Power button -
Vol+ / Vol- -
Camera / camera focus
-
-
Audio (WCD9304???) -
Minijack output -
Volume control -
Microphone(s) -
Front speaker -
Loudspeaker (on the back)
-
-
Display -
Backlight -
Panel
-
-
Wi-fi (wcn3660???) -
WPS and stuff like this
-
-
RIL -
SIM recognition -
2G / 3G signal -
Cellular data -
Calls -
SMS
-
Performance
-
Freedreno -
Compiler optimisations -
Figure out correct CFLAGS to optimise performance -
Play around with different toolchains (gcc, linaro, qcom (yikes))
-
-
Remove redundant options from defconfig
Misc
-
Sensors -
BMA250 (accel) -
CM36283 (proximity and ambient light) -
BMM050 (magnetometer or something?) -
[insert a list of sensors]
-
-
SD Card (untested) -
PN544 I2C NFC
Polish off the port
-
Camera(s) (my device has a HW-broken front cam) -
Back cam (SONY IMX something something, part number 475NIK0210A) -
Front cam -
Recording -
Correct resolutions
-
-
Package for pmos / merge into linux-postmarket / maybe even submit to mainline one day? -
Update linux-sony-nicki
anddevice-sony-nicki
-
Submit as a PR here -
Mail it in to papa Linus
-
Call for help
I'm not a kernel developer, in fact I just recently started playing around with Linux kernel and stuff, and would really appreciate any help and/or tips that more experienced people could give me. Also big thanks to @bartcubbins for helping me out.
Links
4.X Asus Nexus 7 flo repo that contains some a3xx freedreno related commits