Ejemplo n.º 1
0
ParseTree* Parser::COMP()
{
	ParseTree* retTree = new ParseTree();
    
	if(!((*parser).get().token == LEFT_BRACKET))
    {
		ThrowParserError();
	}

	if(!(*parser).Advance()) ThrowParserError();
    
	(*retTree).SetLeaf1(FACTOR()->getLeaf());
	(*retTree).SetLeaf2(COMP_OP()->getLeaf());
	(*retTree).SetLeaf3(FACTOR()->getLeaf());
    
	if(!((*parser).get().token == RIGHT_BRACKET))
    {
		ThrowParserError();
	}

	if(!(*parser).Advance()) ThrowParserError();
    
	return retTree;

}
Ejemplo n.º 2
0
static void term(Pu *L, __pu_value *&temp)
{
	PuType tp = TOKEN.type;
	OperatorType nv = TOKEN.optype;

	while (tp == OP)  // */%
	{
		switch (nv)
		{
		case OPT_MUL:
			{
				NEXT_TOKEN;
				__pu_value *t = NULL;
				FACTOR(L,t);
                CHECK_EXP(t);
                __pu_value *r = NULL;
                MAKE_TEMP_VALUE(r);
                //r->SetType(NUM);
				*r = *temp * *t;
                temp = r;
			}
			break;
		case OPT_DIV:
			{
				NEXT_TOKEN;
				__pu_value *t = NULL;
				FACTOR(L,t);
                CHECK_EXP(t);
                __pu_value *r = NULL;
                MAKE_TEMP_VALUE(r);
				*r = *temp / *t;
                temp = r;
			}
			break;
		case OPT_MOD:
			{
				NEXT_TOKEN;
				__pu_value *t = NULL;
				FACTOR(L, t);
                CHECK_EXP(t);
                __pu_value *r = NULL;
                MAKE_TEMP_VALUE(r);
				*r = *temp % *t;
                temp = r;
			}
			break;
		default:
			return;
		}

		tp = TOKEN.type;
		nv = TOKEN.optype;
	}
}
Ejemplo n.º 3
0
static void procop(Pu *L)
{
	__pu_value *temp = NULL;

	PuType tp = TOKEN.type;
	OperatorType nv = TOKEN.optype;

	if (tp == OP && nv == OPT_LB) //(
	{
		FACTOR(L, temp);
	}
	else if (tp == OP && (nv == OPT_SUB || nv == OPT_ADD))// - +
	{
        MAKE_TEMP_VALUE(temp);
		temp->SetType(NUM);
		temp->numVal() = 0;
		add(L,temp);
        CHECK_EXP(temp);
	}
	else if (tp == OP && nv == OPT_NOT)// !
	{
        MAKE_TEMP_VALUE(temp);
        get_value(L,temp);
        CHECK_EXP(temp);
	}
    else
    {
        error(L, 29);
    }
}
Ejemplo n.º 4
0
void TERM(void){
	/*term 	::= 	factor term_tail*/
	switch(l){

	case CONST_INT: case CONST_FLOAT: case CONST_BOOLEAN: case '(': case ID:		FACTOR(); TERM_TAIL(); return;
	default:																		StdError(__func__);
	}
}
Ejemplo n.º 5
0
/*******************************************************************************
 ***  FUNCTION TERM()
 *******************************************************************************
 ***  DESCRIPTION  :  Processes TERM grammar rule.
 ***
 ***  TERM -> FACTOR MOREFACTOR
 ***
 ******************************************************************************/
void RecursiveParser::TERM(TableEntry & tplace)
{
   TableEntry fplace;

   FACTOR(fplace);
   MOREFACTOR(fplace);

   tplace = fplace;
}
void TERM()
{
    FACTOR();
    while(TOKEN == multsym || TOKEN == slashsym)
    {
        if(TOKEN == multsym)
        {
           GETTOKEN();
           FACTOR();
           //OPR 0 4
           printToFile(2,0,4);
           lines++;
        }
        else if(TOKEN == slashsym)
        {
            GETTOKEN();
            FACTOR();
            //OPR 0 5
            printToFile(2,0,5);
            lines++;
        }
    }
}
Ejemplo n.º 7
0
ParseTree* Parser::TERM()
{
	ParseTree* retTree = new ParseTree();
	(*retTree).SetLeaf1(FACTOR()->getLeaf());
    
	if((*parser).get().token == MULTIPLY)
    {
		(*retTree).setAlt(2);
		if(!(*parser).Advance()) ThrowParserError();
		(*retTree).SetLeaf2(TERM()->getLeaf());
	}
    else
    {
		(*retTree).setAlt(1);
	}
	return retTree;
}
Ejemplo n.º 8
0
ParseTree* Parser::FACTOR()
{
	ParseTree* retTree = new ParseTree();
	if((*parser).get().token == CONST)
    {
		(*retTree).setAlt(1);
		(*retTree).SetLeaf1(CONST_TERMINAL()->getLeaf());
	}
    else if((*parser).get().token == ID)
    {
		(*retTree).setAlt(2);
		if(!isin((*parser).get().string))
        {
			ThrowParserError();
		}
		(*retTree).SetLeaf1(ID_TERMINAL()->getLeaf());
	}
    else if((*parser).get().token == MINUS)
    {
		(*retTree).setAlt(3);

		if(!(*parser).Advance()) ThrowParserError();
		(*retTree).SetLeaf1(FACTOR()->getLeaf());

	}
    else if(!(*parser).get().token == LEFT_PAREN)
    {
		(*retTree).setAlt(4);
        
		if(!(*parser).Advance()) ThrowParserError();
		(*retTree).SetLeaf1(EXPR()->getLeaf());
		if(!((*parser).get().token == RIGHT_PAREN))
        {
			ThrowParserError();
		}
        
		if(!(*parser).Advance()) ThrowParserError();
	}
    else
    {
        ThrowParserError();
    }
	return retTree;

}
Ejemplo n.º 9
0
 */
#define DUMMY_RATE		0

static DEFINE_SPINLOCK(mt8173_clk_lock);

static const struct mtk_fixed_clk fixed_clks[] __initconst = {
	FIXED_CLK(CLK_TOP_CLKPH_MCK_O, "clkph_mck_o", "clk26m", DUMMY_RATE),
	FIXED_CLK(CLK_TOP_USB_SYSPLL_125M, "usb_syspll_125m", "clk26m", 125 * MHZ),
	FIXED_CLK(CLK_TOP_DSI0_DIG, "dsi0_dig", "clk26m", DUMMY_RATE),
	FIXED_CLK(CLK_TOP_DSI1_DIG, "dsi1_dig", "clk26m", DUMMY_RATE),
	FIXED_CLK(CLK_TOP_LVDS_PXL, "lvds_pxl", "lvdspll", DUMMY_RATE),
	FIXED_CLK(CLK_TOP_LVDS_CTS, "lvds_cts", "lvdspll", DUMMY_RATE),
};

static const struct mtk_fixed_factor top_divs[] __initconst = {
	FACTOR(CLK_TOP_ARMCA7PLL_754M, "armca7pll_754m", "armca7pll", 1, 2),
	FACTOR(CLK_TOP_ARMCA7PLL_502M, "armca7pll_502m", "armca7pll", 1, 3),

	FACTOR(CLK_TOP_MAIN_H546M, "main_h546m", "mainpll", 1, 2),
	FACTOR(CLK_TOP_MAIN_H364M, "main_h364m", "mainpll", 1, 3),
	FACTOR(CLK_TOP_MAIN_H218P4M, "main_h218p4m", "mainpll", 1, 5),
	FACTOR(CLK_TOP_MAIN_H156M, "main_h156m", "mainpll", 1, 7),

	FACTOR(CLK_TOP_TVDPLL_445P5M, "tvdpll_445p5m", "tvdpll", 1, 4),
	FACTOR(CLK_TOP_TVDPLL_594M, "tvdpll_594m", "tvdpll", 1, 3),

	FACTOR(CLK_TOP_UNIV_624M, "univ_624m", "univpll", 1, 2),
	FACTOR(CLK_TOP_UNIV_416M, "univ_416m", "univpll", 1, 3),
	FACTOR(CLK_TOP_UNIV_249P6M, "univ_249p6m", "univpll", 1, 5),
	FACTOR(CLK_TOP_UNIV_178P3M, "univ_178p3m", "univpll", 1, 7),
	FACTOR(CLK_TOP_UNIV_48M, "univ_48m", "univpll", 1, 26),
Ejemplo n.º 10
0
 */

#include <linux/clk.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/slab.h>
#include <linux/mfd/syscon.h>
#include <dt-bindings/clock/mt8135-clk.h>

#include "clk-mtk.h"
#include "clk-gate.h"

static DEFINE_SPINLOCK(mt8135_clk_lock);

static const struct mtk_fixed_factor root_clk_alias[] __initconst = {
	FACTOR(CLK_TOP_DSI0_LNTC_DSICLK, "dsi0_lntc_dsiclk", "clk_null", 1, 1),
	FACTOR(CLK_TOP_HDMITX_CLKDIG_CTS, "hdmitx_clkdig_cts", "clk_null", 1, 1),
	FACTOR(CLK_TOP_CLKPH_MCK, "clkph_mck", "clk_null", 1, 1),
	FACTOR(CLK_TOP_CPUM_TCK_IN, "cpum_tck_in", "clk_null", 1, 1),
};

static const struct mtk_fixed_factor top_divs[] __initconst = {
	FACTOR(CLK_TOP_MAINPLL_806M, "mainpll_806m", "mainpll", 1, 2),
	FACTOR(CLK_TOP_MAINPLL_537P3M, "mainpll_537p3m", "mainpll", 1, 3),
	FACTOR(CLK_TOP_MAINPLL_322P4M, "mainpll_322p4m", "mainpll", 1, 5),
	FACTOR(CLK_TOP_MAINPLL_230P3M, "mainpll_230p3m", "mainpll", 1, 7),

	FACTOR(CLK_TOP_UNIVPLL_624M, "univpll_624m", "univpll", 1, 2),
	FACTOR(CLK_TOP_UNIVPLL_416M, "univpll_416m", "univpll", 1, 3),
	FACTOR(CLK_TOP_UNIVPLL_249P6M, "univpll_249p6m", "univpll", 1, 5),
	FACTOR(CLK_TOP_UNIVPLL_178P3M, "univpll_178p3m", "univpll", 1, 7),
Ejemplo n.º 11
0
	FIXED_CLK(CLK_TOP_SSUSB_TX250M, "ssusb_tx250m", "clkxtal",
		  250000000),
	FIXED_CLK(CLK_TOP_SSUSB_EQ_RX250M, "ssusb_eq_rx250m", "clkxtal",
		  250000000),
	FIXED_CLK(CLK_TOP_SSUSB_CDR_REF, "ssusb_cdr_ref", "clkxtal",
		  33333333),
	FIXED_CLK(CLK_TOP_SSUSB_CDR_FB, "ssusb_cdr_fb", "clkxtal",
		  50000000),
	FIXED_CLK(CLK_TOP_SATA_ASIC, "sata_asic", "clkxtal",
		  50000000),
	FIXED_CLK(CLK_TOP_SATA_RBC, "sata_rbc", "clkxtal",
		  50000000),
};

static const struct mtk_fixed_factor top_divs[] = {
	FACTOR(CLK_TOP_TO_USB3_SYS, "to_usb3_sys", "eth1pll", 1, 4),
	FACTOR(CLK_TOP_P1_1MHZ, "p1_1mhz", "eth1pll", 1, 500),
	FACTOR(CLK_TOP_4MHZ, "free_run_4mhz", "eth1pll", 1, 125),
	FACTOR(CLK_TOP_P0_1MHZ, "p0_1mhz", "eth1pll", 1, 500),
	FACTOR(CLK_TOP_ETH_500M, "eth_500m", "eth1pll", 1, 1),
	FACTOR(CLK_TOP_TXCLK_SRC_PRE, "txclk_src_pre", "sgmiipll_d2", 1, 1),
	FACTOR(CLK_TOP_RTC, "rtc", "clkxtal", 1, 1024),
	FACTOR(CLK_TOP_PWM_QTR_26M, "pwm_qtr_26m", "clkxtal", 1, 1),
	FACTOR(CLK_TOP_CPUM_TCK_IN, "cpum_tck_in", "cpum_tck", 1, 1),
	FACTOR(CLK_TOP_TO_USB3_DA_TOP, "to_usb3_da_top", "clkxtal", 1, 1),
	FACTOR(CLK_TOP_MEMPLL, "mempll", "clkxtal", 32, 1),
	FACTOR(CLK_TOP_DMPLL, "dmpll_ck", "mempll", 1, 1),
	FACTOR(CLK_TOP_DMPLL_D4, "dmpll_d4", "mempll", 1, 4),
	FACTOR(CLK_TOP_DMPLL_D8, "dmpll_d8", "mempll", 1, 8),
	FACTOR(CLK_TOP_SYSPLL_D2, "syspll_d2", "mainpll", 1, 2),
	FACTOR(CLK_TOP_SYSPLL1_D2, "syspll1_d2", "mainpll", 1, 4),
Ejemplo n.º 12
0
/*******************************************************************************
 ***  FUNCTION MOREFACTOR()
 *******************************************************************************
 ***  DESCRIPTION  :  Processes MOREFACTOR grammar rule.
 ***
 ***  MOREFACTOR -> MULOP FACTOR MOREFACTOR
 ***
 ******************************************************************************/
void RecursiveParser::MOREFACTOR(TableEntry & rplace)
{
   TableEntry tplace;
   string code;

   if (global->Token == Global::mulopt || global->Token == Global::relopt || global->Token == Global::idt || global->Token == Global::numt || global->Token == Global::lparent)
   {
      TableEntry temp = tempVar();

      if (temp.depth <= 1)
         code += temp.Lexeme;

      else
      {
         code += "[bp-";
         code += NumberToString(temp.var.Offset);
         code += "]";
      }

      code += " = ";

      if (isSign)
      {
         code += sign;
         isSign = false;
      }

      if (rplace.TypeOfEntry == constEntry)
      {
         if (rplace.constant.TypeOfConstant == floatType)
            code += NumberToString(rplace.constant.ValueR);

         else
            code += NumberToString(rplace.constant.Value);
      }
      else
      {
         if (rplace.depth <= 1)
            code += rplace.Lexeme;

         else
         {
            code += "[bp";

            if (rplace.isParam)
               code += "+";
            else
               code += "-";

            code += NumberToString(rplace.var.Offset);
            code += "]";
         }
      }

      code += " " + global->Lexeme + " ";

      MULOP();

      FACTOR(tplace);

      if (tplace.TypeOfEntry == constEntry)
      {
         if (tplace.constant.TypeOfConstant == floatType)
            code += NumberToString(tplace.constant.ValueR);

         else
            code += NumberToString(tplace.constant.Value);
      }
      else
      {
         if (tplace.depth <= 1)
            code += tplace.Lexeme;

         else
         {
            code += "[bp";

            if (tplace.isParam)
               code += "+";
            else
               code += "-";

            code += NumberToString(tplace.var.Offset);
            code += "]";
         }
      }

      rplace = temp;
      emit(code);
      MOREFACTOR(rplace);
   }
}
Ejemplo n.º 13
0
	FIXED_CLK(CLK_TOP_SSUSB_TX250M, "ssusb_tx250m", "clkxtal",
		  250000000),
	FIXED_CLK(CLK_TOP_SSUSB_EQ_RX250M, "ssusb_eq_rx250m", "clkxtal",
		  250000000),
	FIXED_CLK(CLK_TOP_SSUSB_CDR_REF, "ssusb_cdr_ref", "clkxtal",
		  33333333),
	FIXED_CLK(CLK_TOP_SSUSB_CDR_FB, "ssusb_cdr_fb", "clkxtal",
		  50000000),
	FIXED_CLK(CLK_TOP_SATA_ASIC, "sata_asic", "clkxtal",
		  50000000),
	FIXED_CLK(CLK_TOP_SATA_RBC, "sata_rbc", "clkxtal",
		  50000000),
};

static const struct mtk_fixed_factor top_divs[] = {
	FACTOR(CLK_TOP_TO_USB3_SYS, "to_usb3_sys", "eth1pll", 1, 4),
	FACTOR(CLK_TOP_P1_1MHZ, "p1_1mhz", "eth1pll", 1, 500),
	FACTOR(CLK_TOP_4MHZ, "free_run_4mhz", "eth1pll", 1, 125),
	FACTOR(CLK_TOP_P0_1MHZ, "p0_1mhz", "eth1pll", 1, 500),
	FACTOR(CLK_TOP_TXCLK_SRC_PRE, "txclk_src_pre", "sgmiipll_d2", 1, 1),
	FACTOR(CLK_TOP_RTC, "rtc", "clkxtal", 1, 1024),
	FACTOR(CLK_TOP_MEMPLL, "mempll", "clkxtal", 32, 1),
	FACTOR(CLK_TOP_DMPLL, "dmpll_ck", "mempll", 1, 1),
	FACTOR(CLK_TOP_SYSPLL_D2, "syspll_d2", "mainpll", 1, 2),
	FACTOR(CLK_TOP_SYSPLL1_D2, "syspll1_d2", "mainpll", 1, 4),
	FACTOR(CLK_TOP_SYSPLL1_D4, "syspll1_d4", "mainpll", 1, 8),
	FACTOR(CLK_TOP_SYSPLL1_D8, "syspll1_d8", "mainpll", 1, 16),
	FACTOR(CLK_TOP_SYSPLL2_D4, "syspll2_d4", "mainpll", 1, 12),
	FACTOR(CLK_TOP_SYSPLL2_D8, "syspll2_d8", "mainpll", 1, 24),
	FACTOR(CLK_TOP_SYSPLL_D5, "syspll_d5", "mainpll", 1, 5),
	FACTOR(CLK_TOP_SYSPLL3_D2, "syspll3_d2", "mainpll", 1, 10),
Ejemplo n.º 14
0
	MUX(0, "i2s_pre", mux_i2s_pre_p, CLK_SET_RATE_PARENT,
			RK2928_CLKSEL_CON(3), 8, 2, MFLAGS);

static struct rockchip_clk_branch rk3036_spdif_fracmux __initdata =
	MUX(SCLK_SPDIF, "sclk_spdif", mux_spdif_p, 0,
			RK2928_CLKSEL_CON(5), 8, 2, MFLAGS);

static struct rockchip_clk_branch rk3036_clk_branches[] __initdata = {
	/*
	 * Clock-Architecture Diagram 1
	 */

	GATE(0, "gpll_armclk", "gpll", CLK_IGNORE_UNUSED,
			RK2928_CLKGATE_CON(0), 6, GFLAGS),

	FACTOR(0, "xin12m", "xin24m", 0, 1, 2),

	/*
	 * Clock-Architecture Diagram 2
	 */

	GATE(0, "dpll_ddr", "dpll", CLK_IGNORE_UNUSED,
			RK2928_CLKGATE_CON(0), 2, GFLAGS),
	GATE(0, "gpll_ddr", "gpll", CLK_IGNORE_UNUSED,
			RK2928_CLKGATE_CON(0), 8, GFLAGS),
	COMPOSITE_NOGATE(0, "ddrphy2x", mux_ddrphy_p, CLK_IGNORE_UNUSED,
			RK2928_CLKSEL_CON(26), 8, 1, MFLAGS, 0, 2, DFLAGS | CLK_DIVIDER_POWER_OF_TWO),
	FACTOR(0, "ddrphy", "ddrphy2x", 0, 1, 2),

	COMPOSITE_NOMUX(0, "pclk_dbg", "armclk", CLK_IGNORE_UNUSED,
			RK2928_CLKSEL_CON(1), 0, 4, DFLAGS | CLK_DIVIDER_READ_ONLY,
Ejemplo n.º 15
0
			RV1108_CLKGATE_CON(18), 2, GFLAGS),
	GATE(HCLK_IEP, "hclk_iep", "hclk_vio_pre", 0,
			RV1108_CLKGATE_CON(18), 3, GFLAGS),

	GATE(ACLK_RGA, "aclk_rga", "aclk_vio1_pre", 0,
			RV1108_CLKGATE_CON(18), 4, GFLAGS),
	GATE(HCLK_RGA, "hclk_rga", "hclk_vio_pre", 0,
			RV1108_CLKGATE_CON(18), 5, GFLAGS),
	COMPOSITE(SCLK_RGA, "sclk_rga", mux_pll_src_4plls_p, 0,
			RV1108_CLKSEL_CON(33), 6, 2, MFLAGS, 0, 5, DFLAGS,
			RV1108_CLKGATE_CON(6), 6, GFLAGS),

	COMPOSITE(SCLK_CVBS_HOST, "sclk_cvbs_host", mux_cvbs_src_p, 0,
			RV1108_CLKSEL_CON(33), 13, 2, MFLAGS, 8, 5, DFLAGS,
			RV1108_CLKGATE_CON(6), 7, GFLAGS),
	FACTOR(0, "sclk_cvbs_27m", "sclk_cvbs_host", 0, 1, 2),

	GATE(SCLK_HDMI_SFR, "sclk_hdmi_sfr", "xin24m", 0,
			RV1108_CLKGATE_CON(6), 8, GFLAGS),

	COMPOSITE(SCLK_HDMI_CEC, "sclk_hdmi_cec", mux_hdmi_cec_src_p, 0,
			RV1108_CLKSEL_CON(34), 14, 2, MFLAGS, 0, 14, DFLAGS,
			RV1108_CLKGATE_CON(6), 9, GFLAGS),
	GATE(PCLK_MIPI_DSI, "pclk_mipi_dsi", "pclk_vio_pre", 0,
			RV1108_CLKGATE_CON(18), 8, GFLAGS),
	GATE(PCLK_HDMI_CTRL, "pclk_hdmi_ctrl", "pclk_vio_pre", 0,
			RV1108_CLKGATE_CON(18), 9, GFLAGS),

	GATE(ACLK_ISP, "aclk_isp", "aclk_vio1_pre", 0,
			RV1108_CLKGATE_CON(18), 12, GFLAGS),
	GATE(HCLK_ISP, "hclk_isp", "hclk_vio_pre", 0,
Ejemplo n.º 16
0
	FIXED_CLK(CLK_TOP_WBG_DIG_416M, "wbg_dig_ck_416m", "clk26m",
		416 * MHZ),
	FIXED_CLK(CLK_TOP_DSI0_LNTC_DSI, "dsi0_lntc_dsi", "clk26m",
		143 * MHZ),
	FIXED_CLK(CLK_TOP_HDMI_SCL_RX, "hdmi_scl_rx", "clk26m",
		27 * MHZ),
	FIXED_CLK(CLK_TOP_AUD_EXT1, "aud_ext1", "clk26m",
		DUMMY_RATE),
	FIXED_CLK(CLK_TOP_AUD_EXT2, "aud_ext2", "clk26m",
		DUMMY_RATE),
	FIXED_CLK(CLK_TOP_NFI1X_PAD, "nfi1x_pad", "clk26m",
		DUMMY_RATE),
};

static const struct mtk_fixed_factor top_fixed_divs[] = {
	FACTOR(CLK_TOP_SYSPLL, "syspll_ck", "mainpll", 1, 1),
	FACTOR(CLK_TOP_SYSPLL_D2, "syspll_d2", "mainpll", 1, 2),
	FACTOR(CLK_TOP_SYSPLL_D3, "syspll_d3", "mainpll", 1, 3),
	FACTOR(CLK_TOP_SYSPLL_D5, "syspll_d5", "mainpll", 1, 5),
	FACTOR(CLK_TOP_SYSPLL_D7, "syspll_d7", "mainpll", 1, 7),
	FACTOR(CLK_TOP_SYSPLL1_D2, "syspll1_d2", "syspll_d2", 1, 2),
	FACTOR(CLK_TOP_SYSPLL1_D4, "syspll1_d4", "syspll_d2", 1, 4),
	FACTOR(CLK_TOP_SYSPLL1_D8, "syspll1_d8", "syspll_d2", 1, 8),
	FACTOR(CLK_TOP_SYSPLL1_D16, "syspll1_d16", "syspll_d2", 1, 16),
	FACTOR(CLK_TOP_SYSPLL2_D2, "syspll2_d2", "syspll_d3", 1, 2),
	FACTOR(CLK_TOP_SYSPLL2_D4, "syspll2_d4", "syspll_d3", 1, 4),
	FACTOR(CLK_TOP_SYSPLL2_D8, "syspll2_d8", "syspll_d3", 1, 8),
	FACTOR(CLK_TOP_SYSPLL3_D2, "syspll3_d2", "syspll_d5", 1, 2),
	FACTOR(CLK_TOP_SYSPLL3_D4, "syspll3_d4", "syspll_d5", 1, 4),
	FACTOR(CLK_TOP_SYSPLL4_D2, "syspll4_d2", "syspll_d7", 1, 2),
	FACTOR(CLK_TOP_SYSPLL4_D4, "syspll4_d4", "syspll_d7", 1, 4),
Ejemplo n.º 17
0
    GATE(0, "pclk_isp_pre", "pclk_vip", CLK_IGNORE_UNUSED,
    RK1108_CLKGATE_CON(7), 6, GFLAGS),
    GATE(0, "pclk_isp", "pclk_isp_pre", CLK_IGNORE_UNUSED,
    RK1108_CLKGATE_CON(18), 10, GFLAGS),
    GATE(0, "dclk_hdmiphy_src_gpll", "gpll", CLK_IGNORE_UNUSED,
    RK1108_CLKGATE_CON(6), 5, GFLAGS),
    GATE(0, "dclk_hdmiphy_src_dpll", "dpll", CLK_IGNORE_UNUSED,
    RK1108_CLKGATE_CON(6), 4, GFLAGS),
    COMPOSITE_NOGATE(0, "dclk_hdmiphy", mux_dclk_hdmiphy_pre_p, 0,
    RK1108_CLKSEL_CON(32), 6, 2, MFLAGS, 8, 6, DFLAGS),

    /*
     * Clock-Architecture Diagram 5
     */

    FACTOR(0, "xin12m", "xin24m", 0, 1, 2),

    COMPOSITE(0, "i2s0_src", mux_pll_src_2plls_p, 0,
    RK1108_CLKSEL_CON(5), 8, 1, MFLAGS, 0, 7, DFLAGS,
    RK1108_CLKGATE_CON(2), 0, GFLAGS),
    COMPOSITE_FRACMUX(0, "i2s1_frac", "i2s1_src", CLK_SET_RATE_PARENT,
    RK1108_CLKSEL_CON(8), 0,
    RK1108_CLKGATE_CON(2), 1, GFLAGS,
    &rk1108_i2s0_fracmux),
    GATE(SCLK_I2S0, "sclk_i2s0", "i2s0_pre", CLK_SET_RATE_PARENT,
    RK1108_CLKGATE_CON(2), 2, GFLAGS),
    COMPOSITE_NODIV(0, "i2s_out", mux_i2s_out_p, 0,
    RK1108_CLKSEL_CON(5), 15, 1, MFLAGS,
    RK1108_CLKGATE_CON(2), 3, GFLAGS),

    COMPOSITE(0, "i2s1_src", mux_pll_src_2plls_p, 0,
		if (IS_ERR(clk)) {
			pr_err("Failed to register clk %s: %ld\n",
					ff->name, PTR_ERR(clk));
			continue;
		}

		if (clk_data)
			clk_data->clks[ff->id] = clk;

		pr_debug("factor %3d: %s\n", i, ff->name);
	}
}

static struct mtk_fixed_factor root_clk_alias[] __initdata = {
	FACTOR(TOP_CLKPH_MCK_O, clkph_mck_o, clk_null, 1, 1),
	FACTOR(TOP_DPI_CK, dpi_ck, clk_null, 1, 1),
};

static void __init init_clk_root_alias(struct clk_onecell_data *clk_data)
{
	init_factors(root_clk_alias, ARRAY_SIZE(root_clk_alias), clk_data);
}

static struct mtk_fixed_factor top_divs[] __initdata = {
	FACTOR(TOP_UNIVPLL_D2, univpll_d2, univpll, 1, 1),
	FACTOR(TOP_UNIVPLL_D3, univpll_d3, univpll, 1, 1),
	FACTOR(TOP_UNIVPLL1_D2, univpll1_d2, univpll, 1, 1),
	FACTOR(TOP_AD_APLL1_CK, ad_apll1_ck, apll1, 1, 1),
	FACTOR(TOP_AD_SYS_26M_CK, ad_sys_26m_ck, clk26m, 1, 1),
	FACTOR(TOP_AD_SYS_26M_D2, ad_sys_26m_d2, clk26m, 1, 1),