Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a0a670f authored by Rajesh Bharathwaj's avatar Rajesh Bharathwaj
Browse files

tusb1064: handlle cc1/cc2 direction



Added code to program TUSB1064 chip to handle CC1/CC2 cable insertions.

Change-Id: I19e15e88a75811b67ca69cfb27577bdf15bda9d6
Signed-off-by: default avatarRajesh Bharathwaj <rajeshbharathwaj@codeaurora.org>
parent 60ae8e45
Loading
Loading
Loading
Loading
+11 −21
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/kernel.h>
#include <linux/gpio.h>
#include <linux/delay.h>
#include "tusb1064.h"

struct tusb1064 {
	struct device *dev;
@@ -80,21 +81,23 @@ static int tusb1064_write(struct i2c_client *client, u8 reg, u8 val)
	return 0;
}

void tusb1064_flip(bool flip)
void tusb1064_usb_event(bool flip)
{
	if (pdata) {
		if (flip) {
			pr_debug("%s flipping the switch\n", __func__);
			/*AUXn->SBU2, AUXp->SBU1*/
			tusb1064_write(pdata->i2c_client, 0x13, 0x2F);
			if (standalone_mode)
				tusb1064_write(pdata->i2c_client, 0x0A, 0x05);
			else
				tusb1064_write(pdata->i2c_client, 0x0A, 0x06);
		} else {
			pr_debug("%s not flipping the switch\n", __func__);
			/*AUXn->SBU2, AUXp->SBU1*/
			tusb1064_write(pdata->i2c_client, 0x13, 0x1F);
			if (standalone_mode)
				tusb1064_write(pdata->i2c_client, 0x0A, 0x01);
			else
				tusb1064_write(pdata->i2c_client, 0x0A, 0x02);
		}
	}
}
EXPORT_SYMBOL(tusb1064_flip);
EXPORT_SYMBOL(tusb1064_usb_event);

static int tusb1064_probe(struct i2c_client *client,
	const struct i2c_device_id *id)
@@ -140,19 +143,6 @@ static int tusb1064_probe(struct i2c_client *client,
			goto fail;

		pr_debug("%s setting SBU1 to AUXN, SBU2 to AUXP\n", __func__);
		/*AUXn->SBU2, AUXp->SBU1 */
		if (tusb1064_write(pdata->i2c_client, 0x13, 0x1F) < 0)
			goto fail;
		//tusb1064_write(pdata, 0x13, 0x01);//AUXn->SBU1, AUXp->SBU2

		/*Enable 4-lane DP */
		if (tusb1064_write(pdata->i2c_client, 0x10, 0x55) < 0)
			goto fail;
		/*Enable 4-lane DP */
		if (tusb1064_write(pdata->i2c_client, 0x11, 0x55) < 0)
			goto fail;
		//pr_err("setting SBU1 to AUXp and SBU2 to AUXN\n");
		//tusb1064_write(pdata, 0x13, 0x8F);//Enable 4-lane DP
	}
	tusb1064_read(pdata->i2c_client, 0x0A, buf, 2);
	tusb1064_read(pdata->i2c_client, 0x13, buf, 2);
+18 −0
Original line number Diff line number Diff line
/* Copyright (c) 2020 The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __TUSB1064_H_
#define __TUSB1064_H_

void tusb1064_usb_event(bool flip);

#endif /* __TUSB1064_H_ */