Difference between revisions of "KernelDriverProjects"

From RevSpace
Jump to navigation Jump to search
Line 15: Line 15:
  
 
* Hans' [https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip sunxi-wip] branch has support for the otg controller found on all supported Allwinner SoCs, currently this only gets enabled in devicetree on a few boards. This needs to be enabled in devicetree on all boards. See the [https://github.com/jwrdegoede/linux-sunxi/blob/sunxi-wip/arch/arm/boot/dts/sun7i-a20-cubietruck.dts cubietruck dts] file for an example how to do this.
 
* Hans' [https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip sunxi-wip] branch has support for the otg controller found on all supported Allwinner SoCs, currently this only gets enabled in devicetree on a few boards. This needs to be enabled in devicetree on all boards. See the [https://github.com/jwrdegoede/linux-sunxi/blob/sunxi-wip/arch/arm/boot/dts/sun7i-a20-cubietruck.dts cubietruck dts] file for an example how to do this.
 +
* Difficulty: Easy
 +
 +
 +
== Add regulator nodes to the dts files of all boards with an axp209 pmic ==
 +
 +
* Add regulator nodes to the dts files of all boards with an axp209 pmic, to enable CPU voltage scaling and disable unused regulators
 +
* Difficulty: Easy
 +
 +
 +
== Create dts files for sunxi boards which do not have a dts file yet ==
 +
 +
* Create a dts file for the wobo-i5 (including pinmux setting for the emac veing routed to an alternative port), auxtek-t003, uhost-u1a
 
* Difficulty: Easy
 
* Difficulty: Easy
  
Line 29: Line 41:
 
* Various tablets use a Focaltech ft5x touchscreen controller. A driver is available in various Android kernel sources, see the linux-sunxi wiki [http://linux-sunxi.org/Touchscreen touchscreen  page]. Write a proper kernel driver for this and upstream it.
 
* Various tablets use a Focaltech ft5x touchscreen controller. A driver is available in various Android kernel sources, see the linux-sunxi wiki [http://linux-sunxi.org/Touchscreen touchscreen  page]. Write a proper kernel driver for this and upstream it.
 
* Boards: Wits PRO A20 DKT
 
* Boards: Wits PRO A20 DKT
 +
* Difficulty: Easy/Medium
 +
 +
 +
== Memsic MXC622X accelerometer driver ==
 +
 +
* Various (cheap) tablets use a Memsic MXC622X accelerometer. Write a proper kernel driver for this and upstream it.
 +
* Boards: Ippo q8h tablets
 +
* Difficulty: Easy/Medium
 +
 +
 +
== Bosch BMA250 accelerometer driver ==
 +
 +
* Various tablets use a Bosch BMA250 accelerometer. Write a proper kernel driver for this and upstream it.
 +
* Boards: UTOO P66 tablets
 
* Difficulty: Easy/Medium
 
* Difficulty: Easy/Medium
  
Line 36: Line 62:
 
* The AXP152 / AXP209 / AXP221 / AXP223 PMIC-s all have various gpio pins. These need to have a pinctrl driver written for them, so that they can be either used as gpio-s, or e multiplexed to e.g. the pwm the PMIC-s have on board.
 
* The AXP152 / AXP209 / AXP221 / AXP223 PMIC-s all have various gpio pins. These need to have a pinctrl driver written for them, so that they can be either used as gpio-s, or e multiplexed to e.g. the pwm the PMIC-s have on board.
 
* Difficulty: Medium
 
* Difficulty: Medium
 
  
  
Line 58: Line 83:
 
* Boards: ga10h
 
* Boards: ga10h
 
* Difficulty: Medium
 
* Difficulty: Medium
 +
 +
 +
== H3 kernel support ==
 +
 +
* Add support to the Linux kernel for the H3 SoC, a patchset adding basic support (timers, interrupt controller, serial console) is available.
 +
* Difficulty: Hard
 +
 +
 +
== A83 kernel support ==
 +
 +
* Add support to the Linux kernel for the A83 SoC, no work has been done on this yet.
 +
* Difficulty: Hard
  
  
Line 64: Line 101:
 
* All the Allwinner SoCs have a CSI camera interface, add a driver for this + where necessary drivers for the sensor used on a board so that the camera can be used through the kernel's v4l2 api.
 
* All the Allwinner SoCs have a CSI camera interface, add a driver for this + where necessary drivers for the sensor used on a board so that the camera can be used through the kernel's v4l2 api.
 
* Boards: All tablets, bananapi with camera module
 
* Boards: All tablets, bananapi with camera module
 +
* Difficulty: Hard
 +
 +
 +
== Rework Raspberry Pi 2 kernel code for multi platform support ==
 +
 +
* Most Linux distros ship a single ARM kernel binary build with multi-platform support which runtime adjusts itself to the SoC being used. The Raspberry Pi 2 kernel code does not support this, requiring a kernel compiled specifically for it, which will not run on any other board. This means that the ARM images of distributions like Fedora do not work out of the box on the Raspberry Pi 2. The Raspberry Pi 2 kernel code needs to be modified to support multi platform kernels and use devicetree for runtime configuration everywhere.
 +
* Difficulty: Medium/Hard
 +
 +
 +
== Various sunxi kernel support tasks ==
 +
 +
* Mapping for mele a1000
 +
* Fix stmmac ethernet driver being too chatty making it hard to use a text console, note it spews even more after suspend/resume
 +
* i2c speed calculation is wrong in kernel, see datasheet / u-boot for correct formula, this is a sunxi only thing, needs to check the compat.
 +
* Add missing iounmap(info->screen_base) to simplefb_remove
 +
* For even more Allwinner SoCs related todo items see [http://linux-sunxi.org/Linux_mainlining_effort#Left_to_be_done this todo list].
 +
 +
 +
== Create u-boot boardconfigs sunxi boards which do not have a defconfig file yet ==
 +
 +
* Create defconfig files for the wobo-i5, auxtek-t003, uhost-u1a
 +
* Difficulty: Easy
 +
 +
 +
== A80 u-boot support ==
 +
 +
* Add full support to u-boot for the A80 SoC, main u-boot.bin already has A80 support, but we need to add SPL support (pmic voltage setup, dram init)
 +
* Difficulty: Hard
 +
 +
 +
== H3 u-boot support ==
 +
 +
* Add support to u-boot for the H3 SoC, no work has been done on this yet.
 +
* Difficulty: Hard
 +
 +
 +
== A83 u-boot support ==
 +
 +
* Add support to u-boot for the A83 SoC, no work has been done on this yet.
 
* Difficulty: Hard
 
* Difficulty: Hard
  
Line 86: Line 162:
 
** Fix "weird" CCM_DRAM_CTRL_DCLK_OUT define, change it into a CCM_DRAM_GATE_OFFSET_foo define, and put it together with the others
 
** Fix "weird" CCM_DRAM_CTRL_DCLK_OUT define, change it into a CCM_DRAM_GATE_OFFSET_foo define, and put it together with the others
 
** Use CONFIG_VIDEO_LCD_RESET instead of power on Ippo q8h boards
 
** Use CONFIG_VIDEO_LCD_RESET instead of power on Ippo q8h boards
 +
** Print board name from u-boot
 +
** Make CONFIG_SYS_USB_[E|O]HCI_MAX_ROOT_PORTS a runtime parameter passed in via ehci_register / ohci_register for device-model (CONFIG_DM_USB)  enabled builds and drop them from include/configs/sunxi-common.h
 +
** Make board/sunxi/Kconfig select CONFIG_SPL by default on MACH-s where we support the SPL, remove CONFIG_SPL=y from all defconfigs
 
* Difficulty: Easy
 
* Difficulty: Easy
 
 
== Various sunxi kernel support tasks ==
 
 
* Mapping for mele a1000
 
* Fix stmmac ethernet driver being too chatty making it hard to use a text console, note it spews even more after suspend/resume
 
* For even more Allwinner SoCs related todo items see [http://linux-sunxi.org/Linux_mainlining_effort#Left_to_be_done this todo list].
 
  
  
Line 104: Line 176:
 
* Difficulty: Medium
 
* Difficulty: Medium
 
* Who: Hans
 
* Who: Hans
 +
  
 
= Finished Projects =
 
= Finished Projects =

Revision as of 17:01, 23 June 2015

This page contains Hans' TODO list of kernel driver / u-boot projects.


Open projects

Enable analog audio output on relevant A10/A13/A20 boards

  • Hans' sunxi-wip branch has support for the audio-codec found on the Allwinner A10 / A13 / A20, but this needs to be enabled in devicetree on boards which have an analog audio output. See the cubietruck dts file for an example how to do this.
  • Difficulty: Easy


Enable the OTG USB port on all Allwinner boards

  • Hans' sunxi-wip branch has support for the otg controller found on all supported Allwinner SoCs, currently this only gets enabled in devicetree on a few boards. This needs to be enabled in devicetree on all boards. See the cubietruck dts file for an example how to do this.
  • Difficulty: Easy


Add regulator nodes to the dts files of all boards with an axp209 pmic

  • Add regulator nodes to the dts files of all boards with an axp209 pmic, to enable CPU voltage scaling and disable unused regulators
  • Difficulty: Easy


Create dts files for sunxi boards which do not have a dts file yet

  • Create a dts file for the wobo-i5 (including pinmux setting for the emac veing routed to an alternative port), auxtek-t003, uhost-u1a
  • Difficulty: Easy


Silead GSL1680 touchcreen driver

  • Various (cheap) tablets use a gsl1680 touchscreen controller. An userspace driver for this touchscreen is available here. Write a proper kernel driver for this and upstream it.
  • Boards: Ippo q8h tablets, ga10h tablets
  • Difficulty: Easy/Medium


Focaltech ft5x touchscreen driver

  • Various tablets use a Focaltech ft5x touchscreen controller. A driver is available in various Android kernel sources, see the linux-sunxi wiki touchscreen page. Write a proper kernel driver for this and upstream it.
  • Boards: Wits PRO A20 DKT
  • Difficulty: Easy/Medium


Memsic MXC622X accelerometer driver

  • Various (cheap) tablets use a Memsic MXC622X accelerometer. Write a proper kernel driver for this and upstream it.
  • Boards: Ippo q8h tablets
  • Difficulty: Easy/Medium


Bosch BMA250 accelerometer driver

  • Various tablets use a Bosch BMA250 accelerometer. Write a proper kernel driver for this and upstream it.
  • Boards: UTOO P66 tablets
  • Difficulty: Easy/Medium


AXP PMIC gpio driver

  • The AXP152 / AXP209 / AXP221 / AXP223 PMIC-s all have various gpio pins. These need to have a pinctrl driver written for them, so that they can be either used as gpio-s, or e multiplexed to e.g. the pwm the PMIC-s have on board.
  • Difficulty: Medium


AXP152 PMIC regulator driver

  • The AXP152 PMIC has several voltage regulators on board. Tdrivers/regulator/axp20x-regulator.c regulator driver needs to be extended to support the AXP152 so that e.g. CPU voltage scaling can be used to save power on boards with this pmic.
  • Boards: A10s OLinuxIno Micro, mk802-a10s, others
  • Difficulty: Medium


RTL8189ES wifi driver

  • Find a recent copy of the RTL8189ES driver, make it build against the latest kernel and get it to work on at least one device. Then clean it up and submit it upstream for drivers/staging, then clean it up further to eventually move it into mainline proper.
  • Boards: mk802-a10s, other a10s based hdmi-sticks / topset-boxes
  • Difficulty: Medium


RTL8703AS wifi / bluetooth driver

  • Find a recent copy of the RTL8703AS driver, make it build against the latest kernel and get it to work on at least one device. Then clean it up and submit it upstream for drivers/staging, then clean it up further to eventually move it into mainline proper. This may be a good starting point.
  • Boards: ga10h
  • Difficulty: Medium


H3 kernel support

  • Add support to the Linux kernel for the H3 SoC, a patchset adding basic support (timers, interrupt controller, serial console) is available.
  • Difficulty: Hard


A83 kernel support

  • Add support to the Linux kernel for the A83 SoC, no work has been done on this yet.
  • Difficulty: Hard


CSI camera interface driver + sensor drivers

  • All the Allwinner SoCs have a CSI camera interface, add a driver for this + where necessary drivers for the sensor used on a board so that the camera can be used through the kernel's v4l2 api.
  • Boards: All tablets, bananapi with camera module
  • Difficulty: Hard


Rework Raspberry Pi 2 kernel code for multi platform support

  • Most Linux distros ship a single ARM kernel binary build with multi-platform support which runtime adjusts itself to the SoC being used. The Raspberry Pi 2 kernel code does not support this, requiring a kernel compiled specifically for it, which will not run on any other board. This means that the ARM images of distributions like Fedora do not work out of the box on the Raspberry Pi 2. The Raspberry Pi 2 kernel code needs to be modified to support multi platform kernels and use devicetree for runtime configuration everywhere.
  • Difficulty: Medium/Hard


Various sunxi kernel support tasks

  • Mapping for mele a1000
  • Fix stmmac ethernet driver being too chatty making it hard to use a text console, note it spews even more after suspend/resume
  • i2c speed calculation is wrong in kernel, see datasheet / u-boot for correct formula, this is a sunxi only thing, needs to check the compat.
  • Add missing iounmap(info->screen_base) to simplefb_remove
  • For even more Allwinner SoCs related todo items see this todo list.


Create u-boot boardconfigs sunxi boards which do not have a defconfig file yet

  • Create defconfig files for the wobo-i5, auxtek-t003, uhost-u1a
  • Difficulty: Easy


A80 u-boot support

  • Add full support to u-boot for the A80 SoC, main u-boot.bin already has A80 support, but we need to add SPL support (pmic voltage setup, dram init)
  • Difficulty: Hard


H3 u-boot support

  • Add support to u-boot for the H3 SoC, no work has been done on this yet.
  • Difficulty: Hard


A83 u-boot support

  • Add support to u-boot for the A83 SoC, no work has been done on this yet.
  • Difficulty: Hard


u-boot usb scanning speedup

  • Probing the usb bus on u-boot is currently very slow, one problem is that all ports are scanning one by one, with a 1s powerup delay per port. This can be sped up by making doing the scanning in parallel using cooperative multi-tasking, e.g. :
    • rework reset to use kernel timings (try every 10 ms)
    • lower power good wait to 100 ms, then when done enumerating re-scan hubs every 100 ms, and if no new hubs show up for 5 sonsecutive scans, we are done
  • Difficulty: Medium/Hard


u-boot sunxi support cleanups

  • The u-boot code for supporting Allwinner sunxi SoCs can use a number of cleanups:
    • Define CONFIG_MMC0_CD_PIN for all boards with a sdcard slot
    • Define CONFIG_USB0_ID_DET for all boards which use CONFIG_USB_MUSB_SUNXI and have an otg connector
    • Move i2c_init_board() call in arch/arm/cpu/armv7/sunxi/board.c from s_init() to board_init_f under #ifdef CONFIG_SPL_I2C_SUPPORT
    • Convert all options set through CONFIG_SYS_EXTRA_OPTIONS to proper Kconfig options
    • Drop CONFIG_SUNXI use CONFIG_ARCH_SUNXI everywhere
    • Fix u-boot twsi enable / disable in clock_sun6i.c to do trt wrt reset
    • Fix "weird" CCM_DRAM_CTRL_DCLK_OUT define, change it into a CCM_DRAM_GATE_OFFSET_foo define, and put it together with the others
    • Use CONFIG_VIDEO_LCD_RESET instead of power on Ippo q8h boards
    • Print board name from u-boot
    • Make CONFIG_SYS_USB_[E|O]HCI_MAX_ROOT_PORTS a runtime parameter passed in via ehci_register / ohci_register for device-model (CONFIG_DM_USB) enabled builds and drop them from include/configs/sunxi-common.h
    • Make board/sunxi/Kconfig select CONFIG_SPL by default on MACH-s where we support the SPL, remove CONFIG_SPL=y from all defconfigs
  • Difficulty: Easy


WIP Projects

AXP152 PMIC mfd driver

  • The AXP152 PMIC is a multifunction device, so a mfd driver needs to be written to instantiate per function cells to which various kernel driver can then be bound.
  • Boards: A10s OLinuxIno Micro, mk802-a10s, others
  • Difficulty: Medium
  • Who: Hans


Finished Projects