Skip to content

Commit

Permalink
ARM: uniphier: use FIELD_GET() to get access to revision register fields
Browse files Browse the repository at this point in the history
Define register fields as macros, and use FIELD_GET().

Signed-off-by: Masahiro Yamada <[email protected]>
  • Loading branch information
masahir0y committed Aug 17, 2020
1 parent 26f0c86 commit 351b74c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
5 changes: 5 additions & 0 deletions arch/arm/mach-uniphier/sg-regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#ifndef UNIPHIER_SG_REGS_H
#define UNIPHIER_SG_REGS_H

#include <linux/bitops.h>

#ifndef __ASSEMBLY__
#include <linux/compiler.h>
#ifdef CONFIG_ARCH_UNIPHIER_V8_MULTI
Expand All @@ -24,6 +26,9 @@ extern void __iomem *sg_base;

/* Revision */
#define SG_REVISION 0x0000
#define SG_REVISION_TYPE_MASK GENMASK(23, 16)
#define SG_REVISION_MODEL_MASK GENMASK(10, 8)
#define SG_REVISION_REV_MASK GENMASK(4, 0)

/* Memory Configuration */
#define SG_MEMCONF 0x0400
Expand Down
21 changes: 10 additions & 11 deletions arch/arm/mach-uniphier/soc-info.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,30 @@
* Author: Masahiro Yamada <[email protected]>
*/

#include <linux/bitfield.h>
#include <linux/io.h>
#include <linux/types.h>

#include "sg-regs.h"
#include "soc-info.h"

static unsigned int __uniphier_get_revision_field(unsigned int mask,
unsigned int shift)
{
u32 revision = readl(sg_base + SG_REVISION);

return (revision >> shift) & mask;
}

unsigned int uniphier_get_soc_id(void)
{
return __uniphier_get_revision_field(0xff, 16);
u32 rev = readl(sg_base + SG_REVISION);

return FIELD_GET(SG_REVISION_TYPE_MASK, rev);
}

unsigned int uniphier_get_soc_model(void)
{
return __uniphier_get_revision_field(0x7, 8);
u32 rev = readl(sg_base + SG_REVISION);

return FIELD_GET(SG_REVISION_MODEL_MASK, rev);
}

unsigned int uniphier_get_soc_revision(void)
{
return __uniphier_get_revision_field(0x1f, 0);
u32 rev = readl(sg_base + SG_REVISION);

return FIELD_GET(SG_REVISION_REV_MASK, rev);
}

0 comments on commit 351b74c

Please sign in to comment.