rk3288 imx6ull的lcd驱动时钟设置

本文详细介绍了IMX6ULL芯片中LCD接口的时钟设置,包括AXI时钟和PIXEL时钟的配置。通过设备树在`imx6ull.dtsi`文件中设置时钟源,并在驱动程序中获取和设置时钟频率。驱动程序中分别获取AXI、PIXEL和DISP_AXI时钟,并进行使能操作。重点在于如何修改设备树和驱动以适配不同的时钟需求。
摘要由CSDN通过智能技术生成

imx6ull的时钟设置

  1. axi时钟
  2. pixel时钟

时钟bus clock来自apb_clk,display clock来自pix_clk
LCD框图
BUS CLOCK用来给芯片提供时钟,DISPLAY CLOCK用来给LCD提供时钟。

使用设备树设置时钟

在arch/arm/boot/dts/imx6ull.dtsi文件中有:

           lcdif: lcdif@021c8000 {
                compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif";
                reg = <0x021c8000 0x4000>;
                interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,			//pix_clk
                     <&clks IMX6UL_CLK_LCDIF_APB>,				//apb_clk
                     <&clks IMX6UL_CLK_DUMMY>;					//虚拟时钟,6ull不需要这个时钟。但是别的可能需要
                clock-names = "pix", "axi", "disp_axi";			//依次对应名字,在代码中用名字获得
                status = "disabled";
            };

所以如果要改设置树的时钟接口的话,就该这几个就好了

驱动中配置时钟

  • axi clock只需要使能就够了
  • pix clock需要自己设置
  • 获得时钟

    	host->clk_pix = devm_clk_get(&host->pdev->dev, "pix");
    	if (IS_ERR(host->clk_pix)) {
    		host->clk_pix = NULL;
    		ret = PTR_ERR(host->clk_pix);
    		goto fb_release;
    	}
    
    	host->clk_axi = devm_clk_get(&host->pdev->dev, "axi");
    	if (IS_ERR(host->clk_axi)) {
    		host->clk_axi = NULL;
    		ret = PTR_ERR(host->clk_axi);
    		dev_err(&pdev->dev, "Failed to get axi clock: %d\n", ret);
    		goto fb_release;
    	}
    
    	host->clk_disp_axi = devm_clk_get(&host->pdev->dev, "disp_axi");
    	if (IS_ERR(host->clk_disp_axi)) {
    		host->clk_disp_axi = NULL;
    		ret = PTR_ERR(host->clk_disp_axi);
    		dev_err(&pdev->dev, "Failed to get disp_axi clock: %d\n", ret);
    		goto fb_release;
    	}
    
  • 设置频率:只需要设置pixel clock的频率

    		ret = clk_set_rate(host->clk_pix,
    				PICOS2KHZ(fb_info->var.pixclock) * 1000U);
    
  • 使能时钟

    		clk_enable_pix(host);
    			clk_prepare_enable(host->clk_pix);
    		clk_enable_axi(host);
    			clk_prepare_enable(host->clk_axi);
    		clk_enable_disp_axi(host);
    			clk_prepare_enable(host->clk_disp_axi);
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

习惯就好zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值