Esempio n. 1
0
static int i2c_init(unsigned bus)
{
	unsigned gsbi_id = bus;
	qup_config_t *qup_config;

	switch (gsbi_id) {
	case GSBI_ID_1:
		qup_config = &gsbi1_qup_config;
		break;
	case GSBI_ID_4:
		qup_config = &gsbi4_qup_config;
		break;
	case GSBI_ID_7:
		qup_config = &gsbi7_qup_config;
		break;
	default:
		printk(BIOS_ERR, "QUP configuration not defind for GSBI%d.\n",
		       gsbi_id);
		return 1;
	}

	if (qup_config->initialized)
		return 0;

	if (gsbi_init(gsbi_id, GSBI_PROTO_I2C_ONLY)) {
		printk(BIOS_ERR, "failed to initialize gsbi\n");
		return 1;
	}

	if (qup_init(gsbi_id, qup_config)) {
		printk(BIOS_ERR, "failed to initialize qup\n");
		return 1;
	}

	if (qup_reset_i2c_master_status(gsbi_id)) {
		printk(BIOS_ERR, "failed to reset i2c master status\n");
		return 1;
	}

	qup_config->initialized = 1;
	return 0;
}
Esempio n. 2
0
static int i2c_init(unsigned gsbi_id)
{
	gsbi_return_t gsbi_ret = 0;
	qup_return_t qup_ret = 0;
	qup_config_t *qup_config;

	switch (gsbi_id) {
	case 1:
		qup_config = &gsbi1_qup_config;
		break;
	case 4:
		qup_config = &gsbi4_qup_config;
		break;
	case 7:
		qup_config = &gsbi7_qup_config;
		break;
	default:
		printf("QUP configuration not defined for GSBI%d\n", gsbi_id);
		return 1;
	}

	gsbi_ret = gsbi_init(gsbi_id, GSBI_PROTO_I2C_ONLY);
	if (GSBI_SUCCESS != gsbi_ret) {
		printf("%s: gsbi_init failed\n", __func__);
		return 1;
	}

	qup_ret = qup_init(gsbi_id, qup_config);
	if (QUP_SUCCESS != qup_ret) {
		printf("%s: qup_init failed\n", __func__);
		return 1;
	}


	qup_ret = qup_reset_i2c_master_status(gsbi_id);
	if (QUP_SUCCESS != qup_ret) {
		printf("%s: qup_reset failed\n", __func__);
		return 1;
	}

	return 0;
}