Difference between revisions of "CI20 upstream"

From eLinux.org
Jump to: navigation, search
(Update for 3.18 for core drivers)
(Peripheral drivers: Update for 3.18)
Line 125: Line 125:
 
! State
 
! State
 
! Path
 
! Path
! Notes
+
! Notes 3.0.8
 +
! Notes 3.16
 +
! Notes 3.18+
 
|-
 
|-
 
| ADC
 
| ADC
 
| WIP
 
| WIP
 +
|
 
|
 
|
 
| Check branches on https://github.com/ZubairLK/CI20_linux
 
| Check branches on https://github.com/ZubairLK/CI20_linux
 +
|
 
|-
 
|-
 
| Audio (ALSA)
 
| Audio (ALSA)
 
| WIP
 
| WIP
 +
|
 
|
 
|
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 +
| Works. Uses jz4740 drivers with patches.
 
|-
 
|-
 
| Camera
 
| Camera
Line 141: Line 147:
 
|
 
|
 
|  
 
|  
 +
|
 +
|
 
|-
 
|-
 
| Ethernet
 
| Ethernet
 
| Works
 
| Works
 
| drivers/net/ethernet/davicom/dm9000.c
 
| drivers/net/ethernet/davicom/dm9000.c
 +
|
 
| Requires regulator and reset GPIO support, see [https://github.com/ZubairLK/CI20_linux/commit/e2299336b2922cbbaf1036869690b6fdf953c435].
 
| Requires regulator and reset GPIO support, see [https://github.com/ZubairLK/CI20_linux/commit/e2299336b2922cbbaf1036869690b6fdf953c435].
 +
| Patch upstreamed.
 
|-
 
|-
 
| GPU
 
| GPU
|  
+
| External Kernel Module
 
|
 
|
 +
| Works
 
|
 
|
 +
| WIP. Requires major overhaul as kernel layer changed significantly from 3.0.8 to 3.18 for jz4780. The way clocks, regulators enabled. The way registers handled etc.. LCD and HDMI drivers changed completely.
 
|-
 
|-
 
| HDMI
 
| HDMI
 
| WIP
 
| WIP
 
|
 
|
 +
| Resolution requires kernel recompile
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 +
| Resolution requires xorg/bootargs. Needs work for consolidation with upstream.
 
|-
 
|-
 
| I2C
 
| I2C
 
| Works
 
| Works
 
| drivers/i2c/busses/i2c-jz4780.c
 
| drivers/i2c/busses/i2c-jz4780.c
 +
|
 
| 4740 has HW issue so uses gpio i2c instead. 4770 had [https://github.com/gcwnow/linux/commit/ffca0556] but unused so removed (also gave false positives on i2cdetect).
 
| 4740 has HW issue so uses gpio i2c instead. 4770 had [https://github.com/gcwnow/linux/commit/ffca0556] but unused so removed (also gave false positives on i2cdetect).
 +
| Works
 
|-
 
|-
 
| IPU
 
| IPU
 
|  
 
|  
 +
|
 
|
 
|
 
| 4770 has driver integrated with fbdev driver, see [https://github.com/gcwnow/linux/blob/jz-3.18/drivers/video/fbdev/jz4770_fb.c]. Plans to move to DRM+KVM but may take time.
 
| 4770 has driver integrated with fbdev driver, see [https://github.com/gcwnow/linux/blob/jz-3.18/drivers/video/fbdev/jz4770_fb.c]. Plans to move to DRM+KVM but may take time.
 +
|
 
|-
 
|-
 
| IR
 
| IR
Line 171: Line 189:
 
| drivers/media/rc/gpio-ir-recv.c
 
| drivers/media/rc/gpio-ir-recv.c
 
| GPIO, so use upstream GPIO driver
 
| GPIO, so use upstream GPIO driver
 +
|
 +
|
 
|-
 
|-
 
| MMC
 
| MMC
 
| Works
 
| Works
 
| drivers/mmc/host/jz4740_mmc.c
 
| drivers/mmc/host/jz4740_mmc.c
 +
|
 
| Various changes needed, see [https://github.com/ZubairLK/CI20_linux/commits/wip-ci20-v3.16-merge/drivers/mmc/host/jz47xx_mmc.c]. Should not rename driver. Check whether affected by [https://github.com/gcwnow/linux/commit/69106c17a401ed897a71b1cd6f5d60d7ea3a6c13].
 
| Various changes needed, see [https://github.com/ZubairLK/CI20_linux/commits/wip-ci20-v3.16-merge/drivers/mmc/host/jz47xx_mmc.c]. Should not rename driver. Check whether affected by [https://github.com/gcwnow/linux/commit/69106c17a401ed897a71b1cd6f5d60d7ea3a6c13].
 +
| Works. Consolidation work needed before upstream. jz4740 has diverged. DMA driver differences block.
 
|-
 
|-
 
| NAND
 
| NAND
Line 181: Line 203:
 
|
 
|
 
|  
 
|  
 +
| Works. Reworked driver
 +
| Works. Reworked driver
 
|-
 
|-
 
| PWM
 
| PWM
 
|
 
|
 
| drivers/pwm/pwm-jz4740.c
 
| drivers/pwm/pwm-jz4740.c
 +
|
 
| 4770 uses same driver as 4740. Maybe applicable to 4780 too. See [https://github.com/gcwnow/linux/commits/jz-3.18/drivers/pwm/pwm-jz4740.c].
 
| 4770 uses same driver as 4740. Maybe applicable to 4780 too. See [https://github.com/gcwnow/linux/commits/jz-3.18/drivers/pwm/pwm-jz4740.c].
 +
|
 
|-
 
|-
 
| Regulator
 
| Regulator
 
| Works
 
| Works
 
|
 
|
|  
+
|
 +
| Works. Based on i2c driver.
 +
| Works. Based on i2c driver.
 
|-
 
|-
 
| SPI (SSI)
 
| SPI (SSI)
 
| None
 
| None
 +
|
 
|
 
|
 
| SPIO GPIO should work, but a dedicated driver for the SSI hardware in drivers/spi/ would be better.
 
| SPIO GPIO should work, but a dedicated driver for the SSI hardware in drivers/spi/ would be better.
 +
|
 
|-
 
|-
 
| UART
 
| UART
 
| Works
 
| Works
 +
|
 
|
 
|
 
| Quirks: see patches [https://github.com/ZubairLK/CI20_linux/commit/1d1d702613e0f4241ab7d8021b937e6366117c79] [https://github.com/MIPS/CI20_linux/commit/3939d3a65122eb40beec6aed1484c04ffc20cc27] need moving to wrapper driver, like 8250_dw and [https://lkml.org/lkml/2014/8/12/266 mediatek] which can be common between Ingenic SoCs.
 
| Quirks: see patches [https://github.com/ZubairLK/CI20_linux/commit/1d1d702613e0f4241ab7d8021b937e6366117c79] [https://github.com/MIPS/CI20_linux/commit/3939d3a65122eb40beec6aed1484c04ffc20cc27] need moving to wrapper driver, like 8250_dw and [https://lkml.org/lkml/2014/8/12/266 mediatek] which can be common between Ingenic SoCs.
 +
| Works
 
|-
 
|-
 
| USB (EHCI)
 
| USB (EHCI)
Line 206: Line 238:
 
|
 
|
 
|  
 
|  
 +
|
 +
| Buggy.
 
|-
 
|-
 
| USB (OHCI)
 
| USB (OHCI)
Line 211: Line 245:
 
|
 
|
 
|  
 
|  
 +
|
 +
| Buggy.
 
|-
 
|-
| USB(OTG)
+
| USB(DWC)
 
| Works
 
| Works
 +
|
 
|
 
|
 
| Upstream driver supports only host mode as of 3.15
 
| Upstream driver supports only host mode as of 3.15
 +
| Uses upstream driver. Sometimes gives overcurrent errors on dmesg
 
|-
 
|-
 
| VPU
 
| VPU
 
|  
 
|  
 +
|
 
|
 
|
 
| Driver aimed at 4770, see [https://github.com/gcwnow/linux/blob/jz-3.18/drivers/misc/jz_vpu.c]. For samples see [https://github.com/laanwj/gcw0_vpu_poc]. May be insecure (allows userland to do its own cache control and access TCSM banks). RemoteProc driver in progress, see [https://github.com/gcwnow/linux/commit/ab21d08a852431b5e90cda9ffea5ff524374fd8e].
 
| Driver aimed at 4770, see [https://github.com/gcwnow/linux/blob/jz-3.18/drivers/misc/jz_vpu.c]. For samples see [https://github.com/laanwj/gcw0_vpu_poc]. May be insecure (allows userland to do its own cache control and access TCSM banks). RemoteProc driver in progress, see [https://github.com/gcwnow/linux/commit/ab21d08a852431b5e90cda9ffea5ff524374fd8e].
 +
|
 
|-
 
|-
 
| Wifi
 
| Wifi
 
| WIP
 
| WIP
 +
|
 
|
 
|
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 
| Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev
 +
| Works. Uses some hacks to keep regulators on to enable the chip. Uses upstreamed driver and mmc/dma.
 
|-
 
|-
 
| BT
 
| BT
 
| WIP
 
| WIP
 
|
 
|
| Check branches on https://github.com/ZubairLK/CI20_linux
+
|
 +
|
 +
| Almost works. Uses some hacks to keep regulators on to enable the chip. Scans ok. File transfer presents a few issues. Possible not entirely kernels fault and bluez etc.
 
|}
 
|}
  

Revision as of 03:35, 23 January 2015

This page contains details about the latest kernel branch and any known quirks/special requirements.

It will be periodically updated to keep up to speed with the latest.

The current branch tracking mainline 3.18.3

https://github.com/MIPS/CI20_linux

Status of Linux Kernel Drivers

Core

Name State Path Notes 3.0.8 Notes 3.16 Notes 3.18 +
Clocks Works drivers/clk/jz47xx Could have common drivers/clk/ingenic for all SoCs with SoC specific binding using common components(?) Uses common clock framework with jz4740. Intended for upstream
CPUfreq 4770 has [1], but clock infrastructure is different. Ingenic kernel had [2] for 4780. Not ported to 3.16 yet.
Device Tree Mostly N/A Parsed on boot, but compiled into the kernel. Would be good to allow it to be passed from the bootloader. DT for jz4740 as well
DMA Mostly drivers/dma/dma-jz4780.c needs combining into dma-jz4740. Works, just missing priority support still needs combining
GPIO Works drivers/pinctrl/pinctrl-jz4780.c should perhaps be in drivers/gpio/ (?)
Hotplug
IRQ Controller drivers/irqchip/irq-jz4780.c Very similar between SoCs (4740 has one bank, 60,70,80 has two banks) Consolidated work in 3.18 headed upstream
MXU Context
PinCtrl Mostly drivers/pinctrl/pinctrl-jz4780.c N/A Differs between SoCs. Functional, may need DT binding changes based on feedback from upstream. See also pinctrl-jz4770.c.
Power Controller (LPCR Register)
Power Off & Reset Works
RTC Works drivers/rtc/rtc-jz4740.c Consolidated with jz4740 Consolidated with jz4740
SMP Works Works
Watchdog Works Consolidated with jz4740

Peripheral drivers

Name State Path Notes 3.0.8 Notes 3.16 Notes 3.18+
ADC WIP Check branches on https://github.com/ZubairLK/CI20_linux
Audio (ALSA) WIP Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev Works. Uses jz4740 drivers with patches.
Camera
Ethernet Works drivers/net/ethernet/davicom/dm9000.c Requires regulator and reset GPIO support, see [3]. Patch upstreamed.
GPU External Kernel Module Works WIP. Requires major overhaul as kernel layer changed significantly from 3.0.8 to 3.18 for jz4780. The way clocks, regulators enabled. The way registers handled etc.. LCD and HDMI drivers changed completely.
HDMI WIP Resolution requires kernel recompile Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev Resolution requires xorg/bootargs. Needs work for consolidation with upstream.
I2C Works drivers/i2c/busses/i2c-jz4780.c 4740 has HW issue so uses gpio i2c instead. 4770 had [4] but unused so removed (also gave false positives on i2cdetect). Works
IPU 4770 has driver integrated with fbdev driver, see [5]. Plans to move to DRM+KVM but may take time.
IR Driver upstream drivers/media/rc/gpio-ir-recv.c GPIO, so use upstream GPIO driver
MMC Works drivers/mmc/host/jz4740_mmc.c Various changes needed, see [6]. Should not rename driver. Check whether affected by [7]. Works. Consolidation work needed before upstream. jz4740 has diverged. DMA driver differences block.
NAND Works Works. Reworked driver Works. Reworked driver
PWM drivers/pwm/pwm-jz4740.c 4770 uses same driver as 4740. Maybe applicable to 4780 too. See [8].
Regulator Works Works. Based on i2c driver. Works. Based on i2c driver.
SPI (SSI) None SPIO GPIO should work, but a dedicated driver for the SSI hardware in drivers/spi/ would be better.
UART Works Quirks: see patches [9] [10] need moving to wrapper driver, like 8250_dw and mediatek which can be common between Ingenic SoCs. Works
USB (EHCI) Works Buggy.
USB (OHCI) Works Buggy.
USB(DWC) Works Upstream driver supports only host mode as of 3.15 Uses upstream driver. Sometimes gives overcurrent errors on dmesg
VPU Driver aimed at 4770, see [11]. For samples see [12]. May be insecure (allows userland to do its own cache control and access TCSM banks). RemoteProc driver in progress, see [13].
Wifi WIP Check patches on https://groups.google.com/forum/#!forum/mips-creator-ci20-dev Works. Uses some hacks to keep regulators on to enable the chip. Uses upstreamed driver and mmc/dma.
BT WIP Almost works. Uses some hacks to keep regulators on to enable the chip. Scans ok. File transfer presents a few issues. Possible not entirely kernels fault and bluez etc.

List of other possible issues

  • /etc/init.d/iw8103 is the startup script for the BT/Wifi firmware in the default rootfs.

If using 3.16, the script can cause the boot to hang. Please move the script out of /etc/init.d

Add "root=/dev/mmcblk0p1 rootwait" to bootargs in uboot if you wish to boot a rootfs from mmc.