From cf0cf49f1656ea83acee925271df41c6ab682d4a Mon Sep 17 00:00:00 2001 From: "nengwen.chen" Date: Mon, 6 Aug 2018 19:04:10 +0800 Subject: [PATCH] atv_demod: add xtal config for tuner [1/3] PD#171245: add xtal config for tuner Change-Id: Id682294ea1e0de265df56509fa5fc4480212f7a7 Signed-off-by: nengwen.chen --- arch/arm64/boot/dts/amlogic/txl_t950_p341.dts | 3 ++- arch/arm64/boot/dts/amlogic/txl_t960_p346.dts | 3 ++- arch/arm64/boot/dts/amlogic/txl_t962_p320.dts | 3 ++- arch/arm64/boot/dts/amlogic/txl_t962_p321.dts | 3 ++- arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts | 3 ++- .../arm64/boot/dts/amlogic/txlx_t962e_r321_buildroot.dts | 3 ++- arch/arm64/boot/dts/amlogic/txlx_t962x_r311_1g.dts | 8 ++++++-- arch/arm64/boot/dts/amlogic/txlx_t962x_r311_2g.dts | 8 ++++++-- arch/arm64/boot/dts/amlogic/txlx_t962x_r311_720p.dts | 8 ++++++-- drivers/amlogic/atv_demod/atv_demod_driver.c | 9 ++++++++- drivers/amlogic/atv_demod/atv_demod_driver.h | 1 + include/linux/amlogic/aml_atvdemod.h | 3 ++- 12 files changed, 41 insertions(+), 14 deletions(-) diff --git a/arch/arm64/boot/dts/amlogic/txl_t950_p341.dts b/arch/arm64/boot/dts/amlogic/txl_t950_p341.dts index fa1a46423d5e..077d56f1f075 100644 --- a/arch/arm64/boot/dts/amlogic/txl_t950_p341.dts +++ b/arch/arm64/boot/dts/amlogic/txl_t950_p341.dts @@ -418,7 +418,8 @@ tuner_name = "r842_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0xf6>; - tuner_xtal = <3>; + tuner_xtal = <1>; /* 0: 16MHz, 1: 24MHz, 3: 27MHz */ + tuner_xtal_mode = <3>; /* NO_SHARE_XTAL(0) * MASTER_TO_SLAVE_XTAL_IN(1) * MASTER_TO_SLAVE_XTAL_OUT(2) diff --git a/arch/arm64/boot/dts/amlogic/txl_t960_p346.dts b/arch/arm64/boot/dts/amlogic/txl_t960_p346.dts index e94fa04ad4d0..92eecde62141 100644 --- a/arch/arm64/boot/dts/amlogic/txl_t960_p346.dts +++ b/arch/arm64/boot/dts/amlogic/txl_t960_p346.dts @@ -419,7 +419,8 @@ tuner_name = "r842_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0xf6>; - tuner_xtal = <3>; + tuner_xtal = <1>; /* 0: 16MHz, 1: 24MHz, 3: 27MHz */ + tuner_xtal_mode = <3>; /* NO_SHARE_XTAL(0) * MASTER_TO_SLAVE_XTAL_IN(1) * MASTER_TO_SLAVE_XTAL_OUT(2) diff --git a/arch/arm64/boot/dts/amlogic/txl_t962_p320.dts b/arch/arm64/boot/dts/amlogic/txl_t962_p320.dts index 3f17de1cf558..433b8edf6873 100644 --- a/arch/arm64/boot/dts/amlogic/txl_t962_p320.dts +++ b/arch/arm64/boot/dts/amlogic/txl_t962_p320.dts @@ -410,7 +410,8 @@ tuner_name = "si2151_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ + /* tuner_xtal = <0>; */ /* unuse for si2151 */ + /* tuner_xtal_mode = <0>; */ /* tuner_xtal_cap = <0>; */ }; diff --git a/arch/arm64/boot/dts/amlogic/txl_t962_p321.dts b/arch/arm64/boot/dts/amlogic/txl_t962_p321.dts index 447176e5f8df..a94d2001ceb9 100644 --- a/arch/arm64/boot/dts/amlogic/txl_t962_p321.dts +++ b/arch/arm64/boot/dts/amlogic/txl_t962_p321.dts @@ -409,7 +409,8 @@ tuner_name = "r842_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0xf6>; - tuner_xtal = <0>; + tuner_xtal = <1>; /* 0: 16MHz, 1: 24MHz, 3: 27MHz */ + tuner_xtal_mode = <0>; /* NO_SHARE_XTAL(0) * MASTER_TO_SLAVE_XTAL_IN(1) * MASTER_TO_SLAVE_XTAL_OUT(2) diff --git a/arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts b/arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts index f741fd7ca1ab..586ee974412a 100644 --- a/arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts +++ b/arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts @@ -610,7 +610,8 @@ tuner_name = "si2151_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ + /* tuner_xtal = <0>; */ /* unuse for si2151 */ + /* tuner_xtal_mode = <0>; */ /* tuner_xtal_cap = <0>; */ }; diff --git a/arch/arm64/boot/dts/amlogic/txlx_t962e_r321_buildroot.dts b/arch/arm64/boot/dts/amlogic/txlx_t962e_r321_buildroot.dts index b414b552c673..b64332b9048d 100644 --- a/arch/arm64/boot/dts/amlogic/txlx_t962e_r321_buildroot.dts +++ b/arch/arm64/boot/dts/amlogic/txlx_t962e_r321_buildroot.dts @@ -653,7 +653,8 @@ tuner_name = "si2151_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ + /* tuner_xtal = <0>; */ /* unuse for si2151 */ + /* tuner_xtal_mode = <0>; */ /* tuner_xtal_cap = <0>; */ }; diff --git a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_1g.dts b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_1g.dts index 374c7eeab15a..ef7afc34a824 100644 --- a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_1g.dts +++ b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_1g.dts @@ -603,8 +603,12 @@ tuner_name = "mxl661_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ - /* tuner_xtal_cap = <0>; */ + tuner_xtal = <0>; /* 0: 16MHz, 1: 24MHz */ + tuner_xtal_mode = <0>; + /* NO_SHARE_XTAL(0) + * SLAVE_XTAL_SHARE(1) + */ + tuner_xtal_cap = <30>; /* when tuner_xtal_mode = 1, set 25 */ }; atv-demod { diff --git a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_2g.dts b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_2g.dts index 4bdef1a4c351..2bc6dbda3c39 100644 --- a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_2g.dts +++ b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_2g.dts @@ -603,8 +603,12 @@ tuner_name = "mxl661_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ - /* tuner_xtal_cap = <0>; */ + tuner_xtal = <0>; /* 0: 16MHz, 1: 24MHz */ + tuner_xtal_mode = <0>; + /* NO_SHARE_XTAL(0) + * SLAVE_XTAL_SHARE(1) + */ + tuner_xtal_cap = <30>; /* when tuner_xtal_mode = 1, set 25 */ }; atv-demod { diff --git a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_720p.dts b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_720p.dts index 0301fbf12113..0da464778829 100644 --- a/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_720p.dts +++ b/arch/arm64/boot/dts/amlogic/txlx_t962x_r311_720p.dts @@ -602,8 +602,12 @@ tuner_name = "mxl661_tuner"; tuner_i2c_adap = <&i2c1>; tuner_i2c_addr = <0x60>; - /* tuner_xtal = <0>; */ - /* tuner_xtal_cap = <0>; */ + tuner_xtal = <0>; /* 0: 16MHz, 1: 24MHz */ + tuner_xtal_mode = <0>; + /* NO_SHARE_XTAL(0) + * SLAVE_XTAL_SHARE(1) + */ + tuner_xtal_cap = <30>; /* when tuner_xtal_mode = 1, set 25 */ }; atv-demod { diff --git a/drivers/amlogic/atv_demod/atv_demod_driver.c b/drivers/amlogic/atv_demod/atv_demod_driver.c index 0bc009f60a2e..c70f363fcec4 100644 --- a/drivers/amlogic/atv_demod/atv_demod_driver.c +++ b/drivers/amlogic/atv_demod/atv_demod_driver.c @@ -458,11 +458,17 @@ static void aml_atvdemod_dt_parse(struct aml_atvdemod_device *pdev) else pdev->tuner_xtal = val; + ret = of_property_read_u32(node_tuner, "tuner_xtal_mode", &val); + if (ret) + pr_err("can't find tuner_xtal_mode.\n"); + else + pdev->tuner_xtal_mode = val; + ret = of_property_read_u32(node_tuner, "tuner_xtal_cap", &val); if (ret) pr_err("can't find tuner_xtal_cap.\n"); else - pdev->tuner_xtal = val; + pdev->tuner_xtal_cap = val; of_node_put(node_tuner); } @@ -491,6 +497,7 @@ int aml_attach_demod_tuner(struct aml_atvdemod_device *dev) cfg.id = dev->tuner_id; cfg.i2c_addr = dev->i2c_addr; cfg.xtal = dev->tuner_xtal; + cfg.xtal_mode = dev->tuner_xtal_mode; cfg.xtal_cap = dev->tuner_xtal_cap; if (!dev->tuner_attached) { diff --git a/drivers/amlogic/atv_demod/atv_demod_driver.h b/drivers/amlogic/atv_demod/atv_demod_driver.h index 6d2372bff9fa..405ba0e4a498 100644 --- a/drivers/amlogic/atv_demod/atv_demod_driver.h +++ b/drivers/amlogic/atv_demod/atv_demod_driver.h @@ -41,6 +41,7 @@ struct aml_atvdemod_device { unsigned int tuner_id; unsigned int tuner_xtal; + unsigned int tuner_xtal_mode; unsigned int tuner_xtal_cap; unsigned int i2c_addr; unsigned int i2c_adapter_id; diff --git a/include/linux/amlogic/aml_atvdemod.h b/include/linux/amlogic/aml_atvdemod.h index 8ba76e746d93..29519f089d9e 100644 --- a/include/linux/amlogic/aml_atvdemod.h +++ b/include/linux/amlogic/aml_atvdemod.h @@ -144,8 +144,9 @@ enum tuner_type { struct tuner_config { u8 id; u8 i2c_addr; - u8 xtal; + u8 xtal; /* 0: 16MHz, 1: 24MHz, 3: 27MHz */ u8 xtal_cap; + u8 xtal_mode; }; extern struct dvb_frontend *mxl661_attach(struct dvb_frontend *fe,