Gpioao_11 如何输出24m时钟

aml_cams {
compatible = “amlogic, cams_prober”;
status = “okay”;
pinctrl-names=“default”;
//pinctrl-0=<&gen_clk_ee_z>;
pinctrl-0=<&gen_clk_ao>;
clocks = <&clkc CLKID_GEN_CLK>;
clock-names = “g12a_24m”;
cam_0{
cam_name = “gc2145_mipi”;
front_back = <0>;
camera-i2c-bus = <&i2c_AO>;
//gpio_pwdn-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
//gpio_rst-gpios = <&gpio GPIOZ_12 GPIO_ACTIVE_HIGH>;
mirror_flip = <1>;
vertical_flip = <1>;
spread_spectrum = <0>;
bt_path = “csi”;
interface = “mipi”;
clk_channel = “a”;
bt_path_count = <1>;
status = “okay”;
};
};

&pinctrl_aobus {
spdifout: spdifout {
mux { /* GPIOAO_10 */
groups = “spdif_out_ao”;
function = “spdif_out_ao”;
};
};

bl_pwm_off_pins:bl_pwm_off_pin {
	mux {
		pins = "GPIOAO_6";
		function = "gpio_aobus";
		output-low;
	};
};

gen_clk_ao: gen_clk_ao {
	mux {
		groups="gen_clk_ao";
		function="gen_clk_ao";
		drive-strength = <3>;
	};
};

}; /* end of pinctrl_aobus */

static inline void GX12_cam_enable_clk(void)
{
struct clk *clk;
unsigned long clk_rate;

printk("%s:pt1\n",__func__);
clk = devm_clk_get(&cam_pdev->dev, "g12a_24m");
if (IS_ERR(clk)) {
	pr_info("cannot get camera m-clock\n");
	clk = NULL;
} else {
	cam_clk = clk;
	clk_set_rate(clk, 24000000);
	clk_prepare_enable(clk);
	clk_rate = clk_get_rate(clk);
	printk("%s:clk_rate %ld\n",__func__,clk_rate);
}

}

[ 3.765099@1] camer addr: 0x3c
[ 3.765100@1] camer i2c bus: 0
[ 3.765126@1] aml_cam_init:pt1
[ 3.765127@1] aml_cam_init:pt3
[ 3.765128@1] GX12_cam_enable_clk:pt1
[ 3.765291@1] GX12_cam_enable_clk:clk_rate 24000000

从代码log看已经有时钟了,但是示波器测试没有波形。

参考这个提提交:


请问这个gpioao_11 gen_clk_ee和gen_clk_ao 这两个功能有什么区别呢?

具体的你看手册吧。我们使用的是gen_clk_ee_ao

	gen_clk_ee_ao: gen_clk_ee_ao {
		mux {
			groups="gen_clk_ee_ao";
			function="gen_clk_ee_ao";
			drive-strength = <3>;
		};
	};



手册看不太明白,这个表示的是截图这个吗?EE和AO

你按照补丁里的clk配置就可以了,VIM3就是这样的。

纯粹解决问题是可以这么做,我必须要弄明白这个有什么区别,防止后面遇到其他问题。