Difference between revisions of "Qualcomm SOC Mainlining Project"

From eLinux.org
Jump to: navigation, search
(IP blocks on the 8974)
(29 intermediate revisions by 2 users not shown)
Line 60: Line 60:
 
* 8074 ([[Dragonboard/APQ8074]])
 
* 8074 ([[Dragonboard/APQ8074]])
 
* 8064 ([[Dragonboard/IFC6410]], [[Dragonboard/SYS6440]])
 
* 8064 ([[Dragonboard/IFC6410]], [[Dragonboard/SYS6440]])
 +
 +
=== IP blocks on the 8974 ===
 +
* KRAIT - arm processor - '''(DONE)'''
 +
* SAW - SPM AVS wrapper - adaptive wakup, sleep, voltage
 +
** AVS - adaptive voltage scaler
 +
** SPM - subsystem power manager - '''(DONE)'''
 +
* RPM - Resource power manager - regulator voting thingy - '''(in progress)''' - ''Bjorn, AGross''
 +
* PM8941 - power management IC (PMIC) - see sub-parts for status
 +
** WLED - '''(DONE)''' - ''Courtney''
 +
** 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 - '''(DONE)'''
 +
** RTC - realtime clock - '''(DONE)'''
 +
** coincell - '''(in progress)''' - ''Tim''
 +
** regulators - '''(in progress)''' (see RPM) - ''Bjorn, AGross''
 +
** PMIC clocks - '''(not done)'''
 +
** VADC - '''(DONE?)''' - ''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 - '''(DONE)'''
 +
*** hwspinlock DT support - '''(DONE)'''
 +
** halt control
 +
* QFPROM - fuses - '''(not done)'''
 +
* BAM - dma stuff - '''(DONE - but missing utilization by individual drivers)'''
 +
* TSENSE - thermal sensing - '''(in progress)'''
 +
 +
==== 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 - '''(DONE)'''
 +
* 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
  
 
== Resources ==
 
== Resources ==
Line 100: Line 205:
 
* Xiaomi
 
* Xiaomi
  
Here is a table of smartphone vendors and their flagship products (as of Fall, 2014)
+
=== Table of phones, processors and download sites ===
{| border="1" cellspacing="0" cellpadding="5"
+
For links to different download sites, see [[Phones Processors and Download Sites]]
|-bgcolor="#80c0d0"
 
!Vendor
 
!Phone
 
!Processor
 
!Source tree
 
!Contact
 
|-
 
|Samsung||Galaxy S3||Exynos 4412 Quad
 
|-
 
|Samsung||Galaxy S5||Qualcomm MSM8974AC Snapdragon 801
 
|-
 
|Samsung||Galaxy Note 4||Qualcomm Snapdragon 805 (SM-N910S) / Exynos 5433 (SM-N910C)
 
|-
 
|Samsung||Galaxy A3/A5||Qualcomm Snapdragon 400
 
|-
 
|HTC||One M8||Qualcomm Snapdragon 801
 
|-
 
|Lenovo/Motorola||Moto G||Qualcomm Snapdragon MSM8974AC 801
 
|-
 
|Lenovo/Motorola||Nexus 6||Qualcomm Snapdragon 805
 
|-
 
|Motorola||?||?
 
|https://github.com/MotorolaMobilityLLC/kernel-msm (last commit Sep 2014, in branch kitkat-4.4.4-release-titan)
 
|-
 
|LG||Optimus G3||Qualcomm Snapdragon 801
 
|-
 
|Sony||Xperia Z3||Qualcomm Snapdragon MSM8974AC 801
 
|-
 
|Xiaomi||Mi4||Qualcomm Snapdragon 8974AC 801
 
|-
 
|Xiaomi||Mi3||Qualcomm Snapdragon 800
 
|-
 
|Xiaomi||MiPad||NVIDIA Tegra K1
 
|-
 
|Huawei||Ascend Mate7||Hi-Silicon K3V2
 
|-
 
|Huawei||Ascend G7||Qualcomm Snapdragon (which version?)
 
|-
 
|Lenovo||K900||Atom Z2580
 
|}
 
  
 
== Status ==
 
== Status ==

Revision as of 16:23, 9 June 2015

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?

Feature or Item Person Notes Link Last activity
USB - msm_otg host mode Tim Bird I'm currently working on the pmic_id_irq, which require spmi support.

I got stuck on the DT EPROBE_DEFER support issue.

<no links yet> none yet
SD card controller Srinivas Kandagatla This patch series adds Qualcomm SD Card Controller support in pl180 mmci

driver. QCom SDCC is basically a pl180, but bit more customized, some of the register layouts and offsets are different to the ones mentioned in pl180 datasheet. The plan is to totally remove the standalone SDCC driver drivers/mmc/host/msm_sdcc.* and start using generic mmci driver for all Qualcomm parts, as we get chance to test on other Qcom boards.

http://thread.gmane.org/gmane.linux.ports.arm.msm/7706

https://www.mail-archive.com/linux-arm-msm@vger.kernel.org/msg09059.html

2014-06-02
DT stuff for 8084 Georgi Djakov Adds DT nodes for the APQ8084 global clock controller and serial port. https://www.mail-archive.com/linux-arm-msm@vger.kernel.org/msg09096.html 2014-06-03

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

Specific Hardware

IP blocks on the 8974

  • KRAIT - arm processor - (DONE)
  • SAW - SPM AVS wrapper - adaptive wakup, sleep, voltage
    • AVS - adaptive voltage scaler
    • SPM - subsystem power manager - (DONE)
  • RPM - Resource power manager - regulator voting thingy - (in progress) - Bjorn, AGross
  • PM8941 - power management IC (PMIC) - see sub-parts for status
    • WLED - (DONE) - Courtney
    • 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 - (DONE)
    • RTC - realtime clock - (DONE)
    • coincell - (in progress) - Tim
    • regulators - (in progress) (see RPM) - Bjorn, AGross
    • PMIC clocks - (not done)
    • VADC - (DONE?) - 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 - (DONE)
      • hwspinlock DT support - (DONE)
    • halt control
  • QFPROM - fuses - (not done)
  • BAM - dma stuff - (DONE - but missing utilization by individual drivers)
  • TSENSE - thermal sensing - (in progress)

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 - (DONE)
  • 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

Resources

mailing list

IRC channel

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

git trees

Other resources

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)