@@ -137,6 +137,51 @@ struct loongson2_clk_board_info {
137137 .fixed_rate = _rate, \
138138 }
139139
140+ static const struct loongson2_clk_board_info ls2k0300_clks [] = {
141+ /* Reference Clock */
142+ CLK_PLL (LS2K0300_NODE_PLL , "pll_node" , 0x00 , 15 , 9 , 8 , 7 ),
143+ CLK_PLL (LS2K0300_DDR_PLL , "pll_ddr" , 0x08 , 15 , 9 , 8 , 7 ),
144+ CLK_PLL (LS2K0300_PIX_PLL , "pll_pix" , 0x10 , 15 , 9 , 8 , 7 ),
145+ CLK_FIXED (LS2K0300_CLK_STABLE , "clk_stable" , NULL , 100000000 ),
146+ CLK_FIXED (LS2K0300_CLK_THSENS , "clk_thsens" , NULL , 10000000 ),
147+ /* Node PLL */
148+ CLK_DIV (LS2K0300_CLK_NODE_DIV , "clk_node_div" , "pll_node" , 0x00 , 24 , 7 ),
149+ CLK_DIV (LS2K0300_CLK_GMAC_DIV , "clk_gmac_div" , "pll_node" , 0x04 , 0 , 7 ),
150+ CLK_DIV (LS2K0300_CLK_I2S_DIV , "clk_i2s_div" , "pll_node" , 0x04 , 8 , 7 ),
151+ CLK_GATE (LS2K0300_CLK_NODE_PLL_GATE , "clk_node_pll_gate" , "clk_node_div" , 0x00 , 0 ),
152+ CLK_GATE (LS2K0300_CLK_GMAC_GATE , "clk_gmac_gate" , "clk_gmac_div" , 0x00 , 1 ),
153+ CLK_GATE (LS2K0300_CLK_I2S_GATE , "clk_i2s_gate" , "clk_i2s_div" , 0x00 , 2 ),
154+ CLK_GATE_FLAGS (LS2K0300_CLK_NODE_GATE , "clk_node_gate" , "clk_node_scale" , 0x24 , 0 ,
155+ CLK_IS_CRITICAL ),
156+ CLK_SCALE_MODE (LS2K0300_CLK_NODE_SCALE , "clk_node_scale" , "clk_node_pll_gate" , 0x20 , 0 , 3 ,
157+ 3 ),
158+ /* DDR PLL */
159+ CLK_DIV (LS2K0300_CLK_DDR_DIV , "clk_ddr_div" , "pll_ddr" , 0x08 , 24 , 7 ),
160+ CLK_DIV (LS2K0300_CLK_NET_DIV , "clk_net_div" , "pll_ddr" , 0x0c , 0 , 7 ),
161+ CLK_DIV (LS2K0300_CLK_DEV_DIV , "clk_dev_div" , "pll_ddr" , 0x0c , 8 , 7 ),
162+ CLK_GATE (LS2K0300_CLK_NET_GATE , "clk_net_gate" , "clk_net_div" , 0x08 , 1 ),
163+ CLK_GATE (LS2K0300_CLK_DEV_GATE , "clk_dev_gate" , "clk_dev_div" , 0x08 , 2 ),
164+ CLK_GATE_FLAGS (LS2K0300_CLK_DDR_GATE , "clk_ddr_gate" , "clk_ddr_div" , 0x08 , 0 ,
165+ CLK_IS_CRITICAL ),
166+ /* PIX PLL */
167+ CLK_DIV (LS2K0300_CLK_PIX_DIV , "clk_pix_div" , "pll_pix" , 0x10 , 24 , 7 ),
168+ CLK_DIV (LS2K0300_CLK_GMACBP_DIV , "clk_gmacbp_div" , "pll_pix" , 0x14 , 0 , 7 ),
169+ CLK_GATE (LS2K0300_CLK_PIX_PLL_GATE , "clk_pix_pll_gate" , "clk_pix_div" , 0x10 , 0 ),
170+ CLK_GATE (LS2K0300_CLK_PIX_GATE , "clk_pix_gate" , "clk_pix_scale" , 0x24 , 6 ),
171+ CLK_GATE (LS2K0300_CLK_GMACBP_GATE , "clk_gmacbp_gate" , "clk_gmacbp_div" , 0x10 , 1 ),
172+ CLK_SCALE_MODE (LS2K0300_CLK_PIX_SCALE , "clk_pix_scale" , "clk_pix_pll_gate" , 0x20 , 4 , 3 , 7 ),
173+ /* clk_dev_gate */
174+ CLK_DIV (LS2K0300_CLK_SDIO_SCALE , "clk_sdio_scale" , "clk_dev_gate" , 0x20 , 24 , 4 ),
175+ CLK_GATE (LS2K0300_CLK_USB_GATE , "clk_usb_gate" , "clk_usb_scale" , 0x24 , 2 ),
176+ CLK_GATE (LS2K0300_CLK_SDIO_GATE , "clk_sdio_gate" , "clk_sdio_scale" , 0x24 , 4 ),
177+ CLK_GATE (LS2K0300_CLK_APB_GATE , "clk_apb_gate" , "clk_apb_scale" , 0x24 , 3 ),
178+ CLK_GATE_FLAGS (LS2K0300_CLK_BOOT_GATE , "clk_boot_gate" , "clk_boot_scale" , 0x24 , 1 ,
179+ CLK_IS_CRITICAL ),
180+ CLK_SCALE_MODE (LS2K0300_CLK_USB_SCALE , "clk_usb_scale" , "clk_dev_gate" , 0x20 , 12 , 3 , 15 ),
181+ CLK_SCALE_MODE (LS2K0300_CLK_APB_SCALE , "clk_apb_scale" , "clk_dev_gate" , 0x20 , 16 , 3 , 19 ),
182+ CLK_SCALE_MODE (LS2K0300_CLK_BOOT_SCALE , "clk_boot_scale" , "clk_dev_gate" , 0x20 , 8 , 3 , 11 ),
183+ };
184+
140185static const struct loongson2_clk_board_info ls2k0500_clks [] = {
141186 CLK_PLL (LOONGSON2_NODE_PLL , "pll_node" , 0 , 16 , 8 , 8 , 6 ),
142187 CLK_PLL (LOONGSON2_DDR_PLL , "pll_ddr" , 0x8 , 16 , 8 , 8 , 6 ),
@@ -393,6 +438,7 @@ static int loongson2_clk_probe(struct platform_device *pdev)
393438}
394439
395440static const struct of_device_id loongson2_clk_match_table [] = {
441+ { .compatible = "loongson,ls2k0300-clk" , .data = & ls2k0300_clks },
396442 { .compatible = "loongson,ls2k0500-clk" , .data = & ls2k0500_clks },
397443 { .compatible = "loongson,ls2k-clk" , .data = & ls2k1000_clks },
398444 { .compatible = "loongson,ls2k2000-clk" , .data = & ls2k2000_clks },
0 commit comments