Loading arch/arm64/configs/vendor/kona-perf_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading arch/arm64/configs/vendor/kona_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading drivers/bluetooth/bluetooth-power.c +44 −13 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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" }, {} }; Loading Loading @@ -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) { Loading Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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; Loading drivers/bluetooth/btfm_slim.c +58 −0 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 Loading drivers/bluetooth/btfm_slim_slave.h +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
arch/arm64/configs/vendor/kona-perf_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
arch/arm64/configs/vendor/kona_defconfig +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/bluetooth/bluetooth-power.c +44 −13 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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" }, {} }; Loading Loading @@ -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) { Loading Loading @@ -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; } Loading Loading @@ -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; Loading Loading @@ -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; Loading
drivers/bluetooth/btfm_slim.c +58 −0 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 Loading
drivers/bluetooth/btfm_slim_slave.h +6 −0 Original line number Diff line number Diff line Loading @@ -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