Jump to content

PaddleStroke

Members
  • Posts

    70
  • Joined

  • Last visited

Posts posted by PaddleStroke

  1. I found the reason why IRQ REG show 00 and why GPIO keep reseting... It's the u-boot driver for AXP209: 

    https://gitlab.denx.de/u-boot/u-boot/blob/master/drivers/power/axp209.c

    https://gitlab.denx.de/u-boot/u-boot/blob/master/include/axp209.h

     

    This files is giving me 2/3 of my troubles : 

    	/* Mask all interrupts */
    	for (i = AXP209_IRQ_ENABLE1; i <= AXP209_IRQ_ENABLE5; i++) {
    		rc = pmic_bus_write(i, 0);
    		if (rc)
    			return rc;
    	}

    This is why REG 40 is 00...

     

    	/*
    	 * Turn off LDOIO regulators / tri-state GPIO pins, when rebooting
    	 * from android these are sometimes on.
    	 */
    	rc = pmic_bus_write(AXP_GPIO0_CTRL, AXP_GPIO_CTRL_INPUT);
    	if (rc)
    		return rc;
    
    	rc = pmic_bus_write(AXP_GPIO1_CTRL, AXP_GPIO_CTRL_INPUT);
    	if (rc)
    		return rc;
    
    	rc = pmic_bus_write(AXP_GPIO2_CTRL, AXP_GPIO_CTRL_INPUT);
    	if (rc)
    		return rc;

    Reset the 3 GPIO status...

     

     

    Only the battery voltage error does not come from this. I think it probably comes from : 

    https://github.com/torvalds/linux/blob/master/drivers/power/supply/axp20x_battery.c

    However I am not sure how the driver is getting executed. What is the calling sequence of it.

  2. GPIO-AXP209.c 

    Ok there's a page in bindings about this driver https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/gpio/gpio-axp209.txt

    There's even a armbian patch about this driver binding text : https://github.com/armbian/build/blob/master/patch/kernel/sunxi-next/0104-dt-bindings-gpio-gpio-axp209-add-AXP803-GPIO-binding.patch

     

    but the driver itself cannot be found on github... 

     

    maybe it's name changed to this one https://github.com/torvalds/linux/blob/master/drivers/pinctrl/pinctrl-axp209.c

    if so why is there still a gpio-axp209.txt and a patch for this.

  3. I found a problem with either armbian patch for AXP20X.c driver or with i2Cset too.

     

    Running

    sudo i2cset -y -f 0 0x34 0x33 0xe9      #0x33 is AXP20X_CHRG_CTRL1. Value read with i2cget before is 0xc9
    sudo i2cset -y -f 0 0x34 0x90 0x04      #0x90 is AXP20X_GPIO0_CTRL. Value read with i2cget before is is 0x02
    sudo i2cset -y -f 0 0x34 0x92 0x04      #0x92 is AXP20X_GPIO1_CTRL. Value read with i2cget before is is 0x02

    Change the register values correctly.

    Then on reboot we have : 

    sudo i2cget -y -f 0 0x34 0x33
    0xe9
    sudo i2cget -y -f 0 0x34 0x90
    0x02
    sudo i2cget -y -f 0 0x34 0x92
    0x02

    0x90 and 0x92 reseted (0x33 reset only when booting when AC-plugged in power. Not when PEK pressed...). I check Dmesg and find one difference compared to normal boot without modifications: 

    axp20x-i2c 0-0034: Battery detection is disabled, enabling

    So I check the armbian patch of AXP20X.c and find this error message in this part of the code :

    +	/* Enable battery detection */
    +	ret = regmap_read(axp->regmap, AXP20X_OFF_CTRL, &res);
    +	if (ret == 0) {
    +		if ((res & 0x40) != 0x40) {
    +			dev_info(axp->dev, "Battery detection is disabled, enabling");
    +			ret = regmap_update_bits(axp->regmap, AXP20X_OFF_CTRL, 0x40, 0x40);
    +			if (ret)
    +				dev_warn(axp->dev, "Unable to enable battery detection: %d", ret);
    +		}
    +	} else
    +		dev_warn(axp->dev, "Unable to read register AXP20X_OFF_CTRL: %d", ret);

    interestingly the error is triggered after reading AXP20X_OFF_CTRL ( Reg 0x32)... Which is not one that I have been modifying??

     

    I am not sure to understand what is going on there:

    - Either the i2Cset/I2Cget tool is not working properly.

    - Either something is wrong in the patch. But it looks correct as it uses AXP20X_OFF_CTRL which is 0x32 and change only bit 6 to 1.

    - Either something is wrong with regmap?

     

  4. I found several files about AXP on the torvalds github. Note: Megeous github (torvalds fork which is used for Armbian build if I am not mistaken) files are slightly different...

     

    So the main driver seems to be this one: 

    https://github.com/torvalds/linux/blob/master/drivers/mfd/axp20x.c

    https://github.com/torvalds/linux/blob/master/include/linux/mfd/axp20x.h

    https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/mfd/axp20x.txt

     

    Then there are several complementary-drivers :

    https://github.com/torvalds/linux/blob/master/drivers/input/misc/axp20x-pek.c

    https://github.com/torvalds/linux/blob/master/drivers/mfd/axp20x-i2c.c

    https://github.com/torvalds/linux/blob/master/drivers/regulator/axp20x-regulator.c

    https://github.com/torvalds/linux/blob/master/drivers/iio/adc/axp20x_adc.c

     

    https://github.com/torvalds/linux/blob/master/drivers/power/supply/axp20x_battery.c

    https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/power/supply/axp20x_battery.txt

     

    https://github.com/torvalds/linux/blob/master/drivers/pinctrl/pinctrl-axp209.c

    https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/gpio/gpio-axp209.txt

    Not 100% sure if these last c and txt files are related as there is no gpio-axp209.c nor pinctrl-axp209.txt so I think it's just naming issue.

     

    Then on top of that you have a armbian patch of the main axp20X.c : 

    https://github.com/armbian/build/blob/master/patch/kernel/sunxi-next/general-axp20x-sysfs-interface.patch

     

     

     

     

     

    Or this one seems related but not sure it's included:

    https://github.com/QSchulz/linux/commit/aa13f8990a2482e951f72d5c70c2f4cedf2684c6#diff-dfdc0dfa3d0d84a7e9a84c9baa75b869

  5. I have been trying to do my own scrip to read/write directly reg values with i2C. But changing parameters with i2Cset are overwriten after reboot, probably by the current driver...

     

     

    i2cset -y -f 0 0x34 0x33 0xE9 

    This should change to 4.36V. This setting get reseted to 0xC9 but only when the unit boot on AC connection. Booting on PEK press does not reset it. Very strange.

     

    i2cset -y -f 0 0x34 0x83 0x8C

    This setting does not get reset!

     

    i2cset -y -f 0 0x34 0x90 0x04
    i2cset -y -f 0 0x34 0x92 0x04

    Those two should set the GPIO 0 and 1 functions as ADC. Those don't work they keep reseting to 0x02 after any reboot (AC plugged in boot or PEK press boot)...

     

    i2cget -y -f 0 0x34 0x40

    This REG 40 should be a list of IRQ enabled. Someone suggested bit 6 to be the boot when AC plugged-in parameter. But very strangely the reg40 reads 0x00 instead of normal default value of 0xD8... Same for other IRQ REGs 41 and 42.

     

    So this means the AXP209 driver is messing things up for us..!

  6. Hey guys,

    It seems that some graphics card (probably the one integrated in the a20 processor) are able to manage multiple memory buffer and thus several layers for one display.

     

     

    Is it possible to declare two framebuffers for the main display: like fb0 - layer1 / fb1 - layer2 with alpha channel? So it would be easier to implement overlay display for information about the battery or the brightness level of the screen.

  7. I found relatively little information concerning AXP209 support on mainline.

     

    My targets : 

    - set the battery as 4.35V instead of 4.2V. Datasheet say it's set in REG 33H. Defaut value for register : 0xCX, X being the charge current. if 1200mAh then default value is 0xC9. To change from 4.2 to 4.35V, use EXh (so E9h if you'r using 1200mA) 11001001 to 11101001.)
    - Remove boot when AC plugged in and boot only when PEK is pressed. Datasheet say it's possible is not clear about how to do it. It may be reg40 bit6. I could not test yet as REG40 strangely reads 0x00 with i2cget.
    - Set GPIO0 and GPIO1 as ADC. GPIO0 function is REG 90H (see page 40 datasheet). GPIO1 function is REG 92H.
    Defaut value for both registers : 0x07 (=0000 0111 bin) where bit 0-2 (111) are the function. We need replace with 100 bin for ADC function so 04h
    Also need to enable GPIO ADC in REG 83H bit 2-3 too ! Default value 80H 1000 0000 replace with 8C 1000 1100.

     

    First look

    There are several topics about AXP209 management. However there are different different things and some look deprecated...

    - Some people have been changing the REG values directly with i2Cset. 

    - A Sysfs interface have been developped. But it's not clear whether it's deprecated or not.

    - Apparantly there are "proper drivers" that have been added. But no mention of them anywhere. Nor how to use them to change things or get battery% or anything.

     

    In this topic for example : 

    Where @zador.blood.stained you say : 

    Quote

    Main purpose of this patch is creating a sysfs interface to get information from AXP202/209 PMU until proper power driver is implemented in mainline kernel.

    At the time it was created it was the simplest way to get data from the PMIC or change some settings without using userspace tools like i2cget/i2cset or a custom code based on i2c libraries.

    Newer kernels have received proper drivers - starting with 4.12 there is even a battery driver and an ADC IIO driver, but this patch still can be useful i.e. to enable/disable RTC battery changing on some boards.

     

    Are you talking about this patch ? 

     

    (Which is the one from your github? https://github.com/zador-blood-stained/axp209-sysfs-interface )

     

    If so this patch is deprecated right? If yes then where are the proper drivers you are talking about and how to use them to get current battery voltage, capacity%...?

     

    Thanks

     

     

  8. hey guys,

     

    Using legacy kernel I have trouble having dual output on LCD and HDMI.

     

    I tried to have a cloned dual output (same framebuffer for both) 

    [disp_init]
    disp_init_enable = 1
    disp_mode = 4
    screen0_output_type = 1
    screen0_output_mode = 6
    screen1_output_type = 3
    screen1_output_mode = 4
    fb0_width = 0
    fb0_height = 0
    fb0_framebuffer_num = 2
    fb0_format = 10
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 0
    fb1_width = 1024
    fb1_height = 600
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    ...

    Also tried with 2 framebuffers : 

    [disp_init]
    disp_init_enable = 1
    disp_mode = 2
    screen0_output_type = 1
    screen0_output_mode = 6
    screen1_output_type = 3
    screen1_output_mode = 4
    fb0_width = 0
    fb0_height = 0
    fb0_framebuffer_num = 2
    fb0_format = 10
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 0
    fb1_width = 0
    fb1_height = 0
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    ...

     

    On both case when booting the signal is first on HDMI until kernel starts. Then the signal goes to LCD and HDMI turns off.

     

    Any hint? Full fex below

    Spoiler
    
    [product]
    version = "100"
    machine = "Olimex A20-OLinuXino-LIME2"
    
    [platform]
    eraseflag = 0
    
    [target]
    boot_clock = 912
    dcdc2_vol = 1425
    dcdc3_vol = 1300
    ldo2_vol = 3000
    ldo3_vol = 2800
    ldo4_vol = 2800
    power_start = 1
    storage_type = 0
    
    [clock]
    pll4 = 300
    pll6 = 600
    pll7 = 297
    pll8 = 336
    
    [card_boot]
    logical_start = 40960
    sprite_gpio0 =
    
    [card0_boot_para]
    card_ctrl = 0
    card_high_speed = 1
    card_line = 4
    sdc_d1 = port:PF00<2><1><default><default>
    sdc_d0 = port:PF01<2><1><default><default>
    sdc_clk = port:PF02<2><1><default><default>
    sdc_cmd = port:PF03<2><1><default><default>
    sdc_d3 = port:PF04<2><1><default><default>
    sdc_d2 = port:PF05<2><1><default><default>
    
    [card2_boot_para]
    card_ctrl = 2
    card_high_speed = 1
    card_line = 4
    sdc_cmd = port:PC06<3><1><default><default>
    sdc_clk = port:PC07<3><1><default><default>
    sdc_d0 = port:PC08<3><1><default><default>
    sdc_d1 = port:PC09<3><1><default><default>
    sdc_d2 = port:PC10<3><1><default><default>
    sdc_d3 = port:PC11<3><1><default><default>
    
    [twi_para]
    twi_port = 0
    twi_scl = port:PB00<2><default><default><default>
    twi_sda = port:PB01<2><default><default><default>
    
    [uart_para]
    uart_debug_port = 0
    uart_debug_tx = port:PB22<2><1><default><default>
    uart_debug_rx = port:PB23<2><1><default><default>
    
    [uart_force_debug]
    uart_debug_port = 0
    uart_debug_tx = port:PB22<2><1><default><default>
    uart_debug_rx = port:PB23<2><1><default><default>
    
    [jtag_para]
    jtag_enable = 0
    jtag_ms = port:PB14<3><default><default><default>
    jtag_ck = port:PB15<3><default><default><default>
    jtag_do = port:PB16<3><default><default><default>
    jtag_di = port:PB17<3><default><default><default>
    
    [pm_para]
    standby_mode = 0
    
    [dram_para]
    dram_baseaddr = 0x40000000
    dram_clk = 384
    dram_type = 3
    dram_rank_num = 1
    dram_chip_density = 4096
    dram_io_width = 16
    dram_bus_width = 32
    dram_cas = 9
    dram_zq = 0x7f
    dram_odt_en = 0
    dram_size = 1024
    dram_tpr0 = 0x42d899b7
    dram_tpr1 = 0xa090
    dram_tpr2 = 0x22a00
    dram_tpr3 = 0x0
    dram_tpr4 = 0x1
    dram_tpr5 = 0x0
    dram_emr1 = 0x4
    dram_emr2 = 0x10
    dram_emr3 = 0x0
    
    [mali_para]
    mali_used = 1
    mali_clkdiv = 1
    
    [emac_para]
    emac_used = 1
    emac_rxd3 = port:PA00<2><default><default><default>
    emac_rxd2 = port:PA01<2><default><default><default>
    emac_rxd1 = port:PA02<2><default><default><default>
    emac_rxd0 = port:PA03<2><default><default><default>
    emac_txd3 = port:PA04<2><default><default><default>
    emac_txd2 = port:PA05<2><default><default><default>
    emac_txd1 = port:PA06<2><default><default><default>
    emac_txd0 = port:PA07<2><default><default><default>
    emac_rxclk = port:PA08<2><default><default><default>
    emac_rxerr = port:PA09<2><default><default><default>
    emac_rxdV = port:PA10<2><default><default><default>
    emac_mdc = port:PA11<2><default><default><default>
    emac_mdio = port:PA12<2><default><default><default>
    emac_txen = port:PA13<2><default><default><default>
    emac_txclk = port:PA14<2><default><default><default>
    emac_crs = port:PA15<2><default><default><default>
    emac_col = port:PA16<2><default><default><default>
    emac_reset = port:PA17<1><default><default><default>
    
    [twi0_para]
    twi0_used = 1
    twi0_scl = port:PB00<2><default><default><default>
    twi0_sda = port:PB01<2><default><default><default>
    
    [twi1_para]
    twi1_used = 1
    twi1_scl = port:PB18<2><default><default><default>
    twi1_sda = port:PB19<2><default><default><default>
    
    [twi2_para]
    twi2_used = 1
    twi2_scl = port:PB20<2><default><default><default>
    twi2_sda = port:PB21<2><default><default><default>
    
    [twi3_para]
    twi3_used = 0
    twi3_scl = port:PI00<3><default><default><default>
    twi3_sda = port:PI01<3><default><default><default>
    
    [twi4_para]
    twi4_used = 0
    twi4_scl = port:PI02<3><default><default><default>
    twi4_sda = port:PI03<3><default><default><default>
    
    [uart_para0]
    uart_used = 1
    uart_port = 0
    uart_type = 2
    uart_tx = port:PB22<2><1><default><default>
    uart_rx = port:PB23<2><1><default><default>
    
    [uart_para1]
    uart_used = 0
    uart_port = 1
    uart_type = 8
    uart_tx = port:PA10<4><1><default><default>
    uart_rx = port:PA11<4><1><default><default>
    uart_rts = port:PA12<4><1><default><default>
    uart_cts = port:PA13<4><1><default><default>
    uart_dtr = port:PA14<4><1><default><default>
    uart_dsr = port:PA15<4><1><default><default>
    uart_dcd = port:PA16<4><1><default><default>
    uart_ring = port:PA17<4><1><default><default>
    
    [uart_para2]
    uart_used = 0
    uart_port = 2
    uart_type = 4
    uart_tx = port:PI18<3><1><default><default>
    uart_rx = port:PI19<3><1><default><default>
    uart_rts = port:PI16<3><1><default><default>
    uart_cts = port:PI17<3><1><default><default>
    
    [uart_para3]
    uart_used = 0
    uart_port = 3
    uart_type = 4
    uart_tx = port:PH00<4><1><default><default>
    uart_rx = port:PH01<4><1><default><default>
    uart_rts = port:PH02<4><1><default><default>
    uart_cts = port:PH03<4><1><default><default>
    
    [uart_para4]
    uart_used = 1
    uart_port = 4
    uart_type = 2
    uart_tx = port:PG10<4><1><default><default>
    uart_rx = port:PG11<4><1><default><default>
    
    [uart_para5]
    uart_used = 0
    uart_port = 5
    uart_type = 2
    uart_tx = port:PH06<4><1><default><default>
    uart_rx = port:PH07<4><1><default><default>
    
    [uart_para6]
    uart_used = 0
    uart_port = 6
    uart_type = 2
    uart_tx = port:PI12<3><1><default><default>
    uart_rx = port:PI13<3><1><default><default>
    
    [uart_para7]
    uart_used = 0
    uart_port = 7
    uart_type = 2
    uart_tx = port:PI20<3><1><default><default>
    uart_rx = port:PI21<3><1><default><default>
    
    [spi0_para]
    spi_used = 0
    spi_cs_bitmap = 1
    spi_cs0 = port:PI10<2><default><default><default>
    spi_cs1 = port:PI14<2><default><default><default>
    spi_sclk = port:PI11<2><default><default><default>
    spi_mosi = port:PI12<2><default><default><default>
    spi_miso = port:PI13<2><default><default><default>
    
    [spi1_para]
    spi_used = 0
    spi_cs_bitmap = 1
    spi_cs0 = port:PI16<2><default><default><default>
    spi_sclk = port:PI17<2><default><default><default>
    spi_mosi = port:PI18<2><default><default><default>
    spi_miso = port:PI19<2><default><default><default>
    
    [spi2_para]
    spi_used = 0
    spi_cs_bitmap = 1
    spi_cs0 = port:PC19<3><default><default><default>
    spi_sclk = port:PC20<3><default><default><default>
    spi_mosi = port:PC21<3><default><default><default>
    spi_miso = port:PC22<3><default><default><default>
    
    [spi3_para]
    spi_used = 0
    spi_cs_bitmap = 1
    spi_cs0 = port:PA05<3><default><default><default>
    spi_cs1 = port:PA09<3><default><default><default>
    spi_sclk = port:PA06<3><default><default><default>
    spi_mosi = port:PA07<3><default><default><default>
    spi_miso = port:PA08<3><default><default><default>
    
    [spi_devices]
    spi_dev_num = 0
    
    [spi_board0]
    modalias = "spidev"
    max_speed_hz = 1000000
    bus_num = 2
    chip_select = 0
    mode = 3
    full_duplex = 0
    manual_cs = 0
    
    
    [rtp_para]
    rtp_used = 0
    rtp_screen_size = 5
    rtp_regidity_level = 5
    rtp_press_threshold_enable = 0
    rtp_press_threshold = 0x1f40
    rtp_sensitive_level = 0xf
    rtp_exchange_x_y_flag = 0
    
    [ctp_para]
    ctp_used = 0
    ctp_name = "gt811"
    ctp_twi_id = 2
    ctp_twi_addr = 0x40
    ctp_screen_max_x = 1024
    ctp_screen_max_y = 600
    ctp_revert_x_flag = 0
    ctp_revert_y_flag = 0
    ctp_exchange_x_y_flag = 1
    ctp_firm = 1
    ctp_int_port = port:PH21<6><default><default><default>
    ctp_wakeup = port:PB13<1><default><default><1>
    
    [ctp_list_para]
    ctp_det_used = 0
    ft5x_ts = 0
    gt82x = 0
    gslX680 = 0
    gt9xx_ts = 0
    gt811 = 0
    
    [tkey_para]
    tkey_used = 0
    tkey_twi_id = 2
    tkey_twi_addr = 0x62
    tkey_int = port:PI13<6><default><default><default>
    
    [motor_para]
    motor_used = 0
    motor_shake = port:PB03<1><default><default><1>
    
    [leds_para]
    leds_used = 1
    leds_num = 1
    leds_pin_1 = port:PH02<1><default><default><0>
    leds_name_1 = "green:ph02:led1"
    leds_default_1 = 0
    leds_trigger_1 = "mmc0"
    
    [nand_para]
    nand_used = 1
    nand_we = port:PC00<2><default><default><default>
    nand_ale = port:PC01<2><default><default><default>
    nand_cle = port:PC02<2><default><default><default>
    nand_ce0 = port:PC04<2><default><default><default>
    nand_nre = port:PC05<2><default><default><default>
    nand_rb0 = port:PC06<2><default><default><default>
    nand_d0 = port:PC08<2><default><default><default>
    nand_d1 = port:PC09<2><default><default><default>
    nand_d2 = port:PC10<2><default><default><default>
    nand_d3 = port:PC11<2><default><default><default>
    nand_d4 = port:PC12<2><default><default><default>
    nand_d5 = port:PC13<2><default><default><default>
    nand_d6 = port:PC14<2><default><default><default>
    nand_d7 = port:PC15<2><default><default><default>
    nand_wp = port:PC16<2><default><default><default>
    good_block_ratio = 0
    
    [disp_init]
    disp_init_enable = 1
    disp_mode = 4
    screen0_output_type = 1
    screen0_output_mode = 6
    screen1_output_type = 3
    screen1_output_mode = 4
    fb0_width = 0
    fb0_height = 0
    fb0_framebuffer_num = 2
    fb0_format = 10
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 0
    fb1_width = 1024
    fb1_height = 600
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    lcd0_backlight = 197
    lcd1_backlight = 197
    lcd0_bright = 50
    lcd0_contrast = 50
    lcd0_saturation = 57
    lcd0_hue = 50
    lcd1_bright = 239
    lcd1_contrast = 50
    lcd1_saturation = 57
    lcd1_hue = 50
    
    [lcd0_para]
    lcd_used = 1
    lcd_x = 640
    lcd_y = 480
    lcd_dclk_freq = 33
    lcd_pwm_not_used = 0
    lcd_pwm_ch = 0
    lcd_pwm_freq = 10000
    lcd_pwm_pol = 1
    lcd_max_bright = 240
    lcd_min_bright = 64
    lcd_if = 0
    lcd_hbp = 46
    lcd_ht = 1055
    lcd_vbp = 23
    lcd_vt = 1050
    lcd_vspw = 1
    lcd_hspw = 30
    lcd_hv_if = 0
    lcd_hv_smode = 0
    lcd_hv_s888_if = 0
    lcd_hv_syuv_if = 0
    lcd_lvds_ch = 0
    lcd_lvds_mode = 0
    lcd_lvds_bitwidth = 0
    lcd_lvds_io_cross = 0
    lcd_cpu_if = 0
    lcd_frm = 0
    lcd_io_cfg0 = 0
    lcd_gamma_correction_en = 0
    lcd_gamma_tbl_0 = 0x0
    lcd_gamma_tbl_1 = 0x10101
    lcd_gamma_tbl_255 = 0xffffff
    lcd_pwm_used = 1
    lcd_pwm = port:PB02<2><0><default><default>
    lcdd0 = port:PD00<2><0><default><default>
    lcdd1 = port:PD01<2><0><default><default>
    lcdd2 = port:PD02<2><0><default><default>
    lcdd3 = port:PD03<2><0><default><default>
    lcdd4 = port:PD04<2><0><default><default>
    lcdd5 = port:PD05<2><0><default><default>
    lcdd6 = port:PD06<2><0><default><default>
    lcdd7 = port:PD07<2><0><default><default>
    lcdd8 = port:PD08<2><0><default><default>
    lcdd9 = port:PD09<2><0><default><default>
    lcdd10 = port:PD10<2><0><default><default>
    lcdd11 = port:PD11<2><0><default><default>
    lcdd12 = port:PD12<2><0><default><default>
    lcdd13 = port:PD13<2><0><default><default>
    lcdd14 = port:PD14<2><0><default><default>
    lcdd15 = port:PD15<2><0><default><default>
    lcdd16 = port:PD16<2><0><default><default>
    lcdd17 = port:PD17<2><0><default><default>
    lcdd18 = port:PD18<2><0><default><default>
    lcdd19 = port:PD19<2><0><default><default>
    lcdd20 = port:PD20<2><0><default><default>
    lcdd21 = port:PD21<2><0><default><default>
    lcdd22 = port:PD22<2><0><default><default>
    lcdd23 = port:PD23<2><0><default><default>
    lcdclk = port:PD24<2><0><default><default>
    lcdde = port:PD25<2><0><default><default>
    lcdhsync = port:PD26<2><0><default><default>
    lcdvsync = port:PD27<2><0><default><default>
    
    [lcd1_para]
    lcd_used = 0
    lcd_x = 0
    lcd_y = 0
    lcd_dclk_freq = 0
    lcd_pwm_not_used = 0
    lcd_pwm_ch = 1
    lcd_pwm_freq = 0
    lcd_pwm_pol = 0
    lcd_max_bright = 240
    lcd_min_bright = 64
    lcd_if = 0
    lcd_hbp = 0
    lcd_ht = 0
    lcd_vbp = 0
    lcd_vt = 0
    lcd_vspw = 0
    lcd_hspw = 0
    lcd_hv_if = 0
    lcd_hv_smode = 0
    lcd_hv_s888_if = 0
    lcd_hv_syuv_if = 0
    lcd_lvds_ch = 0
    lcd_lvds_mode = 0
    lcd_lvds_bitwidth = 0
    lcd_lvds_io_cross = 0
    lcd_cpu_if = 0
    lcd_frm = 0
    lcd_io_cfg0 = 0
    lcd_gamma_correction_en = 0
    lcd_gamma_tbl_0 = 0x0
    lcd_gamma_tbl_1 = 0x10101
    lcd_gamma_tbl_255 = 0xffffff
    lcd_bl_en_used = 1
    lcd_bl_en =
    lcd_power_used = 0
    lcd_power =
    lcd_pwm_used = 1
    lcd_pwm = port:PI03<2><0><default><default>
    lcd_gpio_0 =
    lcd_gpio_1 =
    lcd_gpio_2 =
    lcd_gpio_3 =
    lcdd0 = port:PH00<2><0><default><default>
    lcdd1 = port:PH01<2><0><default><default>
    lcdd2 = port:PH02<2><0><default><default>
    lcdd3 = port:PH03<2><0><default><default>
    lcdd4 = port:PH04<2><0><default><default>
    lcdd5 = port:PH05<2><0><default><default>
    lcdd6 = port:PH06<2><0><default><default>
    lcdd7 = port:PH07<2><0><default><default>
    lcdd8 = port:PH08<2><0><default><default>
    lcdd9 = port:PH09<2><0><default><default>
    lcdd10 = port:PH10<2><0><default><default>
    lcdd11 = port:PH11<2><0><default><default>
    lcdd12 = port:PH12<2><0><default><default>
    lcdd13 = port:PH13<2><0><default><default>
    lcdd14 = port:PH14<2><0><default><default>
    lcdd15 = port:PH15<2><0><default><default>
    lcdd16 = port:PH16<2><0><default><default>
    lcdd17 = port:PH17<2><0><default><default>
    lcdd18 = port:PH18<2><0><default><default>
    lcdd19 = port:PH19<2><0><default><default>
    lcdd20 = port:PH20<2><0><default><default>
    lcdd21 = port:PH21<2><0><default><default>
    
    [tv_out_dac_para]
    dac_used = 0
    dac0_src = 4
    dac1_src = 5
    dac2_src = 6
    dac3_src = 0
    
    [hdmi_para]
    hdmi_used = 1
    
    [camera_list_para]
    camera_list_para_used = 1
    ov7670 = 0
    gc0308 = 0
    gt2005 = 1
    hi704 = 0
    sp0838 = 0
    mt9m112 = 0
    mt9m113 = 0
    ov2655 = 0
    hi253 = 0
    gc0307 = 0
    mt9d112 = 0
    ov5640 = 0
    gc2015 = 0
    ov2643 = 0
    gc0329 = 0
    gc0309 = 0
    tvp5150 = 0
    s5k4ec = 0
    ov5650_mv9335 = 0
    siv121d = 0
    gc2035 = 0
    
    [csi0_para]
    csi_used = 0
    csi_dev_qty = 1
    csi_stby_mode = 0
    csi_mname = "gt2005"
    csi_twi_id = 1
    csi_twi_addr = 0x78
    csi_if = 0
    csi_vflip = 0
    csi_hflip = 0
    csi_iovdd = "axp20_pll"
    csi_avdd = ""
    csi_dvdd = ""
    csi_vol_iovdd = 2800
    csi_vol_dvdd =
    csi_vol_avdd =
    csi_flash_pol = 0
    csi_pck = port:PE00<3><default><default><default>
    csi_ck = port:PE01<3><default><default><default>
    csi_hsync = port:PE02<3><default><default><default>
    csi_vsync = port:PE03<3><default><default><default>
    csi_d0 = port:PE04<3><default><default><default>
    csi_d1 = port:PE05<3><default><default><default>
    csi_d2 = port:PE06<3><default><default><default>
    csi_d3 = port:PE07<3><default><default><default>
    csi_d4 = port:PE08<3><default><default><default>
    csi_d5 = port:PE09<3><default><default><default>
    csi_d6 = port:PE10<3><default><default><default>
    csi_d7 = port:PE11<3><default><default><default>
    csi_reset = port:PH13<1><default><default><0>
    csi_power_en = port:PC16<1><default><default><0>
    csi_stby = port:PH12<1><default><default><0>
    csi_flash =
    csi_af_en =
    
    [csi1_para]
    csi_used = 0
    csi_dev_qty = 1
    csi_stby_mode = 0
    csi_mname = "gc0308"
    csi_if = 0
    csi_iovdd = "axp20_pll"
    csi_avdd = ""
    csi_dvdd = ""
    csi_vol_iovdd = 2800
    csi_vol_dvdd =
    csi_vol_avdd =
    csi_vflip = 0
    csi_hflip = 0
    csi_flash_pol = 0
    csi_facing = 1
    csi_twi_id = 1
    csi_twi_addr = 0x42
    csi_pck = port:PG00<3><default><default><default>
    csi_ck = port:PG01<3><default><default><default>
    csi_hsync = port:PG02<3><default><default><default>
    csi_vsync = port:PG03<3><default><default><default>
    csi_d0 = port:PG04<3><default><default><default>
    csi_d1 = port:PG05<3><default><default><default>
    csi_d2 = port:PG06<3><default><default><default>
    csi_d3 = port:PG07<3><default><default><default>
    csi_d4 = port:PG08<3><default><default><default>
    csi_d5 = port:PG09<3><default><default><default>
    csi_d6 = port:PG10<3><default><default><default>
    csi_d7 = port:PG11<3><default><default><default>
    csi_reset = port:PH13<1><default><default><0>
    csi_power_en = port:PH16<1><default><default><0>
    csi_stby = port:PH19<1><default><default><0>
    
    [tvout_para]
    tvout_used = 0
    tvout_channel_num = 1
    
    [tvin_para]
    tvin_used = 0
    tvin_channel_num = 4
    
    [pwm0_para]
    pwm_used = 1
    pwm_period = 20
    pwm_duty_percent = 50
    
    [sata_para]
    sata_used = 1
    sata_power_en = 
    
    [mmc0_para]
    sdc_used = 1
    sdc_detmode = 1
    sdc_buswidth = 4
    sdc_clk = port:PF02<2><1><2><default>
    sdc_cmd = port:PF03<2><1><2><default>
    sdc_d0 = port:PF01<2><1><2><default>
    sdc_d1 = port:PF00<2><1><2><default>
    sdc_d2 = port:PF05<2><1><2><default>
    sdc_d3 = port:PF04<2><1><2><default>
    sdc_det = port:PH01<0><1><default><default>
    sdc_use_wp = 0
    sdc_wp =
    sdc_isio = 0
    sdc_regulator = "none"
    
    [mmc1_para]
    sdc_used = 0
    sdc_detmode = 4
    sdc_buswidth = 4
    sdc_clk = port:PG00<2><1><2><default>
    sdc_cmd = port:PG01<2><1><2><default>
    sdc_d0 = port:PG02<2><1><2><default>
    sdc_d1 = port:PG03<2><1><2><default>
    sdc_d2 = port:PG04<2><1><2><default>
    sdc_d3 = port:PG05<2><1><2><default>
    sdc_det =
    sdc_use_wp = 0
    sdc_wp =
    sdc_isio = 0
    sdc_regulator = "none"
    
    [mmc2_para]
    sdc_used = 0
    sdc_detmode = 3
    sdc_buswidth = 4
    sdc_cmd = port:PC06<3><1><2><default>
    sdc_clk = port:PC07<3><1><2><default>
    sdc_d0 = port:PC08<3><1><2><default>
    sdc_d1 = port:PC09<3><1><2><default>
    sdc_d2 = port:PC10<3><1><2><default>
    sdc_d3 = port:PC11<3><1><2><default>
    sdc_det =
    sdc_use_wp = 0
    sdc_wp =
    sdc_isio = 0
    sdc_regulator = "none"
    
    [mmc3_para]
    sdc_used = 0
    sdc_detmode = 1
    sdc_buswidth = 4
    sdc_cmd = port:PI04<2><1><2><default>
    sdc_clk = port:PI05<2><1><2><default>
    sdc_d0 = port:PI06<2><1><2><default>
    sdc_d1 = port:PI07<2><1><2><default>
    sdc_d2 = port:PI08<2><1><2><default>
    sdc_d3 = port:PI09<2><1><2><default>
    sdc_det = port:PH00<0><1><default><default>
    sdc_use_wp = 0
    sdc_wp =
    sdc_isio = 1
    sdc_regulator = "none"
    
    [ms_para]
    ms_used = 0
    ms_bs = port:PH06<5><default><default><default>
    ms_clk = port:PH07<5><default><default><default>
    ms_d0 = port:PH08<5><default><default><default>
    ms_d1 = port:PH09<5><default><default><default>
    ms_d2 = port:PH10<5><default><default><default>
    ms_d3 = port:PH11<5><default><default><default>
    ms_det =
    
    [smc_para]
    smc_used = 0
    smc_rst = port:PH13<5><default><default><default>
    smc_vppen = port:PH14<5><default><default><default>
    smc_vppp = port:PH15<5><default><default><default>
    smc_det = port:PH16<5><default><default><default>
    smc_vccen = port:PH17<5><default><default><default>
    smc_sck = port:PH18<5><default><default><default>
    smc_sda = port:PH19<5><default><default><default>
    
    [ps2_0_para]
    ps2_used = 0
    ps2_scl = port:PI20<2><1><default><default>
    ps2_sda = port:PI21<2><1><default><default>
    
    [ps2_1_para]
    ps2_used = 0
    ps2_scl = port:PI14<3><1><default><default>
    ps2_sda = port:PI15<3><1><default><default>
    
    [can_para]
    can_used = 0
    can_tx = port:PA16<3><default><default><default>
    can_rx = port:PA17<3><default><default><default>
    
    [keypad_para]
    kp_used = 0
    kp_in_size = 8
    kp_out_size = 8
    kp_in0 = port:PH08<4><1><default><default>
    kp_in1 = port:PH09<4><1><default><default>
    kp_in2 = port:PH10<4><1><default><default>
    kp_in3 = port:PH11<4><1><default><default>
    kp_in4 = port:PH14<4><1><default><default>
    kp_in5 = port:PH15<4><1><default><default>
    kp_in6 = port:PH16<4><1><default><default>
    kp_in7 = port:PH17<4><1><default><default>
    kp_out0 = port:PH18<4><1><default><default>
    kp_out1 = port:PH19<4><1><default><default>
    kp_out2 = port:PH22<4><1><default><default>
    kp_out3 = port:PH23<4><1><default><default>
    kp_out4 = port:PH24<4><1><default><default>
    kp_out5 = port:PH25<4><1><default><default>
    kp_out6 = port:PH26<4><1><default><default>
    kp_out7 = port:PH27<4><1><default><default>
    
    [usbc0]
    usb_used = 1
    usb_port_type = 1
    usb_detect_type = 0
    usb_drv_vbus_gpio = port:PC17<1><0><default><0>
    usb_restrict_gpio =
    usb_host_init_state = 1
    usb_restric_flag = 0
    
    [usbc1]
    usb_used = 1
    usb_port_type = 1
    usb_detect_type = 0
    usb_drv_vbus_gpio = port:PH06<1><0><default><0>
    usb_restrict_gpio =
    usb_host_init_state = 1
    usb_restric_flag = 0
    
    [usbc2]
    usb_used = 1
    usb_port_type = 1
    usb_detect_type = 0
    usb_drv_vbus_gpio = port:PH17<1><0><default><0>
    usb_restrict_gpio =
    usb_host_init_state = 1
    usb_restric_flag = 0
    
    [usb_feature]
    vendor_id = 6353
    mass_storage_id = 1
    adb_id = 2
    manufacturer_name = "USB Developer"
    product_name = "Android"
    serial_number = "20080411"
    
    [msc_feature]
    vendor_name = "USB 2.0"
    product_name = "USB Flash Driver"
    release = 100
    luns = 3
    
    [gsensor_para]
    gsensor_used = 0
    gsensor_twi_id = 1
    gsensor_int1 =
    gsensor_int2 =
    
    [gsensor_list_para]
    gsensor_det_used = 0
    bma250 = 1
    mma8452 = 1
    mma7660 = 1
    mma865x = 1
    afa750 = 1
    lis3de_acc = 1
    lis3dh_acc = 1
    kxtik = 1
    dmard10 = 0
    dmard06 = 1
    mxc622x = 1
    fxos8700 = 1
    lsm303d = 1
    
    [gps_para]
    gps_used = 0
    gps_spi_id = 2
    gps_spi_cs_num = 0
    gps_lradc = 1
    gps_clk = port:PI00<2><default><default><default>
    gps_sign = port:PI01<2><default><default><default>
    gps_mag = port:PI02<2><default><default><default>
    gps_vcc_en = port:PC22<1><default><default><0>
    gps_osc_en = port:PI14<1><default><default><0>
    gps_rx_en = port:PI15<1><default><default><0>
    
    [wifi_para]
    wifi_used = 0
    wifi_sdc_id = 3
    wifi_usbc_id = 2
    wifi_usbc_type = 1
    wifi_mod_sel = 7
    wifi_power = ""
    ap6xxx_wl_regon = port:PH09<1><default><default><0>
    ap6xxx_bt_regon = port:PH18<1><default><default><0>
    ap6xxx_bt_wake = port:PH24<1><default><default><0>
    ap6xxx_bt_host_wake = port:PH25<0><default><default><0>
    ap6xxx_lpo = port:PI12<4><1><default><1>
    
    [usb_wifi_para]
    usb_wifi_used = 1
    usb_wifi_usbc_num = 2
    
    [3g_para]
    3g_used = 0
    3g_usbc_num = 2
    3g_uart_num = 0
    3g_pwr =
    3g_wakeup =
    3g_int =
    
    [gy_para]
    gy_used = 0
    gy_twi_id = 1
    gy_twi_addr = 0
    gy_int1 = port:PH18<6><1><default><default>
    gy_int2 = port:PH19<6><1><default><default>
    
    [ls_para]
    ls_used = 0
    ls_twi_id = 1
    ls_twi_addr = 0
    ls_int = port:PH20<6><1><default><default>
    
    [compass_para]
    compass_used = 0
    compass_twi_id = 1
    compass_twi_addr = 0
    compass_int = port:PI13<6><1><default><default>
    
    [bt_para]
    bt_used = 1
    bt_uart_id = 2
    
    [i2s_para]
    i2s_used = 0
    i2s_channel = 2
    i2s_mclk = port:PB05<2><1><default><default>
    i2s_bclk = port:PB06<2><1><default><default>
    i2s_lrclk = port:PB07<2><1><default><default>
    i2s_dout0 = port:PB08<2><1><default><default>
    i2s_dout1 =
    i2s_dout2 =
    i2s_dout3 =
    i2s_din = port:PB12<2><1><default><default>
    
    [spdif_para]
    spdif_used = 0
    spdif_mclk =
    spdif_dout = port:PB13<4><1><default><default>
    spdif_din =
    
    [audio_para]
    audio_used = 1
    capture_used = 1
    playback_used = 1
    audio_lr_change = 0
    
    [switch_para]
    switch_used = 1
    
    [ir_para]
    ir_used = 0
    ir0_rx = port:PB04<2><default><default><default>
    
    [pmu_para]
    pmu_used = 1
    pmu_twi_addr = 52
    pmu_twi_id = 0
    pmu_irq_id = 32
    pmu_battery_rdc = 120
    pmu_battery_cap = 4000
    pmu_init_chgcur = 300
    pmu_earlysuspend_chgcur = 600
    pmu_suspend_chgcur = 1000
    pmu_resume_chgcur = 300
    pmu_shutdown_chgcur = 1000
    pmu_init_chgvol = 4200
    pmu_init_chgend_rate = 15
    pmu_init_chg_enabled = 1
    pmu_init_adc_freq = 100
    pmu_init_adc_freqc = 100
    pmu_init_chg_pretime = 50
    pmu_init_chg_csttime = 720
    pmu_bat_para1 = 0
    pmu_bat_para2 = 0
    pmu_bat_para3 = 0
    pmu_bat_para4 = 0
    pmu_bat_para5 = 5
    pmu_bat_para6 = 11
    pmu_bat_para7 = 13
    pmu_bat_para8 = 15
    pmu_bat_para9 = 19
    pmu_bat_para10 = 32
    pmu_bat_para11 = 50
    pmu_bat_para12 = 58
    pmu_bat_para13 = 71
    pmu_bat_para14 = 81
    pmu_bat_para15 = 89
    pmu_bat_para16 = 100
    pmu_usbvol_limit = 1
    pmu_usbcur_limit = 0
    pmu_usbvol = 4000
    pmu_usbcur = 0
    pmu_usbvol_pc = 4200
    pmu_usbcur_pc = 0
    pmu_pwroff_vol = 3300
    pmu_pwron_vol = 2900
    pmu_pekoff_time = 6000
    pmu_pekoff_en = 1
    pmu_peklong_time = 1500
    pmu_pekon_time = 1000
    pmu_pwrok_time = 64
    pmu_pwrnoe_time = 2000
    pmu_intotp_en = 1
    pmu_used2 = 0
    pmu_adpdet = port:PH02<0><default><default><default>
    pmu_init_chgcur2 = 400
    pmu_earlysuspend_chgcur2 = 600
    pmu_suspend_chgcur2 = 1200
    pmu_resume_chgcur2 = 400
    pmu_shutdown_chgcur2 = 1200
    pmu_suspendpwroff_vol = 3500
    pmu_batdeten = 1
    pmu_backupen = 0
    
    [recovery_key]
    key_min = 4
    key_max = 40
    
    [dvfs_table]
    max_freq = 1008000000
    min_freq = 720000000
    normal_freq = 720000000
    LV_count = 7
    LV1_freq = 1008000000
    LV1_volt = 1450
    LV2_freq = 912000000
    LV2_volt = 1425
    LV3_freq = 864000000
    LV3_volt = 1350
    LV4_freq = 720000000
    LV4_volt = 1250
    LV5_freq = 528000000
    LV5_volt = 1150
    LV6_freq = 312000000
    LV6_volt = 1100
    LV7_freq = 144000000
    LV7_volt = 1050
    
    [gpio_para]
    gpio_used = 1
    gpio_num = 67
    gpio_pin_1 = port:PG00<0><default><default><default>
    gpio_pin_2 = port:PG01<0><default><default><default>
    gpio_pin_3 = port:PG02<0><default><default><default>
    gpio_pin_4 = port:PG03<0><default><default><default>
    gpio_pin_5 = port:PG04<0><default><default><default>
    gpio_pin_6 = port:PG05<0><default><default><default>
    gpio_pin_7 = port:PG06<0><default><default><default>
    gpio_pin_8 = port:PG07<0><default><default><default>
    gpio_pin_9 = port:PG08<0><default><default><default>
    gpio_pin_10 = port:PG09<0><default><default><default>
    gpio_pin_11 = port:PC07<0><default><default><default>
    gpio_pin_12 = port:PC18<0><default><default><default>
    gpio_pin_13 = port:PC23<0><default><default><default>
    gpio_pin_14 = port:PC24<0><default><default><default>
    gpio_pin_15 = port:PH00<0><default><default><default>
    gpio_pin_16 = port:PH02<0><default><default><default>
    gpio_pin_17 = port:PH09<0><default><default><default>
    gpio_pin_18 = port:PH10<0><default><default><default>
    gpio_pin_19 = port:PH11<0><default><default><default>
    gpio_pin_20 = port:PH12<0><default><default><default>
    gpio_pin_21 = port:PH13<0><default><default><default>
    gpio_pin_22 = port:PH14<0><default><default><default>
    gpio_pin_23 = port:PH15<0><default><default><default>
    gpio_pin_24 = port:PH16<0><default><default><default>
    gpio_pin_25 = port:PH17<0><default><default><default>
    gpio_pin_26 = port:PH18<0><default><default><default>
    gpio_pin_27 = port:PH19<0><default><default><default>
    gpio_pin_28 = port:PH20<0><default><default><default>
    gpio_pin_29 = port:PH21<0><default><default><default>
    gpio_pin_30 = port:PH22<0><default><default><default>
    gpio_pin_31 = port:PH23<0><default><default><default>
    gpio_pin_32 = port:PH24<0><default><default><default>
    gpio_pin_33 = port:PH25<0><default><default><default>
    gpio_pin_34 = port:PH26<0><default><default><default>
    gpio_pin_35 = port:PH27<0><default><default><default>
    gpio_pin_36 = port:PB03<0><default><default><default>
    gpio_pin_37 = port:PB04<0><default><default><default>
    gpio_pin_38 = port:PB05<0><default><default><default>
    gpio_pin_39 = port:PB06<0><default><default><default>
    gpio_pin_40 = port:PB07<0><default><default><default>
    gpio_pin_41 = port:PB08<0><default><default><default>
    gpio_pin_42 = port:PB10<0><default><default><default>
    gpio_pin_43 = port:PB11<0><default><default><default>
    gpio_pin_44 = port:PB12<0><default><default><default>
    gpio_pin_45 = port:PB13<0><default><default><default>
    gpio_pin_46 = port:PB14<0><default><default><default>
    gpio_pin_47 = port:PB15<0><default><default><default>
    gpio_pin_48 = port:PB16<0><default><default><default>
    gpio_pin_49 = port:PB17<0><default><default><default>
    gpio_pin_50 = port:PI00<0><default><default><default>
    gpio_pin_51 = port:PI01<0><default><default><default>
    gpio_pin_52 = port:PI02<0><default><default><default>
    gpio_pin_53 = port:PI03<0><default><default><default>
    gpio_pin_54 = port:PI04<0><default><default><default>
    gpio_pin_55 = port:PI05<0><default><default><default>
    gpio_pin_56 = port:PI06<0><default><default><default>
    gpio_pin_57 = port:PI07<0><default><default><default>
    gpio_pin_58 = port:PI08<0><default><default><default>
    gpio_pin_59 = port:PI09<0><default><default><default>
    gpio_pin_60 = port:PI10<0><default><default><default>
    gpio_pin_61 = port:PI11<0><default><default><default>
    gpio_pin_62 = port:PI14<0><default><default><default>
    gpio_pin_63 = port:PI15<0><default><default><default>
    gpio_pin_64 = port:PI16<0><default><default><default>
    gpio_pin_65 = port:PI17<0><default><default><default>
    gpio_pin_66 = port:PI18<0><default><default><default>
    gpio_pin_67 = port:PI19<0><default><default><default>
    
    [gpio_init]
    pin_1 = port:PG00<0><default><default><default>
    pin_2 = port:PG01<0><default><default><default>
    pin_3 = port:PG02<0><default><default><default>
    pin_4 = port:PG03<0><default><default><default>
    pin_5 = port:PG04<0><default><default><default>
    pin_6 = port:PG05<0><default><default><default>
    pin_7 = port:PG06<0><default><default><default>
    pin_8 = port:PG07<0><default><default><default>
    pin_9 = port:PG08<0><default><default><default>
    pin_10 = port:PG09<0><default><default><default>
    pin_11 = port:PC07<0><default><default><default>
    pin_12 = port:PC18<0><default><default><default>
    pin_13 = port:PC23<0><default><default><default>
    pin_14 = port:PC24<0><default><default><default>
    pin_15 = port:PH00<0><default><default><default>
    pin_16 = port:PH02<0><default><default><default>
    pin_17 = port:PH09<0><default><default><default>
    pin_18 = port:PH10<0><default><default><default>
    pin_19 = port:PH11<0><default><default><default>
    pin_20 = port:PH12<0><default><default><default>
    pin_21 = port:PH13<0><default><default><default>
    pin_22 = port:PH14<0><default><default><default>
    pin_23 = port:PH15<0><default><default><default>
    pin_24 = port:PH16<0><default><default><default>
    pin_25 = port:PH17<0><default><default><default>
    pin_26 = port:PH18<0><default><default><default>
    pin_27 = port:PH19<0><default><default><default>
    pin_28 = port:PH20<0><default><default><default>
    pin_29 = port:PH21<0><default><default><default>
    pin_30 = port:PH22<0><default><default><default>
    pin_31 = port:PH23<0><default><default><default>
    pin_32 = port:PH24<0><default><default><default>
    pin_33 = port:PH25<0><default><default><default>
    pin_34 = port:PH26<0><default><default><default>
    pin_35 = port:PH27<0><default><default><default>
    pin_36 = port:PB03<0><default><default><default>
    pin_37 = port:PB04<0><default><default><default>
    pin_38 = port:PB05<0><default><default><default>
    pin_39 = port:PB06<0><default><default><default>
    pin_40 = port:PB07<0><default><default><default>
    pin_41 = port:PB08<0><default><default><default>
    pin_42 = port:PB10<0><default><default><default>
    pin_43 = port:PB11<0><default><default><default>
    pin_44 = port:PB12<0><default><default><default>
    pin_45 = port:PB13<0><default><default><default>
    pin_46 = port:PB14<0><default><default><default>
    pin_47 = port:PB15<0><default><default><default>
    pin_48 = port:PB16<0><default><default><default>
    pin_49 = port:PB17<0><default><default><default>
    pin_50 = port:PI00<0><default><default><default>
    pin_51 = port:PI01<0><default><default><default>
    pin_52 = port:PI02<0><default><default><default>
    pin_53 = port:PI03<0><default><default><default>
    pin_54 = port:PI04<0><default><default><default>
    pin_55 = port:PI05<0><default><default><default>
    pin_56 = port:PI06<0><default><default><default>
    pin_57 = port:PI07<0><default><default><default>
    pin_58 = port:PI08<0><default><default><default>
    pin_59 = port:PI09<0><default><default><default>
    pin_60 = port:PI10<0><default><default><default>
    pin_61 = port:PI11<0><default><default><default>
    pin_62 = port:PI14<0><default><default><default>
    pin_63 = port:PI15<0><default><default><default>
    pin_64 = port:PI16<0><default><default><default>
    pin_65 = port:PI17<0><default><default><default>
    pin_66 = port:PI18<0><default><default><default>
    pin_67 = port:PI19<0><default><default><default>

     

     

  9. Hey guys,

    What is in your opinion the best solution to add WIFI/BT capability to a A20 board?

     

    Currently I tried to add ESP8266 connected with SDIO. (without much success so far).

    Then in order to add BT too I am thinking about ESP32 (with ESP-WROOM-32 module).

     

    Do you know if there are references of using this ESP32 solution to provide wifi and bt to a allwinner board/armbian ?

     

    Also this module have a lot of different interfaces available, which should be prefered?

     

    Or alternatively, do you know other armbian supported solution for wifi/bt? Best would be a solution that does not use USB ports as I need them.

     

    Thanks!

     

  10. Hey guys,

    Using a A20 board with AXP209, using mainline, I am trying to add a battery indicator as an overlay on video signal so that user can see remaining battery %. Something similar to smartphone battery indicator.

     

    Any idea how to do this?

     

    This shows how to get battery % but how to add an overlay? 

     

    This sounds like something that probably have already been done. Do you know any existing reference ?

     

  11. Hi Tido,

    Thanks for your feedback.

    Finally the FJ035CI54-R40 could work on legacy. Without even timing values. So it seems timing values are not critical to get picture... The error was probably somewhere else, I still need to do some test to find out more precisely.

     

    Here's the fex that works with legacy and FJ035CI54-R40 for reference.

    Spoiler
    
    [disp_init]
    disp_init_enable = 1
    disp_mode = 0
    screen0_output_type = 1
    screen0_output_mode = 6
    screen1_output_type = 1
    screen1_output_mode = 6
    fb0_width = 0
    fb0_height = 0
    fb0_framebuffer_num = 2
    fb0_format = 10
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 0
    fb1_width = 1024
    fb1_height = 600
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    lcd0_backlight = 197
    lcd1_backlight = 197
    lcd0_bright = 50
    lcd0_contrast = 50
    lcd0_saturation = 57
    lcd0_hue = 50
    lcd1_bright = 239
    lcd1_contrast = 50
    lcd1_saturation = 57
    lcd1_hue = 50
    
    [lcd0_para]
    lcd_used = 1
    lcd_x = 640
    lcd_y = 480
    lcd_dclk_freq = 64
    lcd_pwm_not_used = 0
    lcd_pwm_ch = 0
    lcd_pwm_freq = 22000
    lcd_pwm_pol = 0
    lcd_max_bright = 240
    lcd_min_bright = 64
    lcd_if = 0
    lcd_hbp = 42
    lcd_ht = 808
    lcd_vbp = 14
    lcd_vt = 2624
    lcd_vspw = 3
    lcd_hspw = 30
    lcd_hv_if = 0
    lcd_hv_smode = 0
    lcd_hv_s888_if = 0
    lcd_hv_syuv_if = 0
    lcd_lvds_ch = 0
    lcd_lvds_mode = 0
    lcd_lvds_bitwidth = 0
    lcd_lvds_io_cross = 0
    lcd_cpu_if = 0
    lcd_frm = 0
    lcd_io_cfg0 = 0
    lcd_gamma_correction_en = 0
    lcd_gamma_tbl_0 = 0x0
    lcd_gamma_tbl_1 = 0x10101
    lcd_gamma_tbl_255 = 0xffffff
    lcd_pwm_used = 1
    lcd_pwm = port:PB02<2><0><default><default>
    lcdd0 = port:PD00<2><0><3><default>
    lcdd1 = port:PD01<2><0><3><default>
    lcdd2 = port:PD02<2><0><3><default>
    lcdd3 = port:PD03<2><0><3><default>
    lcdd4 = port:PD04<2><0><3><default>
    lcdd5 = port:PD05<2><0><3><default>
    lcdd6 = port:PD06<2><0><3><default>
    lcdd7 = port:PD07<2><0><3><default>
    lcdd8 = port:PD08<2><0><3><default>
    lcdd9 = port:PD09<2><0><3><default>
    lcdd10 = port:PD10<2><0><3><default>
    lcdd11 = port:PD11<2><0><3><default>
    lcdd12 = port:PD12<2><0><3><default>
    lcdd13 = port:PD13<2><0><3><default>
    lcdd14 = port:PD14<2><0><3><default>
    lcdd15 = port:PD15<2><0><3><default>
    lcdd16 = port:PD16<2><0><3><default>
    lcdd17 = port:PD17<2><0><3><default>
    lcdd18 = port:PD18<2><0><3><default>
    lcdd19 = port:PD19<2><0><3><default>
    lcdd20 = port:PD20<2><0><3><default>
    lcdd21 = port:PD21<2><0><3><default>
    lcdd22 = port:PD22<2><0><3><default>
    lcdd23 = port:PD23<2><0><3><default>
    lcdclk = port:PD24<2><0><3><default>
    lcdde = port:PD25<1><0><3><0>
    lcdhsync = port:PD26<2><0><3><default>
    lcdvsync = port:PD27<2><0><3><default>

     

     

  12. Hey guys,

    Some questions about LCD interfacing.

     

    I have a A20 board and 2 LCD, one 640*480 3.5" (FJ035CI54-R40), one 320*240 3.5" (LQ035NC111, same as bananapi LCD). Both LCD have the same pinout, formfactor and ribbon so should be hardware compatible.

     

    1 - LQ035NC111 

    I could get the LQ035NC111 to work on legacy kernel with the following script.fex (for reference)

    Spoiler

     

    
    [disp_init]
    disp_init_enable = 1
    disp_mode = 0
    screen0_output_type = 1
    screen0_output_mode = 4
    screen1_output_type = 2
    screen1_output_mode = 11
    fb0_framebuffer_num = 2
    fb0_format = 10
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 1
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    lcd0_backlight = 197
    lcd1_backlight = 197
    lcd0_bright = 50
    lcd0_contrast = 50
    lcd0_saturation = 57
    lcd0_hue = 50
    lcd1_bright = 50
    lcd1_contrast = 50
    lcd1_saturation = 57
    lcd1_hue = 50
    
    [lcd0_para]
    lcd_used = 1
    lcd_x = 320
    lcd_y = 240
    lcd_dclk_freq = 7
    lcd_pwm_not_used = 0
    lcd_pwm_ch = 0
    lcd_pwm_freq = 22000
    lcd_pwm_pol = 0
    lcd_max_bright = 240
    lcd_min_bright = 64
    lcd_if = 0
    lcd_hbp = 68
    lcd_ht = 408
    lcd_vbp = 18
    lcd_vt = 524
    lcd_vspw = 3
    lcd_hspw = 30
    lcd_hv_if = 0
    lcd_hv_smode = 0
    lcd_hv_s888_if = 0
    lcd_hv_syuv_if = 0
    lcd_lvds_ch = 0
    lcd_lvds_mode = 0
    lcd_lvds_bitwidth = 0
    lcd_lvds_io_cross = 0
    lcd_cpu_if = 0
    lcd_frm = 0
    lcd_io_cfg0 = 268435456
    lcd_gamma_correction_en = 0
    lcd_gamma_tbl_0 = 0x0
    lcd_gamma_tbl_1 = 0x10101
    lcd_gamma_tbl_255 = 0xffffff
    lcd_pwm_used = 1
    lcd_pwm = port:PB02<2><0><default><default>
    lcdd0 = port:PD00<2><0><3><default>
    lcdd1 = port:PD01<2><0><3><default>
    lcdd2 = port:PD02<2><0><3><default>
    lcdd3 = port:PD03<2><0><3><default>
    lcdd4 = port:PD04<2><0><3><default>
    lcdd5 = port:PD05<2><0><3><default>
    lcdd6 = port:PD06<2><0><3><default>
    lcdd7 = port:PD07<2><0><3><default>
    lcdd8 = port:PD08<2><0><3><default>
    lcdd9 = port:PD09<2><0><3><default>
    lcdd10 = port:PD10<2><0><3><default>
    lcdd11 = port:PD11<2><0><3><default>
    lcdd12 = port:PD12<2><0><3><default>
    lcdd13 = port:PD13<2><0><3><default>
    lcdd14 = port:PD14<2><0><3><default>
    lcdd15 = port:PD15<2><0><3><default>
    lcdd16 = port:PD16<2><0><3><default>
    lcdd17 = port:PD17<2><0><3><default>
    lcdd18 = port:PD18<2><0><3><default>
    lcdd19 = port:PD19<2><0><3><default>
    lcdd20 = port:PD20<2><0><3><default>
    lcdd21 = port:PD21<2><0><3><default>
    lcdd22 = port:PD22<2><0><3><default>
    lcdd23 = port:PD23<2><0><3><default>
    lcdclk = port:PD24<2><0><3><default>
    lcdde = port:PD25<1><0><3><0>
    lcdhsync = port:PD26<2><0><3><default>
    lcdvsync = port:PD27<2><0><3><default>

    But can't get it to work with mainline. With mainline I get a white rectangle flashing on the left side of the screen. Interestingly I can reproduce the exact same bug with legacy by changing all the pin configurations from 

    lcdd0 = port:PD00<2><0><3><default>
    lcdd1...

    to

    lcdd0 = port:PD00<2><0><default><default>
    lcdd1...

    Looking at fex guide I see that the third parameter is "<drive capability> defines the output drive in mA, values are 0-3 corresponding to 10mA, 20mA, 30mA and 40mA."

     

    As the visual issue is exactly the same on mainline I guess the problem must come from this but I can't figure out how to change this drive capability in mainline. Any guess?

     

    2 - FJ035CI54-R40

    So for this LCD I can't get over a black screen (Backlight is working). The tricky part is that the datasheet (enclosed) is not clear for me. Also supplier gave me additional data which seem different than datasheet.

    #define  HT  680   //Horizontal total period = (HT + 1) pixels
    #define  HPS 2   //Horizontal Sync Pulse Start Position = (HPS + 1) pixels     
    #define  LPS 20   //Horizontal Display Period Start Position = LPS pixels  
    #define  HPW 20   //Horizontal Sync Pulse Width = (HPW + 1) pixels 
    
    #define  VT 550  //Vertical Total = (VT + 1) lines
    #define  VPS 2 //Vertical Sync Pulse Start Position = VPS lines       
    #define  FPS 6   //Vertical Display Period Start Position = FPS lines      
    #define  VPW 12  //Vertical Sync Pulse Width = (VPW + 1) lines
    
    #define HSPW 2 
    #define HBPD 20
    #define HFPD 20 
    
    #define VSPW 2 
    #define VBPD 6 
    #define VFPD 12
    
    //DCLK=20MHZ

     

    On page 6 of datasheet the timing data looks different, but it may just be a misunderstanding from me. For instance datasheet say PCLK = 63.61MHz, but the file above say DCLK = 20MHZ (even if commented out). Do you know what is the difference between PCLK and DLCK? (The inconsistancy between LCD datasheets parameter names and symbols is killing me.)

     

    Also the datasheet say "The RGB only support the DE mode: HSYNC,VSYNC,DCLK and DE pin ."

    It seems from fex guide that mode can be set by "lcd_if" value. However there is no DE mode. Only :

    Quote

     

    hv (sync + de)

    8080

    ttl

    lvds

    dsi (on A20 it means the use of SSD2828 bridge chip, on A31 it might really mean native DSI)

    edp

    external dsi (the use of SSD2828 bridge chip on A31 and onwards)

     

     

    So I am unsure what to select. I can't find much documentation about those modes on internet.

     

    Also I can't understand what is this and how it should be set "lcd_io_cfg0 = 268435456"

     

    I made several attemps with either datasheet or above code timing values but without luck so far. Only a black screen.

     

    Anyone has some experience with LCD interfacing on armbian could help me writing this fex? It would really really really be appreciated. 

    Above is my last attempt of fex

    Spoiler

     

    
    [disp_init]
    disp_init_enable = 1
    disp_mode = 0
    screen0_output_type = 1
    screen0_output_mode = 4
    screen1_output_type = 0
    screen1_output_mode = 4
    fb0_framebuffer_num = 2
    fb0_format = 9
    fb0_pixel_sequence = 0
    fb0_scaler_mode_enable = 1
    fb1_framebuffer_num = 2
    fb1_format = 10
    fb1_pixel_sequence = 0
    fb1_scaler_mode_enable = 0
    lcd0_backlight = 197
    lcd1_backlight = 197
    lcd0_bright = 50
    lcd0_contrast = 50
    lcd0_saturation = 57
    lcd0_hue = 50
    lcd1_bright = 50
    lcd1_contrast = 50
    lcd1_saturation = 57
    lcd1_hue = 50
    
    [lcd0_para]
    lcd_used = 1
    lcd_x = 640
    lcd_y = 480
    lcd_dclk_freq = 20
    lcd_pwm_not_used = 0
    lcd_pwm_ch = 0
    lcd_pwm_freq = 22000
    lcd_pwm_pol = 0
    lcd_max_bright = 240
    lcd_min_bright = 64
    lcd_if = 0
    lcd_hbp = 42
    lcd_ht = 680
    lcd_vbp = 14
    lcd_vt = 1100
    lcd_vspw = 12
    lcd_hspw = 20
    lcd_hv_if = 0
    lcd_hv_smode = 0
    lcd_hv_s888_if = 0
    lcd_hv_syuv_if = 0
    lcd_lvds_ch = 0
    lcd_lvds_mode = 0
    lcd_lvds_bitwidth = 0
    lcd_lvds_io_cross = 0
    lcd_cpu_if = 0
    lcd_frm = 0
    lcd_io_cfg0 = 268435456
    lcd_gamma_correction_en = 0
    lcd_gamma_tbl_0 = 0x0
    lcd_gamma_tbl_1 = 0x10101
    lcd_gamma_tbl_255 = 0xffffff
    lcd_pwm_used = 1
    lcd_pwm = port:PB02<2><0><default><default>
    lcdd0 = port:PD00<2><0><3><default>
      ...

     

    FJ035CI54-R40.pdf

  13. Hi there,

     

    I am trying to download the lime2 legacy image : 

    https://www.armbian.com/olimex-lime-2/#kernels-archive

     

    But the link is dead (error 404).

     

    Any chance to get this back up?

     

    Or can I use another legacy image and just change the script.bin or is there other things to modify?

    Thanks

    Edit : I just found the image on olimex website ftp://staging.olimex.com/Allwinner_Images/A20-OLinuXino/2.legacy_images_kernel_3.4.x/

  14. 14 hours ago, jernej said:

    No documentation whatsoever, except maybe in Chinese. I found commands in source code here.

     

    I already forgot everything related to those commands, so I suggest you take a look at code linked above.

    Thanks for feedback!

     

    In chinese, do you mean that those commands are hardware coded in the allwinner chip? It's not something that is coded in armbian?

     

    I can handle chinese documentation if you have any. Or if you confirm allwinner could help I'll ask them, but I am not sure what to ask them right now as I thought it was a armbian feature.

  15. 16 hours ago, jernej said:

    I guess this functionality doesn't work on H3. I have seen something like that for A64 with Allwinner provided changes to X11 driver which used "transform" HW, which exists primarly on A series SoCs (and maybe few others).

     

    But I might be wrong...

     

    Thanks for feedback, anyway I found a way to hardware rotate LCD now. It was just for curiosity.

     

    What about the dispdbg commands? Do you know where I can find documentation about that? Or the source code of these commands?

     

    Any idea how to disable disp1 and enable disp0 ? I think perhaps it's not working because the switch command only changes the screen_output_type and mode but is not actually enabling/disabling screen0/screen1 I tried to enable both disp in my script.bin with

     

    [disp_init]
    disp_init_enable = 1
    disp_mode = 2   # dual head
    screen0_output_type = 0   # 0 should be NONE
    screen0_output_mode = 5
    screen1_output_type = 2
    screen1_output_mode = 14

    But then I have not any signal on either screen. Maybe disp_mode= 4 (clone(screen0, screen1, fb0) (2 screens, one standard framebuffer) ) would work?

     

    Also I am not sure how to enable HDMI after disable TV (as I don't have screen anymore...). So I tried to make a bash file but not sure the syntax is correct. Can you tell me if something is wrong in the syntax?

     

    #!/bin/bash 
    
    cd /sys/kernel/debug/dispdbg/
    
    echo "switch" > command
    echo "disp1" > name
    echo "0 14" > param
    echo "1" > start
    
    sleep 2
    
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp0" > name
    echo "4 5" > param
    echo "1" > start

     

  16. on another topic, I found this about LCD rotation : 

    http://linux-sunxi.org/Display

    Quote

    Rotation

    You can rotate the framebuffer by supplying fbcon=rotate:<n> kernel parameter, where n can be one of the following.

    0 - normal orientation (0 degree)

    1 - clockwise orientation (90 degrees)

    2 - upside down orientation (180 degrees)

    3 - counterclockwise orientation (270 degrees)

    Alternatively you could echo <n> to

    /sys/class/graphics/fbcon/rotate

    after kernel has booted. For more see Documentation/fb/fbcon.txt in kernel tree.

     

    Can someone explain me what it means "supply" a kernel parameter and how to do it?

    Also I tried to echo on a booted device.

     

    sudo su
    cd /sys/class/graphics/fbcon
    echo "2" > rotate

    But nothing happenned, no error message. I am missing something? I am not sure to understand differences between sunxi-linux and armbian and how they interact...

  17. Ok after few tests :  Currently my script.bin is as follow

    [disp_init]
    disp_mode = 1 #(tv mode)
    screen0_output_type = 3
    screen0_output_mode = 5
    screen1_output_type = 2
    screen1_output_mode = 14
    
    hdmi_used = 0
    
    tv_used = 1

    Using "disp"  --> does not work

    Using "disp1"  --> works

    echo "switch" > command
    echo "disp1" > name 
    echo "0" > param
    echo "1" > start

    --> turn off my TV signal.  However enabling HDMI instead does not work.  I tried : 

    echo "switch" > command
    echo "disp1" > name 
    echo "4 5" > param
    echo "1" > start

    and with "3 5" both don't work. It just turns OFF the TV signal but HDMI is not turning ON.

     

    I guess it's because HDMI should be set on disp0 and not disp1?

    Is there any documentation about this dispdbg commands?  Can't find any on google.

     

    Then as I have no longer video signal I don't know how to know what happens afterwards and have to reboot the unit.

     

  18. Thanks!! It's indeed working with devmem2. There should have been something wrong in my mmap before.

     

    When I run devmem2 the value change when HDMI is connected or not.

     

    No HDMI : 266f0
    0000 0000 0000 0010 0110 0110 1111 0000

    HDMI : a66F0
    0000 0000 0000 1010 0110 0110 1111 0000

     

    The method you gave here, is working for legacy 3.4.113 correct? So I should do : 

    Switch from TV (TNSC) to HDMI

    sudo su
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp" > name
    echo "4 5" > param
    echo "1" > start

    Why is it "4 5" ? Is it not as follow

    "screen0_output_type  screen0_output_mode"

    In script.bin HDMI output type is "3", "4" being VGA. (source here)

     

    Switch from HDMI to TV (TNSC)

    sudo su
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp" > name
    echo "2 14" > param
    echo "1" > start

     

    Or should I first disable the previous video output with

    sudo su
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp" > name
    echo "0" > param
    echo "1" > start

     

    Or should I used disp0 and disp1 as you suggest? Then it would be as follow : 

    Switch from TV (TNSC) to HDMI


     

    sudo su
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp1" > name
    echo "0 14" > param
    echo "1" > start
    
    echo "switch" > command
    echo "disp0" > name
    echo "4 5" > param
    echo "1" > start

     

    Switch from HDMI to TV (TNSC)

     

    sudo su
    cd /sys/kernel/debug/dispdbg/
    echo "switch" > command
    echo "disp0" > name
    echo "0 5" > param
    echo "1" > start
    
    echo "switch" > command
    echo "disp1" > name
    echo "2 14" > param
    echo "1" > start

     

     

    PS : for those that might be interested, here is how to install devmem2

    If you have internet access just do the following

    wget http://free-electrons.com/pub/mirror/devmem2.c
    gcc ./devmem2.c
    sudo mv ./a.out /usr/local/bin/devmem2

     

    Then to run devmem2 to read a value type : 

    sudo devmem2 0x01EF0038

    You can replace 0x01EF0038 by the address you want to read.

  19. Hey guys!

    So the boards are working relatively correctly now.

     

    I just have a boot problem that is happening sometimes. On about 1 boot every 3 or 4 times the unit will not boot. It's random so I am not sure what can be the reason.

     

    When the unit can't boot it says (see enclosed pictures too) :

    Quote

    MMC: no card present

    Card did not respond to voltage select!

     

    Then it seems to try to boot on USB then on PHY (which don't work as nothing is setup)

     

    Any idea why this could be happening and why it would be happening only sometimes?

     

    The boot config that I use is "orangepi_pc_plus_defconfig" could it be something in there that can be the problem?

    I can't understand much from this file, is there some explanations of that script content somewhere? 

     

    Do you think it could be a trace impedance problem with the SD card reader? 

     

    OK boot.jpg

    bad boot.jpg

  20. I think the guy made the mapping specific to opi PC, and so he left lot of GPIO not mapped. 

    I had trouble with this so in the end I corrected the mapping by adding all the GPIO in the map file.

    However it is not mapped with connector module. So you should use the GPIO name (port.c) to call it "PA01" ...

     

    Find enclosed my pyH3 folder, see specifically the mapping.h file.

     

    Again I filled the connectors randomly (as it's different between each SbC I don't think it should be used anyway) so use port.

    pyH3-0.2.12.rar

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines