Qualcomm SOC Mainlining Project

Here is some information about the Qualcomm SOC mainlining project.

[ this page is currently a stub ]

Project List
List of items that need to be mainlined, or are "in flight" (as of June, 2014):


 * regulators - Josh Cartwright?, Bjorn Andersson?
 * clocks - Stephen Boyd
 * RPM
 * SD Card Controller - Srinivas Kandagatla
 * 8084 clock controller - Georgi Djakov
 * dma engine - Andy Gross
 * SOC-specific
 * 8084
 * 8974
 * SOC DT file? - Kumar Gala?
 * USB support
 * USB host mode for HS port - Tim Bird
 * dwc3 (superspeed) USB driver
 * spmi - ??

Project Table
This might be too time-consuming to maintain?

[ add links to most recently posted patches] [ add person who is working on each part ]

Specific Hardware

 * 8074 (Dragonboard/APQ8074)
 * 8064 (Dragonboard/IFC6410, Dragonboard/SYS6440)

IP blocks on the 8974

 * KRAIT - arm processor - (DONE) - Lina
 * SAW - SPM AVS wrapper - adaptive wakup, sleep, voltage
 * AVS - adaptive voltage scaler
 * SPM - subsystem power manager - (not done) - Lina
 * RPM - Resource power manager - regulator voting thingy - (in progress) - Bjorn, AGross
 * PM8941 - power management IC (PMIC) - see sub-parts for status
 * WLED - (DONE??) - Courtney - v3 on lkml Bjorn
 * PWM - pulse width modulator outputs - (in progress) - Courtney
 * LPG - (RGB LEDS) - (in progress) - Courtney
 * VIB - vibrator drivers
 * GPIO - (DONE)
 * MPP - (DONE)
 * Charger - (in progress) - Courtney, Bjorn
 * IADC - (DONE)
 * BMS - battery monitoring system (not done)
 * PON - power on thingy - (in progress) - Bjorn
 * RTC - realtime clock - (DONE)
 * coincell - (not done)
 * regulators - (in progress) (see RPM) - Bjorn, AGross
 * PMIC clocks - (not done)
 * VADC - (in progress) - Ivan
 * PM8841 - analog regulators - (not done)
 * MODEM - (not done) (but see RemoteProc)
 * TLMM - top level mode manager (DONE)
 * PINCTRL - (DONE)
 * QUP - configurable serial blocks
 * I2C - (DONE)
 * SPI - (DONE)
 * BLSP - UART - (DONE) (could use high speed improvements)
 * SDHCI - SD Card/emmc/EMMC controller - (DONE - but needs regulator for HPM mode) - Bjorn
 * GCC - global clocks - (DONE)
 * MMCC - multimedia clocks - (DONE)
 * LCC - LPASS (audio) clocks - (DONE)
 * LPASS - Audio - (not done) - some 3rd party??
 * MDP - 2d display stuff - (DONE) - Rob
 * SATA - (DONE)
 * DSP - (in progress) - Bjorn - (see ??? RemoteProc??) - can send audio via slimbus, and handles sensor stuff
 * SPMI - (DONE)
 * QGIC - interrupt controller - (DONE)
 * MPM - power manager - (not done)
 * OCMEM - multimedia memory = (not done)
 * USB 2.0 controller - chipidea - (Done, but needs more) - Tim
 * USB 2.0 PHY - (DONE, but needs more) - Tim - needs regulator support
 * HSIC PHY - (not done)
 * USB 3.0 PHY - (not done)
 * USB 3.0 controller - dwc3 - (not done)
 * slimbus - peripheral bus - (not done)
 * MI2S - multi-channel audio - (not done) - Kenneth?
 * I2S - sound thingy - (not done)
 * QCRYPTO - (DONE)
 * PRND - random number generator - (DONE)
 * RIVA - radio controller - (Done, but needs major rewrite)
 * HDMI - (DONE)
 * DSI - (not done)
 * eDP - display port - (not done)
 * VENUS - video codec thingy - (not done)
 * VFE - video front end - (not done)
 * VPE - video processing engine - (not done)
 * CSI - camera high speed serial interface (mipi spec) - (not done)
 * CCI - camera i2c interface (mipi spec) - (not done)
 * TCSR - (not done)
 * hardware mutex - hwspinlock - (in progress) - Bjorn - maintainer is Ohad Ben-Cohen
 * hwspinlock DT support - (in progress) - Suman Ana - maintainer is Ohad Ben-Cohen
 * halt control
 * QFPROM - fuses - (not done)
 * BAM - dma stuff - (DONE - but missing utilization by individual drivers)
 * TSENSE - thermal sensing - (not done)

Features
Here is a list of features (related to IP blocks) for an 8974 processor:
 * charger (see charger IP block) - Courtney
 * regulators (depends on RPM) - Bjorn
 * remoteproc-tz - loading firmware through trustzone
 * USB 2.0 gadget - (DONE - but needs regulators) - Tim
 * USB 2.0 host - (not done)
 * USB 2.0 OTG - (in progress) - Tim
 * SMEM - provides an inter-processor heap - (in progress) - Bjorn
 * SMD - inter-processor ring buffers - (in-progress) - Bjorn
 * SMP2P - interprocessor state signaling - (in progress) - Bjorn
 * SMSM - interprocessor state signaling - (in progress) - Bjorn
 * Bluetooth
 * FM radio
 * WiFi - wcn36xx - (in progress) - Bjorn
 * MHL
 * NFC
 * Vibrator
 * Audio Codec
 * IRDA
 * irq_read_line - (in progress) - Marc Zyngier - (waiting for Thomas Gleixner ack)
 * ipcrouter - (in progress) - Courtney

Dependencies
Dependencies: '->' = "depends on"
 * Regulators -> RPM -> SMD -> SMEM -> tcsr-mutex
 * SMP2P -> SMEM
 * SMSM -> SMEM
 * SMD -> SMEM -> tcsr-mutex
 * DSI -> regulators -> RPM -> SMD -> SMEM -> tcsr-mutex
 * USB 2.0 controller -> charger PMIC ID -> irq_read_line
 * USB 2.0 phy -> regulators -> RPM -> SMD -> SMEM -> tcsr-mutex
 * USB 2.0 controller -> charger OTG switch -> charger
 * charger -> irq_read_line

mailing list

 * Web site: http://vger.kernel.org/vger-lists.html#linux-arm-msm
 * subscribe or unsubscribe via e-mail, by following links on the above page
 * Archives
 * mail-archive.com: https://www.mail-archive.com/linux-arm-msm@vger.kernel.org/
 * gmain: http://dir.gmane.org/gmane.linux.ports.arm.msm

IRC channel

 * Server: freenode (chat.freenode.net)
 * Channel ##linux-msm
 * Link: http://webchat.freenode.net/

You can access the IRC channel from inside a corporate firewall using the web interface.

git trees

 * git trees:
 * Sony github integration ("next") tree: https://github.com/andersson/kernel/tree/next
 * Sony maintains this tree by keeping patch sets for individual technology areas or features in separate git branches. We have an internal tool called 'splash', that is used to integrate the separate branches into a single integration branch (the "next" branch).  This tool is available upon request, if you want to use the same workflow as Sony.
 * Code Aurora git trees: https://www.codeaurora.org/cgit/quic/kernel
 * Linaro Qualcomm integration tree: https://git.linaro.org/landing-teams/working/qualcomm/kernel.git/shortlog/refs/heads/integration-linux-qcomlt

Other resources

 * Linaro patch queue for msm (??): https://patches.linaro.org/project/linux-arm-msm/
 * Linaro mainline patch queue: https://patches.linaro.org/team/linaro-landing-team-qualcomm/

Stakeholders
This is a list of parties who are (or should be) interested in the progress of this work:
 * Qualcomm
 * Code Aurora Forum
 * Linaro
 * Qualcomm Innovation Center
 * Sony
 * Samsung
 * LG
 * HTC
 * Lenovo/Motorola
 * Xiaomi

Table of phones, processors and download sites
For links to different download sites, see Phones Processors and Download Sites

Status
[Figure out a metric for what remains to be done]
 * brainstorming ideas for metric to measure:
 * # of features out of tree (should be going down)
 * size of diff between latest msm tree and server it was based on? (should be going down)
 * linaro uses patch queue length (outstanding vs. already mainlined)