Commit aa1609f5 authored by AngeloGioacchino Del Regno's avatar AngeloGioacchino Del Regno Committed by Jassi Brar
Browse files

mailbox: mtk-cmdq: Dynamically allocate clk_bulk_data structure



Now that the clock probing code uses devm_kasprintf(), there is
no more restriction on the number of GCEs: dynamically allocate
the clk_bulk_data clocks array to improve flexibility and also
to get a slight memory saving on platforms featuring only one
CMDQ mailbox (and consequently only one Global Command Engine).

Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarJassi Brar <jassisinghbrar@gmail.com>
parent 0af932c5
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@

#define CMDQ_OP_CODE_MASK		(0xff << CMDQ_OP_CODE_SHIFT)
#define CMDQ_NUM_CMD(t)			(t->cmd_buf_size / CMDQ_INST_SIZE)
#define CMDQ_GCE_NUM_MAX		(2)

#define CMDQ_CURR_IRQ_STATUS		0x10
#define CMDQ_SYNC_TOKEN_UPDATE		0x68
@@ -81,7 +80,7 @@ struct cmdq {
	u32			irq_mask;
	const struct gce_plat	*pdata;
	struct cmdq_thread	*thread;
	struct clk_bulk_data	clocks[CMDQ_GCE_NUM_MAX];
	struct clk_bulk_data	*clocks;
	bool			suspended;
};

@@ -584,6 +583,11 @@ static int cmdq_get_clocks(struct device *dev, struct cmdq *cmdq)
	struct device_node *node, *parent = dev->of_node->parent;
	struct clk_bulk_data *clks;

	cmdq->clocks = devm_kcalloc(dev, cmdq->pdata->gce_num,
				    sizeof(cmdq->clocks), GFP_KERNEL);
	if (!cmdq->clocks)
		return -ENOMEM;

	if (cmdq->pdata->gce_num == 1) {
		clks = &cmdq->clocks[0];