Unconfigured Ad Widget



No announcement yet.

Kernel development Haierpad 1043 (iFive X3 / RK3188): Help with SD and wifi needed

  • Filter
  • Time
  • Show
Clear All
new posts

    Kernel development Haierpad 1043 (iFive X3 / RK3188): Help with SD and wifi needed

    Hey guys,

    after successfully porting CM11 and 12.1 to my Haier Haierpad 1043 (being a rebranded iFive X3 --> RK3188) I am currently working on building a custom kernel (3.0.36+ for the start).
    The repository is based on the great work of D33 and str90 and can be found on GitHub.

    The kernel is successfully booting and basic stuff like touchpad, sensors and audio work. I am however experiencing trouble while trying to get wifi bluetooth and external SD to work.
    As I understand it communication to the wifi chip is realized via mmc so those things are closely connected to each other.

    Can anyone give me a hint how to solve my problem? I am attaching a stock DMESG as well as one from my self-built kernel, furthermore an Excel-sheet containing information to GPIOs and kallsyms of stock kernel. I also managed to disassemble the kernel and label all the functions. Maybe someone is interested in assembler code of a particular function.

    Thanks in advance for your help!

    Attached Files

    I did not get much further in the last couple of days. But I analyzed many stock kernel functions and compared them to the source code I am compiling.
    There are apparently not much differences, but I noticed a strange thing in the function rk29_sdmmc_set_iomux_mmc0() in rk-sdmmc-ops.c in the plat-rk directory. There the output pins are configured to their alternate functions with iomux_set(). But this function is called multiple times with parameters corresponding to RK3066B chip.

    For example:
    // kernel source
    iomux_set(rksdmmc0_gpio_init.data1_gpio.iomux.fmux); // --> iomux_set([B]MMC0_D1[/B]) --> iomux_set([B]0x3B31[/B])
    // decompiled
    iomux_set([B]0x3A51[/B]); // --> [B]RK3188[/B]: iomux_set([B]I2C4_SCL[/B]), [B]RK3066B[/B]: iomux_set([B]MMC0_D1[/B])
    This deviation can also be observed in other functions using the iomux_set() method. Does anybody have an idea how this is even supposed to work? I am pretty confused.


      I noticed that I uploaded the wrong Excel-sheet. Here is the right one.
      Attached Files