Commit 2cf0b6fe authored by Ioana Ciornei's avatar Ioana Ciornei Committed by David S. Miller
Browse files

soc: fsl: dpio: extract the QBMAN clock frequency from the attributes



Through the dpio_get_attributes() firmware call the dpio driver has
access to the QBMAN clock frequency. Extend the structure which holds
the firmware's response so that we can have access to this information.

This will be needed in the next patches which also add support for
interrupt coalescing which needs to be configured based on the
frequency.

Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f3fafbcb
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -46,6 +46,9 @@ struct dpio_rsp_get_attr {
	__le64 qbman_portal_ci_addr;
	/* cmd word 3 */
	__le32 qbman_version;
	__le32 pad1;
	/* cmd word 4 */
	__le32 clk;
};

struct dpio_stashing_dest {
+1 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
		goto err_get_attr;
	}
	desc.qman_version = dpio_attrs.qbman_version;
	desc.qman_clk = dpio_attrs.clk;

	err = dpio_enable(dpio_dev->mc_io, 0, dpio_dev->mc_handle);
	if (err) {
+1 −0
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc,
	obj->dpio_desc = *desc;
	obj->swp_desc.cena_bar = obj->dpio_desc.regs_cena;
	obj->swp_desc.cinh_bar = obj->dpio_desc.regs_cinh;
	obj->swp_desc.qman_clk = obj->dpio_desc.qman_clk;
	obj->swp_desc.qman_version = obj->dpio_desc.qman_version;
	obj->swp = qbman_swp_init(&obj->swp_desc);

+1 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ int dpio_get_attributes(struct fsl_mc_io *mc_io,
	attr->qbman_portal_ci_offset =
		le64_to_cpu(dpio_rsp->qbman_portal_ci_addr);
	attr->qbman_version = le32_to_cpu(dpio_rsp->qbman_version);
	attr->clk = le32_to_cpu(dpio_rsp->clk);

	return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ int dpio_disable(struct fsl_mc_io *mc_io,
 * @num_priorities: Number of priorities for the notification channel (1-8);
 *			relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL'
 * @qbman_version: QBMAN version
 * @clk: QBMAN clock frequency value in Hz
 */
struct dpio_attr {
	int			id;
@@ -68,6 +69,7 @@ struct dpio_attr {
	enum dpio_channel_mode	channel_mode;
	u8			num_priorities;
	u32		qbman_version;
	u32		clk;
};

int dpio_get_attributes(struct fsl_mc_io	*mc_io,
Loading