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

Commit 2aeb48ef authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ARM: dts: msm: Remove unused dtsi flag for MSM8920/MSM8940"

parents ea851f01 ba90c945
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -36,7 +36,6 @@ Optional properties:
- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
- qcom,reset-bam-on-connect: If present then BAM is RESET before connecting
  pipe. This may be required if BAM peripheral is also reset before connect.
  pipe. This may be required if BAM peripheral is also reset before connect.
- qcom,reset-bam-on-disconnect: If present then BAM is RESET after disconnecting pipes.
- qcom,reset-bam-on-disconnect: If present then BAM is RESET after disconnecting pipes.
- qcom,enable-hsusb-bam-on-boot: If present then BAM is enabled at bootup itself.


A number of USB BAM pipe parameters are represented as sub-nodes:
A number of USB BAM pipe parameters are represented as sub-nodes:


+0 −2
Original line number Original line Diff line number Diff line
@@ -49,8 +49,6 @@
			 <&clock_gcc clk_xo_otg_clk>;
			 <&clock_gcc clk_xo_otg_clk>;


	qcom,usbbam@78c4000 {
	qcom,usbbam@78c4000 {
		qcom,enable-hsusb-bam-on-boot;

		/delete-property/ qcom,reset-bam-on-disconnect;
		/delete-property/ qcom,reset-bam-on-disconnect;
		/delete-node/ qcom,pipe0;
		/delete-node/ qcom,pipe0;
		qcom,pipe0 {
		qcom,pipe0 {
+0 −2
Original line number Original line Diff line number Diff line
@@ -38,8 +38,6 @@
			 <&clock_gcc clk_xo_otg_clk>;
			 <&clock_gcc clk_xo_otg_clk>;


	qcom,usbbam@78c4000 {
	qcom,usbbam@78c4000 {
		qcom,enable-hsusb-bam-on-boot;

		/delete-property/ qcom,reset-bam-on-disconnect;
		/delete-property/ qcom,reset-bam-on-disconnect;
		/delete-node/ qcom,pipe0;
		/delete-node/ qcom,pipe0;
		qcom,pipe0 {
		qcom,pipe0 {
+75 −35
Original line number Original line Diff line number Diff line
@@ -2887,9 +2887,6 @@ static struct msm_usb_bam_platform_data *usb_bam_dt_to_pdata(
	else
	else
		pdata->override_threshold = threshold;
		pdata->override_threshold = threshold;


	pdata->enable_hsusb_bam_on_boot = of_property_read_bool(node,
		"qcom,enable-hsusb-bam-on-boot");

	for_each_child_of_node(pdev->dev.of_node, node)
	for_each_child_of_node(pdev->dev.of_node, node)
		max_connections++;
		max_connections++;


@@ -3013,53 +3010,72 @@ err:
	return NULL;
	return NULL;
}
}


static int usb_bam_init(struct platform_device *pdev)
static void msm_usb_bam_update_props(struct sps_bam_props *props,
				struct platform_device *pdev)
{
{
	int ret;
	struct msm_usb_bam_platform_data *pdata = pdev->dev.platform_data;
	struct msm_usb_bam_platform_data *pdata = pdev->dev.platform_data;
	enum usb_ctrl bam_type = pdata->bam_type;
	enum usb_ctrl bam_type = pdata->bam_type;
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam_type];
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam_type];
	struct sps_bam_props props;

	memset(&props, 0, sizeof(props));


	pr_debug("%s: usb_bam_init - %s\n", __func__,
		bam_enable_strings[bam_type]);


	props.phys_addr = ctx->io_res->start;
	props->phys_addr = ctx->io_res->start;
	props.virt_addr = ctx->regs;
	props->virt_addr = NULL;
	props.virt_size = resource_size(ctx->io_res);
	props->virt_size = resource_size(ctx->io_res);
	props.irq = ctx->irq;
	props->irq = ctx->irq;
	props.summing_threshold = pdata->override_threshold;
	props->summing_threshold = pdata->override_threshold;
	props.event_threshold = pdata->override_threshold;
	props->event_threshold = pdata->override_threshold;
	props.num_pipes = pdata->usb_bam_num_pipes;
	props->num_pipes = pdata->usb_bam_num_pipes;
	props.callback = usb_bam_sps_events;
	props->callback = usb_bam_sps_events;
	props.user = bam_enable_strings[bam_type];
	props->user = bam_enable_strings[bam_type];


	/*
	/*
	* HSUSB and HSIC Cores don't support RESET ACK signal to BAMs
	* HSUSB and HSIC Cores don't support RESET ACK signal to BAMs
	* Hence, let BAM to ignore acknowledge from USB while resetting PIPE
	* Hence, let BAM to ignore acknowledge from USB while resetting PIPE
	*/
	*/
	if (pdata->ignore_core_reset_ack && bam_type != DWC3_CTRL)
	if (pdata->ignore_core_reset_ack && bam_type != DWC3_CTRL)
		props.options = SPS_BAM_NO_EXT_P_RST;
		props->options = SPS_BAM_NO_EXT_P_RST;


	if (pdata->disable_clk_gating)
	if (pdata->disable_clk_gating)
		props.options |= SPS_BAM_NO_LOCAL_CLK_GATING;
		props->options |= SPS_BAM_NO_LOCAL_CLK_GATING;


	/*
	/*
	 * HSUSB BAM is not NDP BAM and it must be enabled early before
	 * HSUSB BAM is not NDP BAM and it must be enabled before
	 * starting peripheral controller to avoid switching USB core mode
	 * starting peripheral controller to avoid switching USB core mode
	 * from legacy to BAM with ongoing data transfers.
	 * from legacy to BAM with ongoing data transfers.
	 */
	 */
	if (pdata->enable_hsusb_bam_on_boot && bam_type == CI_CTRL) {
	if (bam_type == CI_CTRL) {
		pr_debug("Register and enable HSUSB BAM\n");
		log_event_dbg("Register and enable HSUSB BAM\n");
		props.options |= SPS_BAM_OPT_ENABLE_AT_BOOT;
		props->options |= SPS_BAM_OPT_ENABLE_AT_BOOT;
		props.options |= SPS_BAM_FORCE_RESET;
		props->options |= SPS_BAM_FORCE_RESET;
	}
}
}

static int usb_bam_init(struct platform_device *pdev)
{
	int ret;
	struct msm_usb_bam_platform_data *pdata = pdev->dev.platform_data;
	enum usb_ctrl bam_type = pdata->bam_type;
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam_type];
	struct sps_bam_props props;


	pr_debug("%s: usb_bam_init - %s\n", __func__,
		bam_enable_strings[bam_type]);

	/*
	 * CI USB2 BAM is registered before starting controller
	 * and only if bam2bam function is present in composition
	 */
	if (bam_type == CI_CTRL)
		return 0;

	memset(&props, 0, sizeof(props));
	msm_usb_bam_update_props(&props, pdev);
	ret = sps_register_bam_device(&props, &ctx->h_bam);
	ret = sps_register_bam_device(&props, &ctx->h_bam);


	if (ret < 0) {
	if (ret < 0) {
		log_event_err("%s: register bam error %d\n", __func__, ret);
		log_event_err("%s: register bam error %d\n",
				__func__, ret);
		return -EFAULT;
		return -EFAULT;
	}
	}


@@ -3418,7 +3434,7 @@ int msm_do_bam_disable_enable(enum usb_ctrl bam)
		return 0;
		return 0;


	pdata = ctx->usb_bam_pdev->dev.platform_data;
	pdata = ctx->usb_bam_pdev->dev.platform_data;
	if ((bam != CI_CTRL) || !pdata->enable_hsusb_bam_on_boot)
	if (bam != CI_CTRL)
		return 0;
		return 0;


	if (!ctx->pipes_enabled_per_bam || info[bam].pipes_suspended)
	if (!ctx->pipes_enabled_per_bam || info[bam].pipes_suspended)
@@ -3520,20 +3536,44 @@ EXPORT_SYMBOL(msm_do_bam_disable_enable);


bool msm_usb_bam_enable(enum usb_ctrl bam, bool bam_enable)
bool msm_usb_bam_enable(enum usb_ctrl bam, bool bam_enable)
{
{
	struct msm_usb_bam_platform_data *pdata;
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam];
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam];
	static bool bam_enabled;
	int ret;


	if (!ctx->usb_bam_pdev)
	if (!ctx->usb_bam_pdev)
		return 0;
		return 0;


	pdata = ctx->usb_bam_pdev->dev.platform_data;
	if (bam != CI_CTRL)
	if ((bam != CI_CTRL) || !(bam_enable ||
		return 0;
					pdata->enable_hsusb_bam_on_boot))

	if (bam_enabled == bam_enable) {
		log_event_dbg("%s: USB BAM is already %s\n", __func__,
				bam_enable ? "Registered" : "De-registered");
		return 0;
		return 0;
	}

	if (bam_enable) {
		struct sps_bam_props props;


		memset(&props, 0, sizeof(props));
		msm_usb_bam_update_props(&props, ctx->usb_bam_pdev);
		msm_hw_bam_disable(1);
		msm_hw_bam_disable(1);
	sps_device_reset(ctx->h_bam);
		ret = sps_register_bam_device(&props, &ctx->h_bam);
		bam_enabled = true;
		if (ret < 0) {
			log_event_err("%s: register bam error %d\n",
					__func__, ret);
			return -EFAULT;
		}
		log_event_dbg("%s: USB BAM Registered\n", __func__);
		msm_hw_bam_disable(0);
		msm_hw_bam_disable(0);
	} else {
		msm_hw_bam_disable(1);
		sps_device_reset(ctx->h_bam);
		sps_deregister_bam_device(ctx->h_bam);
		log_event_dbg("%s: USB BAM De-registered\n", __func__);
		bam_enabled = false;
	}


	return 0;
	return 0;
}
}
+27 −14
Original line number Original line Diff line number Diff line
@@ -3427,14 +3427,22 @@ static int ci13xxx_vbus_session(struct usb_gadget *_gadget, int is_active)
		gadget_ready = 1;
		gadget_ready = 1;
	spin_unlock_irqrestore(udc->lock, flags);
	spin_unlock_irqrestore(udc->lock, flags);


	if (gadget_ready) {
	if (!gadget_ready)
		return 0;

	if (is_active) {
	if (is_active) {
		hw_device_reset(udc);
		hw_device_reset(udc);
		if (udc->udc_driver->notify_event)
		if (udc->udc_driver->notify_event)
			udc->udc_driver->notify_event(udc,
			udc->udc_driver->notify_event(udc,
				CI13XXX_CONTROLLER_CONNECT_EVENT);
				CI13XXX_CONTROLLER_CONNECT_EVENT);
			if (udc->softconnect)
		/* Enable BAM (if needed) before starting controller */
		if (udc->softconnect) {
			dbg_event(0xFF, "BAM EN2",
				_gadget->bam2bam_func_enabled);
			msm_usb_bam_enable(CI_CTRL,
				_gadget->bam2bam_func_enabled);
			hw_device_state(udc->ep0out.qh.dma);
			hw_device_state(udc->ep0out.qh.dma);
		}
	} else {
	} else {
		hw_device_state(0);
		hw_device_state(0);
		_gadget_stop_activity(&udc->gadget);
		_gadget_stop_activity(&udc->gadget);
@@ -3442,7 +3450,6 @@ static int ci13xxx_vbus_session(struct usb_gadget *_gadget, int is_active)
			udc->udc_driver->notify_event(udc,
			udc->udc_driver->notify_event(udc,
				CI13XXX_CONTROLLER_DISCONNECT_EVENT);
				CI13XXX_CONTROLLER_DISCONNECT_EVENT);
	}
	}
	}


	return 0;
	return 0;
}
}
@@ -3488,6 +3495,12 @@ static int ci13xxx_pullup(struct usb_gadget *_gadget, int is_active)


	pm_runtime_get_sync(&_gadget->dev);
	pm_runtime_get_sync(&_gadget->dev);


	/* Enable BAM (if needed) before starting controller */
	if (is_active) {
		dbg_event(0xFF, "BAM EN1", _gadget->bam2bam_func_enabled);
		msm_usb_bam_enable(CI_CTRL, _gadget->bam2bam_func_enabled);
	}

	spin_lock_irqsave(udc->lock, flags);
	spin_lock_irqsave(udc->lock, flags);
	if (!udc->vbus_active) {
	if (!udc->vbus_active) {
		spin_unlock_irqrestore(udc->lock, flags);
		spin_unlock_irqrestore(udc->lock, flags);
Loading