@ -22,6 +22,8 @@
/* field separator */
# define FS " "
# define ptr_to_uint(p) ((unsigned int)(unsigned long)(p))
struct phy_param {
resource_size_t base ;
unsigned int nr_dx ;
@ -47,6 +49,11 @@ static const struct phy_param uniphier_sld8_phy_param[] = {
{ /* sentinel */ }
} ;
static const struct phy_param uniphier_ld11_phy_param [ ] = {
{ . base = 0x5bc01000 , . nr_dx = 4 , } ,
{ /* sentinel */ }
} ;
static void print_bdl ( void __iomem * reg , int n )
{
u32 val = readl ( reg ) ;
@ -174,15 +181,17 @@ static void mdl_dump(const struct phy_param *phy_param)
# define REG_DUMP(x) \
{ int ofst = PHY_ # # x ; void __iomem * reg = phy_base + ofst ; \
printf ( " %3d: %-10s: %p : %08x \n " , \
ofst > > PHY_REG_SHIFT , # x , reg , readl ( reg ) ) ; }
printf ( " %3d: %-10s: %08x : %08x \n " , \
ofst > > PHY_REG_SHIFT , # x , \
ptr_to_uint ( reg ) , readl ( reg ) ) ; }
# define DX_REG_DUMP(dx, x) \
{ int ofst = PHY_DX_BASE + PHY_DX_STRIDE * ( dx ) + \
PHY_DX_ # # x ; \
void __iomem * reg = phy_base + ofst ; \
printf ( " %3d: DX%d%-7s: %p : %08x \n " , \
ofst > > PHY_REG_SHIFT , ( dx ) , # x , reg , readl ( reg ) ) ; }
printf ( " %3d: DX%d%-7s: %08x : %08x \n " , \
ofst > > PHY_REG_SHIFT , ( dx ) , # x , \
ptr_to_uint ( reg ) , readl ( reg ) ) ; }
static void reg_dump ( const struct phy_param * phy_param )
{
@ -194,7 +203,7 @@ static void reg_dump(const struct phy_param *phy_param)
for ( p = 0 ; phy_param - > base ; phy_param + + , p + + ) {
phy_base = ioremap ( phy_param - > base , SZ_4K ) ;
printf ( " == PHY%d (base: %p ) == \n " , p , phy_base ) ;
printf ( " == PHY%d (base: %08x ) == \n " , p , ptr_to_uint ( p hy_base ) ) ;
printf ( " No: Name : Address : Data \n " ) ;
REG_DUMP ( RIDR ) ;
@ -246,6 +255,9 @@ static int do_ddr(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
case SOC_UNIPHIER_SLD8 :
phy_param = uniphier_sld8_phy_param ;
break ;
case SOC_UNIPHIER_LD11 :
phy_param = uniphier_ld11_phy_param ;
break ;
default :
printf ( " unsupported SoC \n " ) ;
return CMD_RET_FAILURE ;