GOOGLE NEXUS 5X & 6P MAINLINING EFFORT JEREMY MCNICOLL - - PowerPoint PPT Presentation

google nexus 5x 6p mainlining effort jeremy mcnicoll
SMART_READER_LITE
LIVE PREVIEW

GOOGLE NEXUS 5X & 6P MAINLINING EFFORT JEREMY MCNICOLL - - PowerPoint PPT Presentation

GOOGLE NEXUS 5X & 6P MAINLINING EFFORT JEREMY MCNICOLL JEREMYMC@REDHAT.COM $> WHOAMI 2 Jeremy McNicoll Nexus Mainline Effort 3 Jeremy McNicoll Nexus Mainline Effort WHY? 4 Jeremy McNicoll Nexus Mainline Effort NEXUS 5X


slide-1
SLIDE 1

GOOGLE NEXUS 5X & 6P MAINLINING EFFORT JEREMY MCNICOLL

JEREMYMC@REDHAT.COM

slide-2
SLIDE 2

$> WHOAMI

Jeremy McNicoll – Nexus Mainline Effort 2

slide-3
SLIDE 3

Jeremy McNicoll – Nexus Mainline Effort 3

slide-4
SLIDE 4

WHY?

Jeremy McNicoll – Nexus Mainline Effort 4

slide-5
SLIDE 5

NEXUS 5X SPECS

Jeremy McNicoll – Nexus Mainline Effort 5

slide-6
SLIDE 6

NEXUS 6P SPECS

Jeremy McNicoll – Nexus Mainline Effort 6

slide-7
SLIDE 7

Jeremy McNicoll – Nexus Mainline Effort 7

TERMINOLOGY

  • Nexus 5X çèMSM8992 çè Snapdragon 808
  • Nexus 6P çèMSM8994 çè Snapdragon 810
  • MSM == Mobile Station Modem
  • Linaro Integration branch
  • Downstream
  • Msm 3.10
  • Msm 3.18
slide-8
SLIDE 8

THE BEGINNING…

Jeremy McNicoll – Nexus Mainline Effort 8

slide-9
SLIDE 9

Jeremy McNicoll – Nexus Mainline Effort 9

ELC 2016 – SAN DIEGO

  • Mainline support of Nexus 5X ?
  • Downstream working
  • Community help / assistance
slide-10
SLIDE 10

Jeremy McNicoll – Nexus Mainline Effort 10

DEBUG CABLE

slide-11
SLIDE 11

Jeremy McNicoll – Nexus Mainline Effort 11

WHAT’S WORKING?

  • Single CPU
  • INITRD / RAMDISK
  • Debug Serial
  • Global Clocks
  • SDHCI / MMC / onboard storage
  • Pinctrl
  • Bluetooth (WIP)
slide-12
SLIDE 12

Where can I get this cool new hotness?!?

MAINLINE STATUS

$ ¡git ¡tag ¡-­‑-­‑contains ¡a77a713395392a ¡ ¡ v4.10-­‑rc1 ¡ v4.10-­‑rc2 ¡ v4.10-­‑rc3 ¡ v4.10-­‑rc4 ¡ v4.10-­‑rc5 ¡ v4.10-­‑rc6 ¡

Jeremy McNicoll – Nexus Mainline Effort 12

slide-13
SLIDE 13

UPDATING CLOCKS

Jeremy McNicoll – Nexus Mainline Effort 13

Where are the values hiding? (mainline) ¡drivers/clk/qcom/gcc-­‑msm8916.c ¡

(downstream) ¡drivers/clk/qcom/clock-­‑gcc-­‑8916.c ¡

slide-14
SLIDE 14

UPDATING CLOCKS

Jeremy McNicoll – Nexus Mainline Effort 14

Where are the values hiding? (downstream) ¡drivers/clk/qcom/clock-­‑gcc-­‑8992.c ¡ (Mainline) ¡drivers/clk/qcom/gcc-­‑msm8996.c ¡

slide-15
SLIDE 15

UPDATING CLOCKS

Jeremy McNicoll – Nexus Mainline Effort 15

Downstream ¡vs ¡Upstream ¡? ¡

continued…

slide-16
SLIDE 16

LESSONS LEARN

Jeremy McNicoll – Nexus Mainline Effort 16

slide-17
SLIDE 17

Tips and tricks for those brave enough to repeat this!!

Jeremy McNicoll – Nexus Mainline Effort 17

LESSONS LEARNED

  • Get things sent upstream ASAP (3.10 vs 4.5)
  • Don’t take on too much
  • Keep your goals small and attainable
  • Cheerleaders are helpful
  • Don’t just focus on getting X lines committed into the kernel. Helping others and

the community is greatly appreciated and goes a long way.

  • Community is not big bad and scary. People are quite cooperative / helpful if you

play nice and are not an A$$H0l3

slide-18
SLIDE 18

NEXT SUBSYSTEM?

Jeremy McNicoll – Nexus Mainline Effort 18

slide-19
SLIDE 19

Jeremy McNicoll – Nexus Mainline Effort 19

SUBSYSTEM SELECTION?

  • SDHCI done
  • Screen / graphics 418 & 430 via Freedreno
  • USB (good candidate)
  • WIFI
  • I2C
  • SPI
  • Modem
  • Sound
  • Camera
  • Others…… ?
slide-20
SLIDE 20

BLUETOOTH

(WIP…)

Jeremy McNicoll – Nexus Mainline Effort 20

slide-21
SLIDE 21

Jeremy McNicoll – Nexus Mainline Effort 21

Downstream investigation

BLUETOOTH

  • Qualcomm ¡QCA6174 ¡802.11ac ¡Wi-­‑Fi ¡2x2 ¡MIMO ¡Combo ¡SoC ¡
  • PyHS0 ¡at ¡MMIO ¡0xf995e000 ¡(irq ¡= ¡146) ¡is ¡a ¡MSM ¡HS ¡UART ¡ ¡
  • Sequence ¡of ¡events: ¡
  • 1. Enable ¡BT ¡via ¡GPIO ¡(drivers/bluetooth/bluetooth-­‑power.c) ¡
  • 2. Send ¡reset ¡(HCI_RESET ¡ ¡0x0C03) ¡to ¡/dev/PyHS0 ¡ ¡
  • 3. Communica_on ¡starts…. ¡
slide-22
SLIDE 22

Jeremy McNicoll – Nexus Mainline Effort 22

Modifications for upstream

BLUETOOTH

  • PCIe ¡clocks ¡ ¡
  • PCIe ¡PHY ¡clocks ¡
  • PHY ¡QMP ¡not ¡upstream ¡
  • PCIe ¡QCA6174 ¡supported ¡via ¡ath10k ¡driver ¡
  • Use ¡latest ¡ath10k ¡on ¡3.10 ¡using ¡backports ¡
  • RPM ¡SMD ¡
  • Luser ¡space ¡with ¡Bluez ¡and ¡firmware ¡
slide-23
SLIDE 23

Jeremy McNicoll – Nexus Mainline Effort 23

slide-24
SLIDE 24

WISH LIST / TODO LIST / HELP LIST

Jeremy McNicoll – Nexus Mainline Effort 24

GETTING INVOLVED!

  • RAMDISK / InitRD > 2.1 MB booting
  • Subsystem volunteers
  • Hardware (Cables & Phones)
  • Preconfigured VM to build AOSP?
  • Help Jeremy investigate various subsystems downstream
  • Kernel newbie
  • Documentation published or subset
slide-25
SLIDE 25
  • IRC: Freenode ##linux-msm (yes, there are 2 #’s)
  • Mailing lists: linux-arm-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org
  • Git Repo’s
  • MSM kernel 3.14 --> https://us.codeaurora.org/cgit/quic/la/kernel/msm-3.14/
  • MSM kernel 3.18 --> https://us.codeaurora.org/cgit/quic/la/kernel/msm-3.18/
  • Linaro http://git.linaro.org/landing-teams/working/qualcomm/kernel.git
  • Initial Nexus mainline patches (http://lists.infradead.org/pipermail/linux-arm-kernel/2016-

July/442069.html)

  • http://source.android.com/source/building-kernels.html
  • iFixit Teardown: https://www.ifixit.com/Teardown/Nexus+5X+Teardown/51318

Jeremy McNicoll – Nexus Mainline Effort 25

LINKS AND REFERENCES

slide-26
SLIDE 26
  • Dissecting the QCOM 1.7M line fork (https://youtu.be/JnGL85SglbA)
  • Debug Cable:
  • http://people.redhat.com/jmcnicol/nexus_debug/
  • https://android.googlesource.com/device/google/debugcable/+/master

Jeremy McNicoll – Nexus Mainline Effort 26

LINKS AND REFERENCES – PART 2

slide-27
SLIDE 27

THANK YOU

Jeremy McNicoll – Nexus Mainline Effort 27

slide-28
SLIDE 28

QUESTIONS & OPEN DISCUSSION

Jeremy McNicoll – Nexus Mainline Effort 28