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

Commit d9d5f0b0 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 1c85b97c on remote branch

Change-Id: Idf3dddc4f8b4d08b2f2e78942806d488851972c2
parents 92108127 1c85b97c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -285,6 +285,7 @@ CONFIG_UID_SYS_STATS=y
CONFIG_OKL4_USER_VIRQ=y
CONFIG_WIGIG_SENSING_SPI=m
CONFIG_QTI_XR_SMRTVWR_MISC=y
CONFIG_QTI_MAXIM_FAN_CONTROLLER=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
+1 −0
Original line number Diff line number Diff line
@@ -297,6 +297,7 @@ CONFIG_UID_SYS_STATS=y
CONFIG_OKL4_USER_VIRQ=y
CONFIG_WIGIG_SENSING_SPI=m
CONFIG_QTI_XR_SMRTVWR_MISC=y
CONFIG_QTI_MAXIM_FAN_CONTROLLER=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
+44 −13
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@

#if defined CONFIG_BT_SLIM_QCA6390 || defined CONFIG_BTFM_SLIM_WCN3990
#include "btfm_slim.h"
#include "btfm_slim_slave.h"
#endif
#include <linux/fs.h>

@@ -40,6 +41,7 @@ static const struct of_device_id bt_power_match_table[] = {
	{	.compatible = "qca,qca6174" },
	{	.compatible = "qca,wcn3990" },
	{	.compatible = "qca,qca6390" },
	{	.compatible = "qca,wcn6750" },
	{}
};

@@ -270,10 +272,14 @@ static int bt_configure_gpios(int on)
			return rc;
		}
		msleep(50);
		BT_PWR_ERR("BTON:Turn Bt Off bt-reset-gpio(%d) value(%d)\n",
		BT_PWR_INFO("BTON:Turn Bt Off bt-reset-gpio(%d) value(%d)\n",
				bt_reset_gpio, gpio_get_value(bt_reset_gpio));
		BT_PWR_ERR("BTON:Turn Bt Off bt-sw-ctrl-gpio(%d) value(%d)\n",
			bt_sw_ctrl_gpio,  gpio_get_value(bt_sw_ctrl_gpio));
		if (bt_sw_ctrl_gpio >= 0) {
			BT_PWR_INFO("BTON:Turn Bt Off");
			BT_PWR_INFO("bt-sw-ctrl-gpio(%d) value(%d)",
					bt_sw_ctrl_gpio,
					gpio_get_value(bt_sw_ctrl_gpio));
		}

		rc = gpio_direction_output(bt_reset_gpio, 1);
		if (rc) {
@@ -304,22 +310,30 @@ static int bt_configure_gpios(int on)
					BT_PWR_ERR("Prob: Set Debug-Gpio\n");
			}
		}
		BT_PWR_ERR("BTON:Turn Bt On bt-reset-gpio(%d) value(%d)\n",
		BT_PWR_INFO("BTON:Turn Bt On bt-reset-gpio(%d) value(%d)\n",
				bt_reset_gpio, gpio_get_value(bt_reset_gpio));
		BT_PWR_ERR("BTON:Turn Bt On bt-sw-ctrl-gpio(%d) value(%d)\n",
			bt_sw_ctrl_gpio,  gpio_get_value(bt_sw_ctrl_gpio));
		if (bt_sw_ctrl_gpio >= 0) {
			BT_PWR_INFO("BTON:Turn Bt On");
			BT_PWR_INFO("bt-sw-ctrl-gpio(%d) value(%d)",
					bt_sw_ctrl_gpio,
					gpio_get_value(bt_sw_ctrl_gpio));
		}
	} else {
		gpio_set_value(bt_reset_gpio, 0);
		if  (bt_debug_gpio  >=  0)
			gpio_set_value(bt_debug_gpio,  0);
		msleep(100);
		BT_PWR_ERR("BT-OFF:bt-reset-gpio(%d) value(%d)\n",
		BT_PWR_INFO("BT-OFF:bt-reset-gpio(%d) value(%d)\n",
				bt_reset_gpio, gpio_get_value(bt_reset_gpio));
		BT_PWR_ERR("BT-OFF:bt-sw-ctrl-gpio(%d) value(%d)\n",
			bt_sw_ctrl_gpio,  gpio_get_value(bt_sw_ctrl_gpio));

		if (bt_sw_ctrl_gpio >= 0) {
			BT_PWR_INFO("BT-OFF:bt-sw-ctrl-gpio(%d) value(%d)",
					bt_sw_ctrl_gpio,
					gpio_get_value(bt_sw_ctrl_gpio));
		}
	}

	BT_PWR_ERR("bt_gpio= %d on: %d is successful", bt_reset_gpio, on);
	BT_PWR_INFO("bt_gpio= %d on: %d is successful", bt_reset_gpio, on);
	return rc;
}

@@ -846,6 +860,18 @@ int get_chipset_version(void)
	return soc_id;
}

int bt_disable_asd(void)
{
	int rc = 0;
	if (bt_power_pdata->bt_vdd_asd) {
		BT_PWR_INFO("Disabling ASD regulator");
		rc = bt_vreg_disable(bt_power_pdata->bt_vdd_asd);
	} else {
		BT_PWR_INFO("ASD regulator is not configured");
	}
	return rc;
}

static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	int ret = 0, pwr_cntrl = 0;
@@ -882,6 +908,11 @@ static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
		BT_PWR_ERR("BT_CMD_CHIP_VERS soc_version:%x", chipset_version);
		if (chipset_version) {
			soc_id = chipset_version;
			if (soc_id == QCA_HSP_SOC_ID_0100 ||
				soc_id == QCA_HSP_SOC_ID_0110 ||
				soc_id == QCA_HSP_SOC_ID_0200) {
				ret = bt_disable_asd();
			}
		} else {
			BT_PWR_ERR("got invalid soc version");
			soc_id = 0;
+58 −0
Original line number Diff line number Diff line
@@ -371,6 +371,9 @@ static int btfm_slim_alloc_port(struct btfmslim *btfmslim)
int btfm_slim_hw_init(struct btfmslim *btfmslim)
{
	int ret;
	int chipset_ver;
	struct slim_device *slim = btfmslim->slim_pgd;
	struct slim_device *slim_ifd = &btfmslim->slim_ifd;

	BTFMSLIM_DBG("");
	if (!btfmslim)
@@ -381,6 +384,61 @@ int btfm_slim_hw_init(struct btfmslim *btfmslim)
		return 0;
	}
	mutex_lock(&btfmslim->io_lock);
		BTFMSLIM_INFO(
			"PGD Enum Addr: %.02x:%.02x:%.02x:%.02x:%.02x: %.02x",
			slim->e_addr[0], slim->e_addr[1], slim->e_addr[2],
			slim->e_addr[3], slim->e_addr[4], slim->e_addr[5]);
		BTFMSLIM_INFO(
			"IFD Enum Addr: %.02x:%.02x:%.02x:%.02x:%.02x: %.02x",
			slim_ifd->e_addr[0], slim_ifd->e_addr[1],
			slim_ifd->e_addr[2], slim_ifd->e_addr[3],
			slim_ifd->e_addr[4], slim_ifd->e_addr[5]);

	chipset_ver = get_chipset_version();
	BTFMSLIM_INFO("chipset soc version:%x", chipset_ver);

	if (chipset_ver == QCA_HSP_SOC_ID_0100 ||
		chipset_ver == QCA_HSP_SOC_ID_0110 ||
		chipset_ver == QCA_HSP_SOC_ID_0200) {
		BTFMSLIM_INFO("chipset is hastings prime, overwriting EA");
		slim->e_addr[0] = 0x00;
		slim->e_addr[1] = 0x01;
		slim->e_addr[2] = 0x21;
		slim->e_addr[3] = 0x02;
		slim->e_addr[4] = 0x17;
		slim->e_addr[5] = 0x02;

		slim_ifd->e_addr[0] = 0x00;
		slim_ifd->e_addr[1] = 0x00;
		slim_ifd->e_addr[2] = 0x21;
		slim_ifd->e_addr[3] = 0x02;
		slim_ifd->e_addr[4] = 0x17;
		slim_ifd->e_addr[5] = 0x02;
	} else if (chipset_ver == QCA_HASTINGS_SOC_ID_0200) {
		BTFMSLIM_INFO("chipset is hastings 2.0, overwriting EA");
		slim->e_addr[0] = 0x00;
		slim->e_addr[1] = 0x01;
		slim->e_addr[2] = 0x20;
		slim->e_addr[3] = 0x02;
		slim->e_addr[4] = 0x17;
		slim->e_addr[5] = 0x02;

		slim_ifd->e_addr[0] = 0x00;
		slim_ifd->e_addr[1] = 0x00;
		slim_ifd->e_addr[2] = 0x20;
		slim_ifd->e_addr[3] = 0x02;
		slim_ifd->e_addr[4] = 0x17;
		slim_ifd->e_addr[5] = 0x02;
	}
		BTFMSLIM_INFO(
			"PGD Enum Addr: %.02x:%.02x:%.02x:%.02x:%.02x: %.02x",
			slim->e_addr[0], slim->e_addr[1], slim->e_addr[2],
			slim->e_addr[3], slim->e_addr[4], slim->e_addr[5]);
		BTFMSLIM_INFO(
			"IFD Enum Addr: %.02x:%.02x:%.02x:%.02x:%.02x: %.02x",
			slim_ifd->e_addr[0], slim_ifd->e_addr[1],
			slim_ifd->e_addr[2], slim_ifd->e_addr[3],
			slim_ifd->e_addr[4], slim_ifd->e_addr[5]);

	/* Assign Logical Address for PGD (Ported Generic Device)
	 * enumeration address
+6 −0
Original line number Diff line number Diff line
@@ -103,6 +103,12 @@ enum {
	QCA_HASTINGS_SOC_ID_0200 = 0x400A0200,
};

enum {
	QCA_HSP_SOC_ID_0100 = 0x400C0100,
	QCA_HSP_SOC_ID_0110 = 0x400C0110,
	QCA_HSP_SOC_ID_0200 = 0x400C0200,
};

/* Function Prototype */

/*
Loading