Difference between revisions of "KernelDriverProjects"

From RevSpace
Jump to navigation Jump to search
(Created page with "This page contains Hans' TODO list of kernel driver / u-boot projects. __TOC__ = Enable analog audio output on relevant A10/A13/A20 boards = * Hans' [https://github.com/jw...")
 
Line 4: Line 4:
  
  
= Enable analog audio output on relevant A10/A13/A20 boards =
+
= Open projects =
 +
 
 +
== Enable analog audio output on relevant A10/A13/A20 boards ==
  
 
* Hans' [https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip 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 [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 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 [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.
Line 10: Line 12:
  
  
= Enable the OTG USB port on all Allwinner boards =
+
== Enable the OTG USB port on all Allwinner boards ==
  
 
* 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.
Line 16: Line 18:
  
  
= Silead GSL1680 touchcreen driver =
+
== Silead GSL1680 touchcreen driver ==
  
 
* Various (cheap) tablets use a gsl1680 touchscreen controller. An userspace driver for this touchscreen is available [https://github.com/rastersoft/gsl1680 here]. Write a proper kernel driver for this and upstream it.
 
* Various (cheap) tablets use a gsl1680 touchscreen controller. An userspace driver for this touchscreen is available [https://github.com/rastersoft/gsl1680 here]. Write a proper kernel driver for this and upstream it.
Line 23: Line 25:
  
  
= Focaltech ft5x touchscreen driver =
+
== 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 [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.
Line 30: Line 32:
  
  
= AXP PMIC gpio driver =
+
== 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.
 
* 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.
Line 37: Line 39:
  
  
= AXP152 PMIC regulator driver =
+
== 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.
 
* 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
 
* Boards: A10s OLinuxIno Micro, mk802-a10s, others
 
* Difficulty: Medium
 
* 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. [https://github.com/hadess/rtl8723bs This] may be a good starting point.
 +
* Boards: ga10h
 +
* Difficulty: Medium
 +
 +
 +
== 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
 +
 +
 +
== 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
 +
* 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].
 +
 +
 +
= 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 =

Revision as of 16:29, 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


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


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


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


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
  • 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 this todo list.


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