Nexus 7 aosp tegra kernel

Материал из Toshiba AC100 wiki
Перейти к: навигация, поиск

Use Nexus 7 aosp tegra kernel with tegra2 device

Current attempt git live here https://github.com/zombah/android_kernel_toshiba_ac100

Current Progress

  • Fastboot
    • Boots, work fine. Need to backport or revert ac100 usb stuff to old usb platform
  • Uboot
    • Boots, work fine. Alot of garbadge in dmesg. Same for usb as fastboot.


Basic kernel compile problems

  • cap1106 driver enabled by default
.../drivers/input/proximity/cap1106.c:23:45: fatal error: include/mach/board-grouper-misc.h: No such file or directory
compilation terminated.
make[5]: *** [drivers/input/proximity/cap1106.o] Error 1
make[4]: *** [drivers/input/proximity] Error 2
make[3]: *** [drivers/input] Error 2

This driver in current state depends to grouper board, simply disable driver by default

diff --git a/drivers/input/proximity/Kconfig b/drivers/input/proximity/Kconfig
index 34927c8..fc234b1 100644
--- a/drivers/input/proximity/Kconfig
+++ b/drivers/input/proximity/Kconfig
@@ -7,7 +7,7 @@ comment "Proximity sensors"
 config SENSORS_CAP1106
        tristate "CAP1106 driver"
        depends on I2C
-       default y
+       default n
        ---help---
          Say yes if you want proximity CAP1106 driver.
          This is for i2c connected version. If unsure, say N here.

  • fsl_udc fail to compile with below error
CC      drivers/usb/host/fsl-mph-dr-of.o
    drivers/usb/host/fsl-mph-dr-of.c: In function 'fsl_usb2_device_register':
    drivers/usb/host/fsl-mph-dr-of.c:97: error: 'struct pdev_archdata'
    has no member named 'dma_mask'

Mainline kernel have appropriate patch for this problem

Author: Peter Chen <[email protected]>
Date:   Thu Feb 16 09:41:52 2012 +0800

    usb: Fix build error due to dma_mask is not at pdev_archdata at ARM

    When build i.mx platform with imx_v6_v7_defconfig, and after adding
    USB Gadget support, it has below build error:

    CC      drivers/usb/host/fsl-mph-dr-of.o
    drivers/usb/host/fsl-mph-dr-of.c: In function 'fsl_usb2_device_register':
    drivers/usb/host/fsl-mph-dr-of.c:97: error: 'struct pdev_archdata'
    has no member named 'dma_mask'

    It has discussed at: http://www.spinics.net/lists/linux-usb/msg57302.html

    For PowerPC, there is dma_mask at struct pdev_archdata, but there is
    no dma_mask at struct pdev_archdata for ARM. The pdev_archdata is
    related to specific platform, it should NOT be accessed by
    cross platform drivers, like USB.

    The code for pdev_archdata should be useless, as for PowerPC,
    it has already gotten the value for pdev->dev.dma_mask at function
    arch_setup_pdev_archdata of arch/powerpc/kernel/setup-common.c.

    Tested-by: Ramneek Mehresh <[email protected]>
    Signed-off-by: Peter Chen <[email protected]>
    Cc: stable <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

AC100 Specific compile problems

  • Our asoc need tdm patch from rel15r7.1-android4
    • for now just include 2 patches with tdm, later maybe fix other if tdm is useless
  • Our current board usb stuff depends on usb common phy patches from rel15r7.1-android4
    • for now simply revert our board ehci data to old one not ported to common phy
  • Latest NVEC use module_platform_driver for init
    • Quick backport 2 patches to make it work


Basic link time problems

  • Many grouper depended things hardcoded to common drivers without ifdefs
arch/arm/mach-tegra/built-in.o: In function `uhsic_phy_power_off':
arch/arm/mach-tegra/usb_phy.c:2465: undefined reference to `baseband_xmm_enable_hsic_power'
arch/arm/mach-tegra/built-in.o: In function `uhsic_phy_power_on':
arch/arm/mach-tegra/usb_phy.c:2331: undefined reference to `baseband_xmm_enable_hsic_power'
arch/arm/mach-tegra/built-in.o: In function `tegra_usb_phy_open':
arch/arm/mach-tegra/usb_phy.c:2521: undefined reference to `grouper_query_pcba_revision'
arch/arm/mach-tegra/usb_phy.c:2522: undefined reference to `grouper_get_project_id'
arch/arm/mach-tegra/usb_phy.c:2523: undefined reference to `grouper_query_pmic_id'
kernel/built-in.o: In function `kernel_restart':
kernel/sys.c:370: undefined reference to `disable_auto_hotplug'
kernel/built-in.o: In function `kernel_power_off':
kernel/sys.c:421: undefined reference to `disable_auto_hotplug'
kernel/sys.c:430: undefined reference to `battery_cable_status'
drivers/built-in.o: In function `tegra_ehci_resume':
drivers/usb/host/ehci-tegra.c:1276: undefined reference to `grouper_get_project_id'
drivers/usb/host/ehci-tegra.c:1279: undefined reference to `baseband_xmm_L3_resume_check'
drivers/built-in.o: In function `cable_detection_work_handler':
drivers/usb/gadget/fsl_udc_core.c:325: undefined reference to `touch_callback'
drivers/built-in.o: In function `fsl_smb347_hc_mode_handler':
drivers/usb/gadget/fsl_udc_core.c:261: undefined reference to `smb347_hc_mode_callback'
drivers/built-in.o: In function `read_hw_version':
drivers/usb/gadget/fsl_udc_core.c:114: undefined reference to `grouper_get_project_id'
drivers/usb/gadget/fsl_udc_core.c:115: undefined reference to `grouper_query_pcba_revision'

As quick solution i reverted all this stuff, but this may lead to problems need to ifdef all this stuff to grouper or tegra3 depending on feature



Strange asus patches

  • Screen rotated by 180 degree
commit f21c63acc2f6cda9255420dda6f08f8fcceb5133
Author: lucien_wu <[email protected]>
Date:   Thu Mar 22 15:18:10 2012 +0800

    Subject: [PATCH] TEST: rotate display by 180 degree

    rotate display by 180 degree from display controller in kernel

    Change-Id: Ibc62f2ccf0c414926c9670e1f9b49fd1171dc697
    Reviewed-on: http://mcrd1-5.corpnet.asus/code-review/master/44766
    Reviewed-by: Wu Lucien <[email protected]>
    Tested-by: Wu Lucien <[email protected]>
    Reviewed-by: Warlock Tai <[email protected]>
    Reviewed-on: http://mcrd1-5.corpnet.asus/code-review/master/45209

Dunno what this thing for, simply reverting it fixes screen for AC100


  • No external sd card inited
commit b025d94a3dbd85f074ec230ef3a20da8fe141c03
Author: ban_feng <[email protected]>
Date:   Mon Apr 9 11:25:40 2012 +0800

    SD: Disable mmc_attach_sd function

    In order to avoid rescaling voltage to 2.85V,
    we extract mmc_attach_sd to make sure device is at 1.8V signalling voltage.

    Change-Id: Ida42f6d04323c80981194a9e261c6443f1ae8598
    Change-Id: Ie92d7b2029fe86c8fa34370cb86447005ed68528
    Reviewed-on: http://mcrd1-5.corpnet.asus/code-review/master/46079
    Tested-by: Ban Feng <[email protected]>
    Reviewed-by: Ban Feng <[email protected]>
    Tested-by: Nick Cheng <[email protected]>
    Reviewed-by: Nick Cheng <[email protected]>

This is probably because grouper lack external sd, voltage notes is interesting. Simply reverting for now and external sd detected



Found Problems

  • If external usb inserted after poweron, it fail to start and have soft crash
    • Link to log http://pastebin.com/xG6YS3Nu
    • Not found yet whos in charge, my many quick reverts or that current ac100 board code based on newer nvidia branch

  • Not bootable with uboot-tegra yet
    • Got hard freeze in tegra_init_early at function tegra_clk_init_from_table(common_clk_init_table) without backtrace or crash dump
    • Check difference in this functions between latest nvidia branches and this one
      • Now boot


Uboot support vital patches



  • No more problems found yet, but need extended testing something will appear for sure



lsusb output

Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 0424:2512
Bus 002 Device 002: ID 0424:2513
Bus 001 Device 003: ID 0db0:3871
Bus 001 Device 004: ID 0db0:a871

on r15r7 kernel

Bus 001 Device 001: ID 1d6b:0002 !Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 !Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:2512 ?Standard Microsystems Corp.
Bus 002 Device 002: ID 0424:2513 ?Standard Microsystems Corp.
Bus 001 Device 003: ID 0db0:3871 ?Micro Star International (Device name unknown)
Bus 001 Device 004: ID 0db0:a871 ?Micro Star International (Device name unknown)
Bus 002 Device 003: ID 0bdb:190a !Ericsson Business Mobile Networks BV, f3307

modem missing. Maybe board usb misconfig or disabled in drivers?