mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 12:58:12 -04:00
soc: qcom: eud: Add support for EUD TCSR register check
For some targets like Bengal, eud enablement expects a TCSR register to be configured first. This would be one time enablement during drivers probe. Due to this register disabled, eud was not getting enabled on Bengal platform. If this register is not configured for EUD, do not enable eud-tcsr-check-enable parameter. Change-Id: Iaabfaecf343090d964d06807dcee5ea6a2dca3dc Signed-off-by: Shadab Naseem <snaseem@codeaurora.org> Signed-off-by: Mukesh Ojha <mojha@codeaurora.org>
This commit is contained in:
parent
5f6b45e0c6
commit
12ac024c7c
1 changed files with 31 additions and 0 deletions
|
|
@ -58,6 +58,8 @@
|
|||
#define UART_ID 0x90
|
||||
#define MAX_FIFO_SIZE 14
|
||||
|
||||
#define EUD_TCSR_ENABLE_BIT BIT(0)
|
||||
|
||||
struct eud_chip {
|
||||
struct device *dev;
|
||||
int eud_irq;
|
||||
|
|
@ -586,6 +588,8 @@ static int msm_eud_probe(struct platform_device *pdev)
|
|||
struct uart_port *port;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
bool eud_tcsr_check_state;
|
||||
phys_addr_t eud_tcsr_check;
|
||||
|
||||
chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
|
||||
if (!chip)
|
||||
|
|
@ -678,6 +682,33 @@ static int msm_eud_probe(struct platform_device *pdev)
|
|||
port->irq = chip->eud_irq;
|
||||
port->ops = &eud_uart_ops;
|
||||
|
||||
/*
|
||||
* Before enabling EUD, check for TCSR register
|
||||
* and if present, enable it.
|
||||
*/
|
||||
eud_tcsr_check_state = of_property_read_bool(
|
||||
pdev->dev.of_node, "qcom,eud-tcsr-check-enable");
|
||||
|
||||
if (eud_tcsr_check_state) {
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
|
||||
"eud_tcsr_check_reg");
|
||||
if (res) {
|
||||
eud_tcsr_check = res->start;
|
||||
ret = qcom_scm_io_writel(eud_tcsr_check,
|
||||
EUD_TCSR_ENABLE_BIT);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
"TCSR qcom_scm_io_writel failed with rc:%d\n",
|
||||
ret);
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
dev_err(chip->dev,
|
||||
"Failed to get resource for tcsr check!\n");
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
ret = uart_add_one_port(&eud_uart_driver, port);
|
||||
if (ret) {
|
||||
dev_err(chip->dev, "failed to add uart port!\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue