1
0
Fork 0

firmware: tegra: Print version tag at full

Last two characters of the version tag that is 32 bytes long were
stripped out.

Signed-off-by: Timo Alho <talho@nvidia.com>
Acked-by: Sivaram Nair <sivaramn@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
hifive-unleashed-5.1
Timo Alho 2018-10-22 16:19:38 +03:00 committed by Thierry Reding
parent 43dc748580
commit 2b86c11b99
1 changed files with 10 additions and 6 deletions

View File

@ -28,6 +28,7 @@
#define MSG_ACK BIT(0) #define MSG_ACK BIT(0)
#define MSG_RING BIT(1) #define MSG_RING BIT(1)
#define TAG_SZ 32
static inline struct tegra_bpmp * static inline struct tegra_bpmp *
mbox_client_to_bpmp(struct mbox_client *client) mbox_client_to_bpmp(struct mbox_client *client)
@ -556,7 +557,10 @@ static int tegra_bpmp_get_firmware_tag(struct tegra_bpmp *bpmp, char *tag,
void *virt; void *virt;
int err; int err;
virt = dma_alloc_coherent(bpmp->dev, MSG_DATA_MIN_SZ, &phys, if (size != TAG_SZ)
return -EINVAL;
virt = dma_alloc_coherent(bpmp->dev, TAG_SZ, &phys,
GFP_KERNEL | GFP_DMA32); GFP_KERNEL | GFP_DMA32);
if (!virt) if (!virt)
return -ENOMEM; return -ENOMEM;
@ -574,9 +578,9 @@ static int tegra_bpmp_get_firmware_tag(struct tegra_bpmp *bpmp, char *tag,
local_irq_restore(flags); local_irq_restore(flags);
if (err == 0) if (err == 0)
strlcpy(tag, virt, size); memcpy(tag, virt, TAG_SZ);
dma_free_coherent(bpmp->dev, MSG_DATA_MIN_SZ, virt, phys); dma_free_coherent(bpmp->dev, TAG_SZ, virt, phys);
return err; return err;
} }
@ -689,7 +693,7 @@ static int tegra_bpmp_probe(struct platform_device *pdev)
{ {
struct tegra_bpmp *bpmp; struct tegra_bpmp *bpmp;
unsigned int i; unsigned int i;
char tag[32]; char tag[TAG_SZ];
size_t size; size_t size;
int err; int err;
@ -817,13 +821,13 @@ static int tegra_bpmp_probe(struct platform_device *pdev)
goto free_mrq; goto free_mrq;
} }
err = tegra_bpmp_get_firmware_tag(bpmp, tag, sizeof(tag) - 1); err = tegra_bpmp_get_firmware_tag(bpmp, tag, sizeof(tag));
if (err < 0) { if (err < 0) {
dev_err(&pdev->dev, "failed to get firmware tag: %d\n", err); dev_err(&pdev->dev, "failed to get firmware tag: %d\n", err);
goto free_mrq; goto free_mrq;
} }
dev_info(&pdev->dev, "firmware: %s\n", tag); dev_info(&pdev->dev, "firmware: %.*s\n", (int)sizeof(tag), tag);
platform_set_drvdata(pdev, bpmp); platform_set_drvdata(pdev, bpmp);