Commit b0ca789a authored by Jonathan Lemon's avatar Jonathan Lemon Committed by David S. Miller
Browse files

ptp: ocp: Update devlink firmware display path.



Cache the firmware version when the card is initialized,
and use this field to populate the devlink firmware information.

The cached firmware version will be used for feature gating in
upcoming patches.

Signed-off-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0cfcdd1e
Loading
Loading
Loading
Loading
+17 −26
Original line number Diff line number Diff line
@@ -244,6 +244,7 @@ struct ptp_ocp {
	int			gnss2_port;
	int			mac_port;	/* miniature atomic clock */
	int			nmea_port;
	u32			fw_version;
	u8			board_id[OCP_BOARD_ID_LEN];
	u8			serial[OCP_SERIAL_LEN];
	bool			has_eeprom_data;
@@ -1139,23 +1140,15 @@ ptp_ocp_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,
	if (err)
		return err;

	if (bp->image) {
		u32 ver = ioread32(&bp->image->version);

		if (ver & 0xffff) {
			sprintf(buf, "%d", ver);
			err = devlink_info_version_running_put(req,
							       "fw",
							       buf);
	if (bp->fw_version & 0xffff) {
		sprintf(buf, "%d", bp->fw_version);
		err = devlink_info_version_running_put(req, "fw", buf);
	} else {
			sprintf(buf, "%d", ver >> 16);
			err = devlink_info_version_running_put(req,
							       "loader",
							       buf);
		sprintf(buf, "%d", bp->fw_version >> 16);
		err = devlink_info_version_running_put(req, "loader", buf);
	}
	if (err)
		return err;
	}

	if (!bp->has_eeprom_data) {
		ptp_ocp_read_eeprom(bp);
@@ -1468,6 +1461,7 @@ ptp_ocp_fb_board_init(struct ptp_ocp *bp, struct ocp_resource *r)
{
	bp->flash_start = 1024 * 4096;
	bp->eeprom_map = fb_eeprom_map;
	bp->fw_version = ioread32(&bp->image->version);

	ptp_ocp_tod_init(bp);
	ptp_ocp_nmea_out_init(bp);
@@ -2576,17 +2570,14 @@ ptp_ocp_info(struct ptp_ocp *bp)

	ptp_ocp_phc_info(bp);

	if (bp->image) {
		u32 ver = ioread32(&bp->image->version);

		dev_info(dev, "version %x\n", ver);
		if (ver & 0xffff)
	dev_info(dev, "version %x\n", bp->fw_version);
	if (bp->fw_version & 0xffff)
		dev_info(dev, "regular image, version %d\n",
				 ver & 0xffff);
			 bp->fw_version & 0xffff);
	else
		dev_info(dev, "golden image, version %d\n",
				 ver >> 16);
	}
			 bp->fw_version >> 16);

	ptp_ocp_serial_info(dev, "GNSS", bp->gnss_port, 115200);
	ptp_ocp_serial_info(dev, "GNSS2", bp->gnss2_port, 115200);
	ptp_ocp_serial_info(dev, "MAC", bp->mac_port, 57600);