From: Matthias Brugger Date: Fri, 10 Jan 2020 10:00:45 +0000 (+0100) Subject: Merge branch 'v5.5-next/cmdq-stable' into v5.5-next/soc X-Git-Tag: Ubuntu-5.10.0-12.13~3515^2~1^2 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=9c26abeb86ce6ab53b6397873bb3f556016c05ba;p=mirror_ubuntu-hirsute-kernel.git Merge branch 'v5.5-next/cmdq-stable' into v5.5-next/soc --- 9c26abeb86ce6ab53b6397873bb3f556016c05ba diff --cc drivers/soc/mediatek/mtk-cmdq-helper.c index 1127c19c4e91,9add0fd5fa6c..de20e6cba83b --- a/drivers/soc/mediatek/mtk-cmdq-helper.c +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c @@@ -9,10 -9,54 +9,52 @@@ #include #include - #define CMDQ_ARG_A_WRITE_MASK 0xffff #define CMDQ_WRITE_ENABLE_MASK BIT(0) + #define CMDQ_POLL_ENABLE_MASK BIT(0) #define CMDQ_EOC_IRQ_EN BIT(0) -#define CMDQ_EOC_CMD ((u64)((CMDQ_CODE_EOC << CMDQ_OP_CODE_SHIFT)) \ - << 32 | CMDQ_EOC_IRQ_EN) + struct cmdq_instruction { + union { + u32 value; + u32 mask; + }; + union { + u16 offset; + u16 event; + }; + u8 subsys; + u8 op; + }; + + int cmdq_dev_get_client_reg(struct device *dev, + struct cmdq_client_reg *client_reg, int idx) + { + struct of_phandle_args spec; + int err; + + if (!client_reg) + return -ENOENT; + + err = of_parse_phandle_with_fixed_args(dev->of_node, + "mediatek,gce-client-reg", + 3, idx, &spec); + if (err < 0) { + dev_err(dev, + "error %d can't parse gce-client-reg property (%d)", + err, idx); + + return err; + } + + client_reg->subsys = (u8)spec.args[0]; + client_reg->offset = (u16)spec.args[1]; + client_reg->size = (u16)spec.args[2]; + of_node_put(spec.np); + + return 0; + } + EXPORT_SYMBOL(cmdq_dev_get_client_reg); + static void cmdq_client_timeout(struct timer_list *t) { struct cmdq_client *client = from_timer(client, t, timer);