Skip to content

Commit

Permalink
nfp: read chip model from the PluDevice register
Browse files Browse the repository at this point in the history
The PluDevice register provides the authoritative chip model/revision.

Since the model number is purely used for reporting purposes, follow
the hardware team convention of subtracting 0x10 from the PluDevice
register to obtain the chip model/revision number.

Suggested-by: Francois H. Theron <francois.theron@netronome.com>
Signed-off-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Dirk van der Merwe authored and David S. Miller committed Sep 11, 2019
1 parent 051ba67 commit 421bceb
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions drivers/net/ethernet/netronome/nfp/nfpcore/nfp_cpplib.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@
/* NFP6000 PL */
#define NFP_PL_DEVICE_ID 0x00000004
#define NFP_PL_DEVICE_ID_MASK GENMASK(7, 0)

#define NFP6000_ARM_GCSR_SOFTMODEL0 0x00400144
#define NFP_PL_DEVICE_PART_MASK GENMASK(31, 16)
#define NFP_PL_DEVICE_MODEL_MASK (NFP_PL_DEVICE_PART_MASK | \
NFP_PL_DEVICE_ID_MASK)

/**
* nfp_cpp_readl() - Read a u32 word from a CPP location
Expand Down Expand Up @@ -120,22 +121,17 @@ int nfp_cpp_writeq(struct nfp_cpp *cpp, u32 cpp_id,
*/
int nfp_cpp_model_autodetect(struct nfp_cpp *cpp, u32 *model)
{
const u32 arm_id = NFP_CPP_ID(NFP_CPP_TARGET_ARM, 0, 0);
u32 reg;
int err;

err = nfp_cpp_readl(cpp, arm_id, NFP6000_ARM_GCSR_SOFTMODEL0, model);
if (err < 0)
return err;

/* The PL's PluDeviceID revision code is authoratative */
*model &= ~0xff;
err = nfp_xpb_readl(cpp, NFP_XPB_DEVICE(1, 1, 16) + NFP_PL_DEVICE_ID,
&reg);
if (err < 0)
return err;

*model |= (NFP_PL_DEVICE_ID_MASK & reg) - 0x10;
*model = reg & NFP_PL_DEVICE_MODEL_MASK;
if (*model & NFP_PL_DEVICE_ID_MASK)
*model -= 0x10;

return 0;
}
Expand Down

0 comments on commit 421bceb

Please sign in to comment.