mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
board/freescale/common:Add support of QTAG register
QIXIS FPGA's QIXIS Tag Access register (QTAG) defines TAG, VER, DATE, IMAGE fields. These fields have FPGA build version, image name and build date information. Add support to parse these fields to have complete FPGA image information. Signed-off-by: York Sun <yorksun@freescale.com> Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
e1dbdd8152
commit
2ae4e8d958
2 changed files with 49 additions and 0 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/time.h>
|
||||
#include "qixis.h"
|
||||
|
||||
u8 qixis_read(unsigned int reg)
|
||||
|
@ -30,6 +31,51 @@ void qixis_write(unsigned int reg, u8 value)
|
|||
out_8(p + reg, value);
|
||||
}
|
||||
|
||||
u16 qixis_read_minor(void)
|
||||
{
|
||||
u16 minor;
|
||||
|
||||
/* this data is in little endian */
|
||||
QIXIS_WRITE(tagdata, 5);
|
||||
minor = QIXIS_READ(tagdata);
|
||||
QIXIS_WRITE(tagdata, 6);
|
||||
minor += QIXIS_READ(tagdata) << 8;
|
||||
|
||||
return minor;
|
||||
}
|
||||
|
||||
char *qixis_read_time(char *result)
|
||||
{
|
||||
time_t time = 0;
|
||||
int i;
|
||||
|
||||
/* timestamp is in 32-bit big endian */
|
||||
for (i = 8; i <= 11; i++) {
|
||||
QIXIS_WRITE(tagdata, i);
|
||||
time = (time << 8) + QIXIS_READ(tagdata);
|
||||
}
|
||||
|
||||
return ctime_r(&time, result);
|
||||
}
|
||||
|
||||
char *qixis_read_tag(char *buf)
|
||||
{
|
||||
int i;
|
||||
char tag, *ptr = buf;
|
||||
|
||||
for (i = 16; i <= 63; i++) {
|
||||
QIXIS_WRITE(tagdata, i);
|
||||
tag = QIXIS_READ(tagdata);
|
||||
*(ptr++) = tag;
|
||||
if (!tag)
|
||||
break;
|
||||
}
|
||||
if (i > 63)
|
||||
*ptr = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
void qixis_reset(void)
|
||||
{
|
||||
QIXIS_WRITE(rst_ctl, QIXIS_RST_CTL_RESET);
|
||||
|
|
|
@ -88,6 +88,9 @@ struct qixis {
|
|||
|
||||
u8 qixis_read(unsigned int reg);
|
||||
void qixis_write(unsigned int reg, u8 value);
|
||||
u16 qixis_read_minor(void);
|
||||
char *qixis_read_time(char *result);
|
||||
char *qixis_read_tag(char *buf);
|
||||
|
||||
#define QIXIS_READ(reg) qixis_read(offsetof(struct qixis, reg))
|
||||
#define QIXIS_WRITE(reg, value) qixis_write(offsetof(struct qixis, reg), value)
|
||||
|
|
Loading…
Reference in a new issue