mirror of
https://github.com/Fishwaldo/build.git
synced 2025-07-24 05:48:41 +00:00
* Attach Meson64 to mainline with a bunch of patches. Tested, but need further work. * Enable DVFS on N2 which sometimes works, sometime doesn't, cleanup * Enable beta targets for Meson64 kernel family * Bump with version
109 lines
3.6 KiB
Diff
109 lines
3.6 KiB
Diff
add syscon phandle in cec node to activate wakeup support
|
|
|
|
Tested-by: Kevin Hilman <khilman@baylibre.com>
|
|
Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
|
|
---
|
|
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
index 7fabc8d9654a..98c6a1d1d035 100644
|
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
@@ -1899,6 +1899,7 @@
|
|
interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
|
|
clocks = <&clkc_AO CLKID_AO_CTS_OSCIN>;
|
|
clock-names = "oscin";
|
|
+ amlogic,ao-sysctrl = <&rti>;
|
|
status = "disabled";
|
|
};
|
|
|
|
|
|
add register configuration to activate wakeup feature in bl301
|
|
|
|
Tested-by: Kevin Hilman <khilman@baylibre.com>
|
|
Signed-off-by: Guillaume La Roque <glaroque@baylibre.com>
|
|
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
---
|
|
drivers/media/platform/meson/ao-cec-g12a.c | 33 ++++++++++++++++++++++
|
|
1 file changed, 33 insertions(+)
|
|
|
|
diff --git a/drivers/media/platform/meson/ao-cec-g12a.c b/drivers/media/platform/meson/ao-cec-g12a.c
|
|
index 891533060d49..85850b974126 100644
|
|
--- a/drivers/media/platform/meson/ao-cec-g12a.c
|
|
+++ b/drivers/media/platform/meson/ao-cec-g12a.c
|
|
@@ -25,6 +25,7 @@
|
|
#include <media/cec.h>
|
|
#include <media/cec-notifier.h>
|
|
#include <linux/clk-provider.h>
|
|
+#include <linux/mfd/syscon.h>
|
|
|
|
/* CEC Registers */
|
|
|
|
@@ -168,6 +169,18 @@
|
|
|
|
#define CECB_WAKEUPCTRL 0x31
|
|
|
|
+#define CECB_FUNC_CFG_REG 0xA0
|
|
+#define CECB_FUNC_CFG_MASK GENMASK(6, 0)
|
|
+#define CECB_FUNC_CFG_CEC_ON 0x01
|
|
+#define CECB_FUNC_CFG_OTP_ON 0x02
|
|
+#define CECB_FUNC_CFG_AUTO_STANDBY 0x04
|
|
+#define CECB_FUNC_CFG_AUTO_POWER_ON 0x08
|
|
+#define CECB_FUNC_CFG_ALL 0x2f
|
|
+#define CECB_FUNC_CFG_NONE 0x0
|
|
+
|
|
+#define CECB_LOG_ADDR_REG 0xA4
|
|
+#define CECB_LOG_ADDR_MASK GENMASK(22, 16)
|
|
+
|
|
struct meson_ao_cec_g12a_data {
|
|
/* Setup the internal CECB_CTRL2 register */
|
|
bool ctrl2_setup;
|
|
@@ -177,6 +190,7 @@ struct meson_ao_cec_g12a_device {
|
|
struct platform_device *pdev;
|
|
struct regmap *regmap;
|
|
struct regmap *regmap_cec;
|
|
+ struct regmap *regmap_ao_sysctrl;
|
|
spinlock_t cec_reg_lock;
|
|
struct cec_notifier *notify;
|
|
struct cec_adapter *adap;
|
|
@@ -518,6 +532,13 @@ meson_ao_cec_g12a_set_log_addr(struct cec_adapter *adap, u8 logical_addr)
|
|
BIT(logical_addr - 8));
|
|
}
|
|
|
|
+ if (ao_cec->regmap_ao_sysctrl)
|
|
+ ret |= regmap_update_bits(ao_cec->regmap_ao_sysctrl,
|
|
+ CECB_LOG_ADDR_REG,
|
|
+ CECB_LOG_ADDR_MASK,
|
|
+ FIELD_PREP(CECB_LOG_ADDR_MASK,
|
|
+ logical_addr));
|
|
+
|
|
/* Always set Broadcast/Unregistered 15 address */
|
|
ret |= regmap_update_bits(ao_cec->regmap_cec, CECB_LADD_HIGH,
|
|
BIT(CEC_LOG_ADDR_UNREGISTERED - 8),
|
|
@@ -618,6 +639,13 @@ static int meson_ao_cec_g12a_adap_enable(struct cec_adapter *adap, bool enable)
|
|
regmap_write(ao_cec->regmap_cec, CECB_CTRL2,
|
|
FIELD_PREP(CECB_CTRL2_RISE_DEL_MAX, 2));
|
|
|
|
+ if (ao_cec->regmap_ao_sysctrl) {
|
|
+ regmap_update_bits(ao_cec->regmap_ao_sysctrl,
|
|
+ CECB_FUNC_CFG_REG,
|
|
+ CECB_FUNC_CFG_MASK,
|
|
+ CECB_FUNC_CFG_ALL);
|
|
+ }
|
|
+
|
|
meson_ao_cec_g12a_irq_setup(ao_cec, true);
|
|
|
|
return 0;
|
|
@@ -685,6 +713,11 @@ static int meson_ao_cec_g12a_probe(struct platform_device *pdev)
|
|
goto out_probe_adapter;
|
|
}
|
|
|
|
+ ao_cec->regmap_ao_sysctrl = syscon_regmap_lookup_by_phandle
|
|
+ (pdev->dev.of_node, "amlogic,ao-sysctrl");
|
|
+ if (IS_ERR(ao_cec->regmap_ao_sysctrl))
|
|
+ dev_warn(&pdev->dev, "ao-sysctrl syscon regmap lookup failed.\n");
|
|
+
|
|
irq = platform_get_irq(pdev, 0);
|
|
ret = devm_request_threaded_irq(&pdev->dev, irq,
|
|
meson_ao_cec_g12a_irq,
|