mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-17 20:51:39 +00:00
strider: Add DP501 support for cpu model
Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
83d95b67d3
commit
e9cb21d0e8
4 changed files with 59 additions and 26 deletions
|
@ -12,6 +12,16 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
|
|
||||||
|
#define DP501_I2C_ADDR 0x08
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_DP501_I2C
|
||||||
|
int dp501_i2c[] = CONFIG_SYS_DP501_I2C;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_DP501_BASE
|
||||||
|
int dp501_base[] = CONFIG_SYS_DP501_BASE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static void dp501_setbits(u8 addr, u8 reg, u8 mask)
|
static void dp501_setbits(u8 addr, u8 reg, u8 mask)
|
||||||
{
|
{
|
||||||
u8 val;
|
u8 val;
|
||||||
|
@ -125,3 +135,24 @@ void dp501_powerdown(u8 addr)
|
||||||
{
|
{
|
||||||
dp501_setbits(addr, 0x0a, 0x30); /* power down encoder, standby mode */
|
dp501_setbits(addr, 0x0a, 0x30); /* power down encoder, standby mode */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int dp501_probe(unsigned screen, bool power)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_SYS_DP501_BASE
|
||||||
|
uint8_t dp501_addr = dp501_base[screen];
|
||||||
|
#else
|
||||||
|
uint8_t dp501_addr = DP501_I2C_ADDR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_DP501_I2C
|
||||||
|
i2c_set_bus_num(dp501_i2c[screen]);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (i2c_probe(dp501_addr))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
dp501_powerup(dp501_addr);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -26,5 +26,6 @@
|
||||||
|
|
||||||
void dp501_powerup(u8 addr);
|
void dp501_powerup(u8 addr);
|
||||||
void dp501_powerdown(u8 addr);
|
void dp501_powerdown(u8 addr);
|
||||||
|
int dp501_probe(unsigned screen, bool power);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
#define SIL1178_MASTER_I2C_ADDRESS 0x38
|
#define SIL1178_MASTER_I2C_ADDRESS 0x38
|
||||||
#define SIL1178_SLAVE_I2C_ADDRESS 0x39
|
#define SIL1178_SLAVE_I2C_ADDRESS 0x39
|
||||||
|
|
||||||
#define DP501_I2C_ADDR 0x08
|
|
||||||
|
|
||||||
#define PIXCLK_640_480_60 25180000
|
#define PIXCLK_640_480_60 25180000
|
||||||
#define MAX_X_CHARS 53
|
#define MAX_X_CHARS 53
|
||||||
#define MAX_Y_CHARS 26
|
#define MAX_Y_CHARS 26
|
||||||
|
@ -78,14 +76,6 @@ int ics8n3qv01_i2c[] = CONFIG_SYS_ICS8N3QV01_I2C;
|
||||||
int sil1178_i2c[] = CONFIG_SYS_SIL1178_I2C;
|
int sil1178_i2c[] = CONFIG_SYS_SIL1178_I2C;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DP501_I2C
|
|
||||||
int dp501_i2c[] = CONFIG_SYS_DP501_I2C;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DP501_BASE
|
|
||||||
int dp501_base[] = CONFIG_SYS_DP501_BASE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_MPC92469AC
|
#ifdef CONFIG_SYS_MPC92469AC
|
||||||
static void mpc92469ac_calc_parameters(unsigned int fout,
|
static void mpc92469ac_calc_parameters(unsigned int fout,
|
||||||
unsigned int *post_div, unsigned int *feedback_div)
|
unsigned int *post_div, unsigned int *feedback_div)
|
||||||
|
@ -317,13 +307,6 @@ int osd_probe(unsigned screen)
|
||||||
int old_bus = i2c_get_bus_num();
|
int old_bus = i2c_get_bus_num();
|
||||||
bool pixclock_present = false;
|
bool pixclock_present = false;
|
||||||
bool output_driver_present = false;
|
bool output_driver_present = false;
|
||||||
#ifdef CONFIG_SYS_DP501_I2C
|
|
||||||
#ifdef CONFIG_SYS_DP501_BASE
|
|
||||||
uint8_t dp501_addr = dp501_base[screen];
|
|
||||||
#else
|
|
||||||
uint8_t dp501_addr = DP501_I2C_ADDR;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OSD_GET_REG(0, version, &version);
|
OSD_GET_REG(0, version, &version);
|
||||||
OSD_GET_REG(0, features, &features);
|
OSD_GET_REG(0, features, &features);
|
||||||
|
@ -393,11 +376,8 @@ int osd_probe(unsigned screen)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DP501_I2C
|
#ifdef CONFIG_SYS_DP501_I2C
|
||||||
i2c_set_bus_num(dp501_i2c[screen]);
|
if (!dp501_probe(screen, true))
|
||||||
if (!i2c_probe(dp501_addr)) {
|
|
||||||
dp501_powerup(dp501_addr);
|
|
||||||
output_driver_present = true;
|
output_driver_present = true;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!output_driver_present)
|
if (!output_driver_present)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include "../common/adv7611.h"
|
#include "../common/adv7611.h"
|
||||||
#include "../common/ch7301.h"
|
#include "../common/ch7301.h"
|
||||||
|
#include "../common/dp501.h"
|
||||||
#include "../common/ioep-fpga.h"
|
#include "../common/ioep-fpga.h"
|
||||||
#include "../common/mclink.h"
|
#include "../common/mclink.h"
|
||||||
#include "../common/osd.h"
|
#include "../common/osd.h"
|
||||||
|
@ -127,7 +128,10 @@ int last_stage_init(void)
|
||||||
int slaves;
|
int slaves;
|
||||||
unsigned int k;
|
unsigned int k;
|
||||||
unsigned int mux_ch;
|
unsigned int mux_ch;
|
||||||
unsigned char mclink_controllers[] = { 0x3c, 0x3d, 0x3e };
|
unsigned char mclink_controllers_dvi[] = { 0x3c, 0x3d, 0x3e };
|
||||||
|
#ifdef CONFIG_STRIDER_CPU
|
||||||
|
unsigned char mclink_controllers_dp[] = { 0x24, 0x25, 0x26 };
|
||||||
|
#endif
|
||||||
bool hw_type_cat = pca9698_get_value(0x20, 18);
|
bool hw_type_cat = pca9698_get_value(0x20, 18);
|
||||||
bool ch0_sgmii2_present = false;
|
bool ch0_sgmii2_present = false;
|
||||||
|
|
||||||
|
@ -135,17 +139,25 @@ int last_stage_init(void)
|
||||||
pca9698_direction_output(0x20, 8, 0);
|
pca9698_direction_output(0x20, 8, 0);
|
||||||
|
|
||||||
/* Turn on Parade DP501 */
|
/* Turn on Parade DP501 */
|
||||||
pca9698_direction_output(0x20, 9, 1);
|
pca9698_direction_output(0x20, 10, 1);
|
||||||
|
|
||||||
ch0_sgmii2_present = !pca9698_get_value(0x20, 37);
|
ch0_sgmii2_present = !pca9698_get_value(0x20, 37);
|
||||||
|
|
||||||
/* wait for FPGA done, then reset FPGA */
|
/* wait for FPGA done, then reset FPGA */
|
||||||
for (k = 0; k < ARRAY_SIZE(mclink_controllers); ++k) {
|
for (k = 0; k < ARRAY_SIZE(mclink_controllers_dvi); ++k) {
|
||||||
unsigned int ctr = 0;
|
unsigned int ctr = 0;
|
||||||
|
unsigned char *mclink_controllers = mclink_controllers_dvi;
|
||||||
|
|
||||||
|
#ifdef CONFIG_STRIDER_CPU
|
||||||
|
if (i2c_probe(mclink_controllers[k])) {
|
||||||
|
mclink_controllers = mclink_controllers_dp;
|
||||||
|
if (i2c_probe(mclink_controllers[k]))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (i2c_probe(mclink_controllers[k]))
|
if (i2c_probe(mclink_controllers[k]))
|
||||||
continue;
|
continue;
|
||||||
|
#endif
|
||||||
while (!(pca953x_get_val(mclink_controllers[k])
|
while (!(pca953x_get_val(mclink_controllers[k])
|
||||||
& MCFPGA_DONE)) {
|
& MCFPGA_DONE)) {
|
||||||
udelay(100000);
|
udelay(100000);
|
||||||
|
@ -192,6 +204,7 @@ int last_stage_init(void)
|
||||||
|
|
||||||
#ifdef CONFIG_STRIDER_CPU
|
#ifdef CONFIG_STRIDER_CPU
|
||||||
ch7301_probe(0, false);
|
ch7301_probe(0, false);
|
||||||
|
dp501_probe(0, false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (slaves <= 0)
|
if (slaves <= 0)
|
||||||
|
@ -199,6 +212,14 @@ int last_stage_init(void)
|
||||||
|
|
||||||
mclink_fpgacount = slaves;
|
mclink_fpgacount = slaves;
|
||||||
|
|
||||||
|
#ifdef CONFIG_STRIDER_CPU
|
||||||
|
/* get ADV7611 out of reset, power up DP501, give some time to wakeup */
|
||||||
|
for (k = 1; k <= slaves; ++k)
|
||||||
|
FPGA_SET_REG(k, extended_control, 0x10); /* enable video */
|
||||||
|
|
||||||
|
udelay(500000);
|
||||||
|
#endif
|
||||||
|
|
||||||
for (k = 1; k <= slaves; ++k) {
|
for (k = 1; k <= slaves; ++k) {
|
||||||
ioep_fpga_print_info(k);
|
ioep_fpga_print_info(k);
|
||||||
#ifdef CONFIG_STRIDER_CON
|
#ifdef CONFIG_STRIDER_CON
|
||||||
|
@ -206,10 +227,10 @@ int last_stage_init(void)
|
||||||
osd_probe(k);
|
osd_probe(k);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_STRIDER_CPU
|
#ifdef CONFIG_STRIDER_CPU
|
||||||
FPGA_SET_REG(k, extended_control, 0); /* enable video in*/
|
|
||||||
if (!adv7611_probe(k))
|
if (!adv7611_probe(k))
|
||||||
printf(" Advantiv ADV7611 HDMI Receiver\n");
|
printf(" Advantiv ADV7611 HDMI Receiver\n");
|
||||||
ch7301_probe(k, false);
|
ch7301_probe(k, false);
|
||||||
|
dp501_probe(k, false);
|
||||||
#endif
|
#endif
|
||||||
if (hw_type_cat) {
|
if (hw_type_cat) {
|
||||||
miiphy_register(bb_miiphy_buses[k].name,
|
miiphy_register(bb_miiphy_buses[k].name,
|
||||||
|
|
Loading…
Add table
Reference in a new issue