On Fri, Feb 24, 2017 at 9:23 AM, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote: > From: "Y.C. Chen" <yc_chen@xxxxxxxxxxxxxx> > > This is used when the BMC isn't running any code and thus has > to be initialized by the host. > > The code originates from Aspeed (Y.C. Chen) and has been cleaned > up for coding style purposes by BenH. > > Signed-off-by: Y.C. Chen <yc_chen@xxxxxxxxxxxxxx> > Signed-off-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Acked-by: Joel Stanley <joel@xxxxxxxxx> > -- > > v2. - Fix bug in ddr_test_2500 reported by Emil Velikov > - Rebase on updated mmc_test factoring patch > - Fix missing else statement in 2500 POST code > --- > drivers/gpu/drm/ast/ast_dram_tables.h | 62 +++++ > drivers/gpu/drm/ast/ast_post.c | 417 +++++++++++++++++++++++++++++++++- > 2 files changed, 476 insertions(+), 3 deletions(-) > > +void ast_post_chip_2500(struct drm_device *dev) > +{ > + struct ast_private *ast = dev->dev_private; > + u32 temp; > + u8 reg; > + > + reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff); > + if ((reg & 0x80) == 0) {/* vga only */ > + /* Clear bus lock condition */ > + ast_moutdwm(ast, 0x1e600000, 0xAEED1A03); > + ast_moutdwm(ast, 0x1e600084, 0x00010000); > + ast_moutdwm(ast, 0x1e600088, 0x00000000); > + ast_moutdwm(ast, 0x1e6e2000, 0x1688A8A8); > + ast_write32(ast, 0xf004, 0x1e6e0000); > + ast_write32(ast, 0xf000, 0x1); > + ast_write32(ast, 0x12000, 0x1688a8a8); > + while (ast_read32(ast, 0x12000) != 0x1) > + ; > + > + ast_write32(ast, 0x10000, 0xfc600309); > + while (ast_read32(ast, 0x10000) != 0x1) > + ; > + > + /* Slow down CPU/AHB CLK in VGA only mode */ > + temp = ast_read32(ast, 0x12008); > + temp |= 0x73; > + ast_write32(ast, 0x12008, temp); > + > + /* Reset USB port to patch USB unknown device issue */ Really?! > + ast_moutdwm(ast, 0x1e6e2090, 0x20000000); > + temp = ast_mindwm(ast, 0x1e6e2094); > + temp |= 0x00004000; > + ast_moutdwm(ast, 0x1e6e2094, temp); > + temp = ast_mindwm(ast, 0x1e6e2070); > + if (temp & 0x00800000) { > + ast_moutdwm(ast, 0x1e6e207c, 0x00800000); > + mdelay(100); > + ast_moutdwm(ast, 0x1e6e2070, 0x00800000); > + } > + > + if (!ast_dram_init_2500(ast)) > + DRM_ERROR("DRAM init failed !\n"); > + > + temp = ast_mindwm(ast, 0x1e6e2040); > + ast_moutdwm(ast, 0x1e6e2040, temp | 0x40); > + } > + > + /* wait ready */ > + do { > + reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff); > + } while ((reg & 0x40) == 0); > +} > -- > 2.9.3 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel