Jump to content

Nikos Andreadakis

Members
  • Posts

    1
  • Joined

  • Last visited

Posts posted by Nikos Andreadakis

  1. Dear all,

    I recently perched a SINA33 from SINLINX after a week of test i download the Armbian source code that is very interesting and started to create an Armbian image for this board.

    I created a csc file to start the building.

    Spoiler

    The csc file code:

     

    # A33 quad core 1Gb SoC
    BOARD_NAME="Sina33"
    BOARDFAMILY="sun8i"
    BOOTCONFIG="Sinlinx_SinA33_defconfig"
    MODULES="hci_uart gpio_sunxi rfcomm hidp bonding spi_sun7i 8021q a20_tp"
    MODULES_NEXT="brcmfmac"
    OVERLAY_PREFIX="sun8i-a33"
    KERNEL_TARGET="default,next,dev"

     

    The compile is done and the image is created. I flash the image with the mainline kernel and worked.

    If there is any interesting on this topic i will create another with the more details.

     

    Now the problem is that i can't port the AP6210 wifi module that this board came with.

    Here is the dts file sun8i-a33-sinlinx-sina33.dts with the wifi modifications

    Spoiler

    /*
     * Copyright 2015 Chen-Yu Tsai
     *
     * Chen-Yu Tsai <wens@csie.org>
     *
     * This file is dual-licensed: you can use it either under the terms
     * of the GPL or the X11 license, at your option. Note that this dual
     * licensing only applies to this file, and not this project as a
     * whole.
     *
     *  a) This file is free software; you can redistribute it and/or
     *     modify it under the terms of the GNU General Public License as
     *     published by the Free Software Foundation; either version 2 of the
     *     License, or (at your option) any later version.
     *
     *     This file is distributed in the hope that it will be useful,
     *     but WITHOUT ANY WARRANTY; without even the implied warranty of
     *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *     GNU General Public License for more details.
     *
     * Or, alternatively,
     *
     *  b) Permission is hereby granted, free of charge, to any person
     *     obtaining a copy of this software and associated documentation
     *     files (the "Software"), to deal in the Software without
     *     restriction, including without limitation the rights to use,
     *     copy, modify, merge, publish, distribute, sublicense, and/or
     *     sell copies of the Software, and to permit persons to whom the
     *     Software is furnished to do so, subject to the following
     *     conditions:
     *
     *     The above copyright notice and this permission notice shall be
     *     included in all copies or substantial portions of the Software.
     *
     *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
     *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
     *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     *     OTHER DEALINGS IN THE SOFTWARE.
     */

    /dts-v1/;
    #include "sun8i-a33.dtsi"
    #include "sunxi-common-regulators.dtsi"

    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/input/input.h>

    / {
        model = "Sinlinx SinA33";
        compatible = "sinlinx,sina33", "allwinner,sun8i-a33";

        aliases {
            serial0 = &uart3;
        };

        chosen {
            stdout-path = "serial0:115200n8";
        };

        panel {
            compatible = "netron-dy,e231732";
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0>;
                #address-cells = <1>;
                #size-cells = <0>;

                panel_input: endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&tcon0_out_panel>;
                };
            };
        };

        wifi_pwrseq: wifi_pwrseq {
            compatible = "mmc-pwrseq-simple";
            pinctrl-names = "default";
            reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL6 or GPIO-358 */
            clocks = <&rtc 1>;
            clock-names = "ext_clock";
        };
    };

    &codec {
        status = "okay";
    };

    &cpu0 {
        cpu-supply = <&reg_dcdc3>;
    };

    &cpu0_opp_table {
        opp-1104000000 {
            opp-hz = /bits/ 64 <1104000000>;
            opp-microvolt = <1320000>;
            clock-latency-ns = <244144>; /* 8 32k periods */
        };

        opp-1200000000 {
            opp-hz = /bits/ 64 <1200000000>;
            opp-microvolt = <1320000>;
            clock-latency-ns = <244144>; /* 8 32k periods */
        };
    };

    &de {
        status = "okay";
    };

    &dai {
        status = "okay";
    };

    &ehci0 {
        status = "okay";
    };

    &lradc {
        vref-supply = <&reg_dcdc1>;
        status = "okay";

        button@200 {
            label = "Volume Up";
            linux,code = <KEY_VOLUMEUP>;
            channel = <0>;
            voltage = <191011>;
        };

        button@400 {
            label = "Volume Down";
            linux,code = <KEY_VOLUMEDOWN>;
            channel = <0>;
            voltage = <391304>;
        };

        button@600 {
            label = "Home";
            linux,code = <KEY_HOME>;
            channel = <0>;
            voltage = <600000>;
        };
    };

    &mmc0 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_sina33>;
        vmmc-supply = <&reg_dcdc1>;
        bus-width = <4>;
        cd-gpios = <&pio 1 4 GPIO_ACTIVE_LOW>; /* PB4 */
        status = "okay";
    };

    &mmc1 {
        /*vmmc-supply = <&reg_vcc3v3>;
        vqmmc-supply = <&reg_vcc3v3>;
        pinctrl-0 = <&mmc1_pins_a>;
        mmc-pwrseq = <&wifi_pwrseq>;
        bus-width = <4>;
        non-removable;
        status = "okay"; */

        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins_a>;
        vmmc-supply = <&reg_dcdc1>;
        vqmmc-supply = <&reg_dcdc1>;
        mmc-pwrseq = <&wifi_pwrseq>;
        bus-width = <4>;
        non-removable;
        status = "okay";

        brcmf: wifi@1 {
            reg = <1>;
            compatible = "brcm,bcm4329-fmac";
            /*interrupt-parent = <&r_pio>;
            interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>;  PL7 or GPIO-359 EINT7
            interrupt-names = "host-wake"; */
        };
    };

    &mmc1_pins_a {
        /* AP6210 requires pull-up */
        bias-pull-up;
    };

    &mmc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc2_8bit_pins>;
        vmmc-supply = <&reg_dcdc1>;
        bus-width = <4>;
        non-removable;
        cap-mmc-hw-reset;
        status = "okay";
    };

    &mmc2_8bit_pins {
        /* Increase drive strength for DDR modes */
        drive-strength = <40>;
        /* eMMC is missing pull-ups */
        bias-pull-up;
    };

    &ohci0 {
        status = "okay";
    };

    &pio {
        mmc0_cd_pin_sina33: mmc0_cd_pin@0 {
            pins = "PB4";
            function = "gpio_in";
            bias-pull-up;
        };
    };

    &r_rsb {
        status = "okay";

        axp22x: pmic@3a3 {
            compatible = "x-powers,axp223";
            reg = <0x3a3>;
            interrupt-parent = <&nmi_intc>;
            interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
            eldoin-supply = <&reg_dcdc1>;
        };
    };

    #include "axp223.dtsi"

    &ac_power_supply {
        status = "okay";
    };

    &battery_power_supply {
        status = "okay";
    };

    &reg_aldo1 {
        regulator-always-on;
        regulator-min-microvolt = <3000000>;
        regulator-max-microvolt = <3000000>;
        regulator-name = "vcc-io";
    };

    &reg_aldo2 {
        regulator-always-on;
        regulator-min-microvolt = <2350000>;
        regulator-max-microvolt = <2650000>;
        regulator-name = "vdd-dll";
    };

    &reg_aldo3 {
        regulator-always-on;
        regulator-min-microvolt = <2700000>;
        regulator-max-microvolt = <3300000>;
        regulator-name = "vcc-pll-avcc";
    };

    &reg_dc5ldo {
        regulator-always-on;
        regulator-min-microvolt = <900000>;
        regulator-max-microvolt = <1400000>;
        regulator-name = "vdd-cpus";
    };

    &reg_dcdc1 {
        regulator-always-on;
        regulator-min-microvolt = <3000000>;
        regulator-max-microvolt = <3000000>;
        regulator-name = "vcc-3v0";
    };

    &reg_dcdc2 {
        regulator-always-on;
        regulator-min-microvolt = <900000>;
        regulator-max-microvolt = <1400000>;
        regulator-name = "vdd-sys";
    };

    &reg_dcdc3 {
        regulator-always-on;
        regulator-min-microvolt = <900000>;
        regulator-max-microvolt = <1400000>;
        regulator-name = "vdd-cpu";
    };

    &reg_dcdc5 {
        regulator-always-on;
        regulator-min-microvolt = <1500000>;
        regulator-max-microvolt = <1500000>;
        regulator-name = "vcc-dram";
    };

    &reg_rtc_ldo {
        regulator-name = "vcc-rtc";
    };

    &sound {
        status = "okay";
    };

    &tcon0 {
        pinctrl-names = "default";
        pinctrl-0 = <&lcd_rgb666_pins>;
        status = "okay";
    };

    &tcon0_out {
        tcon0_out_panel: endpoint@0 {
            reg = <0>;
            remote-endpoint = <&panel_input>;
        };
    };

    /*
    &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins_b>;
        status = "okay";
    };
    */

    &uart3 {
        pinctrl-names = "default";
            pinctrl-0 = <&uart3_pins_b>;
        status = "okay";
    };

    &usb_otg {
        dr_mode = "peripheral";
        status = "okay";
    };

    &usbphy {
        status = "okay";
        usb1_vbus-supply = <&reg_vcc5v0>; /* USB1 VBUS is always on */
    };

    /*&wifi_pwrseq {
            clocks = <&rtc 1>;
            clock-names = "ext_clock";
    };*/

     

    I'm not sure about the clock on dts file      

    clocks = <&rtc 1>;
    clock-names = "ext_clock";

     

    the error that i take 

     

    root@sinlinx:~# dmesg | grep brcm
    [    5.750408] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43362-sdio for chip BCM43362/1
    [    6.822224] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
    [    7.826234] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

     

    also this

    dmesg | grep 1c10000.mmc
    [    2.162351] sunxi-mmc 1c10000.mmc: Linked as a consumer to regulator.4
    [    2.664498] sunxi-mmc 1c10000.mmc: allocated mmc-pwrseq
    [    2.690138] sunxi-mmc 1c10000.mmc: initialized, max. request size: 16384 KB

     

    root@sinlinx:/lib/firmware/brcm# lsmod
    Module                  Size  Used by
    brcmfmac              159744  1
    fuse                   73728  3
    zstd                   16384  4
    zram                   24576  2
    snd_soc_simple_card    16384  2
    snd_soc_simple_card_utils    16384  1 snd_soc_simple_card
    cdc_ether              16384  0
    usbnet                 24576  1 cdc_ether
    evdev                  20480  3
    r8152                  49152  0
    axp20x_battery         16384  0
    axp20x_usb_power       16384  0
    axp20x_adc             16384  0
    sun8i_codec_analog     24576  1
    lima                   40960  0
    sun8i_adda_pr_regmap    16384  1 sun8i_codec_analog
    gpu_sched              20480  1 lima
    sun8i_codec            20480  1
    sun4i_i2s              20480  2
    ttm                    57344  1 lima
    snd_soc_core          114688  5 sun4i_i2s,sun8i_codec_analog,sun8i_codec,snd_soc_simple_card_utils,snd_soc_simple_card
    snd_pcm_dmaengine      16384  1 snd_soc_core
    sun4i_gpadc_iio        16384  0
    snd_pcm                69632  4 sun4i_i2s,snd_pcm_dmaengine,sun8i_codec,snd_soc_core
    snd_timer              24576  1 snd_pcm
    industrialio           49152  4 axp20x_usb_power,axp20x_battery,sun4i_gpadc_iio,axp20x_adc
    snd                    45056  7 snd_timer,snd_soc_core,snd_pcm
    soundcore              16384  1 snd
    sun4i_lradc_keys       16384  0
    sun4i_ss               24576  0
    cpufreq_dt             16384  0
    panel_simple           53248  0
    uio_pdrv_genirq        16384  0
    uio                    16384  1 uio_pdrv_genirq
    thermal_sys            57344  2 cpufreq_dt,sun4i_gpadc_iio
    sch_fq_codel           20480  2
    brcmutil               16384  1 brcmfmac
    cfg80211              393216  1 brcmfmac
    ip_tables              20480  0
    x_tables               20480  1 ip_tables
    uas                    20480  0
    pwrseq_simple          16384  1

     

    Using a oscilloscope i saw that the clock at SDIO_DATA_CLK of the module is at 50Mhz and that correct.

     

    The blob exist in the /lib/firmware/brcm

    Spoiler

    root@sinlinx:/lib/firmware/brcm# ls
    BCM4330B1.hcd              brcmfmac43430-sdio.bin
    BCM4345C5.hcd              brcmfmac43430-sdio.txt
    bcm4329.hcd                brcmfmac43430a0-sdio.bin
    bcm4330.hcd                brcmfmac43430a0-sdio.txt
    bcm43438-sdio.hcd          brcmfmac43455-sdio.bin
    brcmfmac-ap6330-sdio.bin   brcmfmac43455-sdio.clm_blob
    brcmfmac-ap6330-sdio.txt   brcmfmac43455-sdio.txt
    brcmfmac4329-sdio.bin      brcmfmac43456-sdio.bin
    brcmfmac4329-sdio.txt      brcmfmac43456-sdio.txt
    brcmfmac4330-sdio.bin      brcmfmac4356-sdio-nanopi-m4v2.bin
    brcmfmac4330-sdio.txt      brcmfmac4356-sdio-nanopi-m4v2.txt
    brcmfmac43362-sdio.bin     brcmfmac4356-sdio.bin
    brcmfmac43362-sdio.txt     brcmfmac4356-sdio.txt
    brcmfmac4339-sdio.1CK.txt  brcmfmac4359-sdio.bin
    brcmfmac4339-sdio.ZP.txt   brcmfmac4359-sdio.txt
    brcmfmac4339-sdio.bin      config.txt
    brcmfmac4339-sdio.txt

     

    Attached phones from Inside the AP6210 module

     

    Any ideas are thought are really appreciated.

     

     

    AP6210A.jpg

    AP6210B.jpg

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines