Loading Documentation/devicetree/bindings/net/danipc.txt +40 −40 Original line number Diff line number Diff line Loading @@ -6,32 +6,32 @@ for fast and reliable data passing between processors. Required properties: - compatible: should be "qcom,danipc" - reg-names: "ipc_bufs" - Krait IPC buffers region - reg-names: "ipc_bufs" - APPS IPC buffers region "agent_table" - IPC global agent table region "krait_ipc_intr_en" - Krait IPC interrupt enable MUX region "cpu0_ipc" - CPU0 IPC region "cpu1_ipc" - CPU1 IPC region "cpu2_ipc" - CPU2 IPC region "cpu3_ipc" - CPU3 IPC region "dsp0_ipc" - DSP0 IPC region "dsp1_ipc" - DSP1 IPC region "dsp2_ipc" - DSP2 IPC region "krait_ipc" - Krait IPC region "apps_ipc_intr_en" - APPS IPC interrupt enable MUX region "phycpu0_ipc" - PHY CPU0 IPC region "phycpu1_ipc" - PHY CPU1 IPC region "phycpu2_ipc" - PHY CPU2 IPC region "phycpu3_ipc" - PHY CPU3 IPC region "phydsp0_ipc" - PHY DSP0 IPC region "phydsp1_ipc" - PHY DSP1 IPC region "phydsp2_ipc" - PHY DSP2 IPC region "apps_ipc" - APPS IPC region "qdsp6_0_ipc" - QDSP6 0 IPC region "qdsp6_1_ipc" - QDSP6 1 IPC region "qdsp6_2_ipc" - QDSP6 2 IPC region "qdsp6_3_ipc" - QDSP6 3 IPC region - reg: location and size of Krait IPC buffers - reg: location and size of APPS IPC buffers location and size of IPC global agent table location and size of Krait IPC interrupt enable MUX location and size of CPU0 IPC region location and size of CPU1 IPC region location and size of CPU2 IPC region location and size of CPU3 IPC region location and size of DSP0 IPC region location and size of DSP1 IPC region location and size of DSP2 IPC region location and size of Krait IPC region location and size of APPS IPC interrupt enable MUX location and size of PHY CPU0 IPC region location and size of PHY CPU1 IPC region location and size of PHY CPU2 IPC region location and size of PHY CPU3 IPC region location and size of PHY DSP0 IPC region location and size of PHY DSP1 IPC region location and size of PHY DSP2 IPC region location and size of APPS IPC region location and size of QDSP6 0 IPC region location and size of QDSP6 1 IPC region location and size of QDSP6 2 IPC region Loading @@ -39,14 +39,14 @@ Required properties: - interrupts: IPC interrupt line Optional properties: -qcom,cpu0-shm-size: size of shared memory region for CPU0 -qcom,cpu1-shm-size: size of shared memory region for CPU1 -qcom,cpu2-shm-size: size of shared memory region for CPU2 -qcom,cpu3-shm-size: size of shared memory region for CPU3 -qcom,dsp0-shm-size: size of shared memory region for DSP0 -qcom,dsp1-shm-size: size of shared memory region for DSP1 -qcom,dsp2-shm-size: size of shared memory region for DSP2 -qcom,krait-shm-size: size of shared memory region for Krait -qcom,phycpu0-shm-size: size of shared memory region for PHY CPU0 -qcom,phycpu1-shm-size: size of shared memory region for PHY CPU1 -qcom,phycpu2-shm-size: size of shared memory region for PHY CPU2 -qcom,phycpu3-shm-size: size of shared memory region for PHY CPU3 -qcom,phydsp0-shm-size: size of shared memory region for PHY DSP0 -qcom,phydsp1-shm-size: size of shared memory region for PHY DSP1 -qcom,phydsp2-shm-size: size of shared memory region for PHY DSP2 -qcom,apps-shm-size: size of shared memory region for APPS -qcom,qdsp6-0-shm-size: size of shared memory region for QDSP6 0 -qcom,qdsp6-1-shm-size: size of shared memory region for QDSP6 1 -qcom,qdsp6-2-shm-size: size of shared memory region for QDSP6 2 Loading @@ -55,22 +55,22 @@ Optional properties: Examples: qcom,danipc@24200000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "krait_ipc_intr_en", "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", "krait_ipc", reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc"; reg = <0x24200000 0x80000>, /* ipc_bufs */ <0x1cf60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* krait_ipc_intr_en */ <0xf683a000 0x100>, /* cpu0_ipc */ <0xf683a000 0x100>, /* cpu1_ipc */ <0xf683c000 0x100>, /* cpu2_ipc */ <0xf683c000 0x100>, /* cpu3_ipc */ <0xf6862000 0x100>, /* dsp0_ipc */ <0xf6862000 0x100>, /* dsp1_ipc */ <0xf6878000 0x100>, /* dsp2_ipc */ <0xfd490000 0x100>, /* krait_ipc */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf683c000 0x100>, /* phycpu3_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xf6878000 0x100>, /* phydsp2_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd491000 0x100>, /* qdsp6_0_ipc */ <0xfd492000 0x100>, /* qdsp6_1_ipc */ <0xfd496000 0x100>, /* qdsp6_2_ipc */ Loading arch/arm/boot/dts/qcom/fsm9010.dtsi +22 −1 Original line number Diff line number Diff line /* Copyright (c) 2014, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2015, 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 Loading Loading @@ -364,6 +364,27 @@ }; }; qcom,danipc@21000000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phydsp0_ipc", "phydsp1_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc"; reg = <0x21000000 0x80000>, /* ipc_bufs */ <0x13e60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd495000 0x100>, /* qdsp6_0_ipc */ <0xfd496000 0x100>; /* qdsp6_1_ipc */ qcom,qdsp6-1-shm-size = <0x4000000>; interrupts = <0 202 0>; }; qcom,msm-imem@fe805000 { compatible = "qcom,msm-imem"; reg = <0xfe805000 0x1000>; /* Address and size of IMEM */ Loading arch/arm/boot/dts/qcom/fsm9900.dtsi +13 −13 Original line number Diff line number Diff line /* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2015, 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 Loading Loading @@ -1815,22 +1815,22 @@ qcom,danipc@24200000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "krait_ipc_intr_en", "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", "krait_ipc", reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc"; reg = <0x24200000 0x80000>, /* ipc_bufs */ <0x1cf60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* krait_ipc_intr_en */ <0xf683a000 0x100>, /* cpu0_ipc */ <0xf683a000 0x100>, /* cpu1_ipc */ <0xf683c000 0x100>, /* cpu2_ipc */ <0xf683c000 0x100>, /* cpu3_ipc */ <0xf6862000 0x100>, /* dsp0_ipc */ <0xf6862000 0x100>, /* dsp1_ipc */ <0xf6878000 0x100>, /* dsp2_ipc */ <0xfd490000 0x100>, /* krait_ipc */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf683c000 0x100>, /* phycpu3_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xf6878000 0x100>, /* phydsp2_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd491000 0x100>, /* qdsp6_0_ipc */ <0xfd492000 0x100>, /* qdsp6_1_ipc */ <0xfd496000 0x100>, /* qdsp6_2_ipc */ Loading drivers/net/danipc/danipc_lowlevel.c +11 −11 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ uint8_t __iomem *ipc_buffers; struct ipc_to_virt_map ipc_to_virt_map[PLATFORM_MAX_NUM_OF_NODES][2]; static void __iomem *krait_ipc_mux; static void __iomem *apps_ipc_mux; static void init_own_ipc_to_virt_map(struct danipc_priv *priv) { Loading Loading @@ -239,7 +239,7 @@ void danipc_init_irq(struct net_device *dev, struct danipc_priv *priv) (void *)(base_addr + CDU_INT0_MASK_F0)); /* Route interrupts from TCSR to APPS (only relevant to APPS-FIFO) */ __raw_writel_no_log(APPS_IPC_FIFO_INT, krait_ipc_mux); __raw_writel_no_log(APPS_IPC_FIFO_INT, apps_ipc_mux); } Loading Loading @@ -277,7 +277,7 @@ static void prepare_nodes(void) int n; for (n = 0; n < PLATFORM_MAX_NUM_OF_NODES; n++) if (ipc_regs_phys[n]) if (ipc_regs_len[n]) prepare_node(n); } Loading Loading @@ -309,21 +309,21 @@ static void free_ipc_buffers(void) iounmap(ipc_buffers); } static void remap_krait_ipc_mux(struct danipc_priv *priv) static void remap_apps_ipc_mux(struct danipc_priv *priv) { krait_ipc_mux = ioremap_nocache(priv->res_start[KRAIT_IPC_MUX_RES], apps_ipc_mux = ioremap_nocache(priv->res_start[KRAIT_IPC_MUX_RES], priv->res_len[KRAIT_IPC_MUX_RES]); if (!krait_ipc_mux) { if (!apps_ipc_mux) { pr_err("%s: cannot remap Krait IPC mux\n", __func__); BUG(); } } static void unmap_krait_ipc_mux(void) static void unmap_apps_ipc_mux(void) { if (krait_ipc_mux) iounmap(krait_ipc_mux); if (apps_ipc_mux) iounmap(apps_ipc_mux); } Loading @@ -335,7 +335,7 @@ int danipc_ll_init(struct danipc_priv *priv) prepare_nodes(); remap_agent_table(priv); init_own_ipc_to_virt_map(priv); remap_krait_ipc_mux(priv); remap_apps_ipc_mux(priv); rc = ipc_init(); } Loading @@ -345,7 +345,7 @@ int danipc_ll_init(struct danipc_priv *priv) void danipc_ll_cleanup(void) { unmap_krait_ipc_mux(); unmap_apps_ipc_mux(); unmap_ipc_to_virt_map(); unmap_agent_table(); unmap_nodes_memory(); Loading drivers/net/danipc/danipc_main.c +13 −11 Original line number Diff line number Diff line Loading @@ -192,19 +192,19 @@ static int parse_resources(struct platform_device *pdev, struct danipc_priv *priv) { const char *regs[PLATFORM_MAX_NUM_OF_NODES] = { "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", NULL, "krait_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", NULL, "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc", NULL, NULL, NULL }; const char *resource[RESOURCE_NUM] = { "ipc_bufs", "agent_table", "krait_ipc_intr_en" "ipc_bufs", "agent_table", "apps_ipc_intr_en" }; const char *shm_sizes[PLATFORM_MAX_NUM_OF_NODES] = { "qcom,cpu0-shm-size", "qcom,cpu1-shm-size", "qcom,cpu2-shm-size", "qcom,cpu3-shm-size", "qcom,dsp0-shm-size", "qcom,dsp1-shm-size", "qcom,dsp2-shm-size", NULL, "qcom,krait-shm-size", "qcom,phycpu0-shm-size", "qcom,phycpu1-shm-size", "qcom,phycpu2-shm-size", "qcom,phycpu3-shm-size", "qcom,phydsp0-shm-size", "qcom,phydsp1-shm-size", "qcom,phydsp2-shm-size", NULL, "qcom,apps-shm-size", "qcom,qdsp6-0-shm-size", "qcom,qdsp6-1-shm-size", "qcom,qdsp6-2-shm-size", "qcom,qdsp6-3-shm-size", NULL, NULL, NULL Loading Loading @@ -245,9 +245,6 @@ static int parse_resources(struct platform_device *pdev, if (res) { ipc_regs_phys[r] = res->start; ipc_regs_len[r] = resource_size(res); } else { pr_err("cannot get resource %s\n", regs[r]); parse_err = true; } if (of_property_read_u32((&pdev->dev)->of_node, Loading @@ -258,6 +255,11 @@ static int parse_resources(struct platform_device *pdev, ipc_shared_mem_sizes[r] = shm_size; } if (ipc_regs_len[LOCAL_IPC_ID] == 0) { pr_err("cannot get fifo resource for %s\n", regs[r]); parse_err = true; } rc = (!parse_err) ? 0 : -ENOMEM; } Loading Loading
Documentation/devicetree/bindings/net/danipc.txt +40 −40 Original line number Diff line number Diff line Loading @@ -6,32 +6,32 @@ for fast and reliable data passing between processors. Required properties: - compatible: should be "qcom,danipc" - reg-names: "ipc_bufs" - Krait IPC buffers region - reg-names: "ipc_bufs" - APPS IPC buffers region "agent_table" - IPC global agent table region "krait_ipc_intr_en" - Krait IPC interrupt enable MUX region "cpu0_ipc" - CPU0 IPC region "cpu1_ipc" - CPU1 IPC region "cpu2_ipc" - CPU2 IPC region "cpu3_ipc" - CPU3 IPC region "dsp0_ipc" - DSP0 IPC region "dsp1_ipc" - DSP1 IPC region "dsp2_ipc" - DSP2 IPC region "krait_ipc" - Krait IPC region "apps_ipc_intr_en" - APPS IPC interrupt enable MUX region "phycpu0_ipc" - PHY CPU0 IPC region "phycpu1_ipc" - PHY CPU1 IPC region "phycpu2_ipc" - PHY CPU2 IPC region "phycpu3_ipc" - PHY CPU3 IPC region "phydsp0_ipc" - PHY DSP0 IPC region "phydsp1_ipc" - PHY DSP1 IPC region "phydsp2_ipc" - PHY DSP2 IPC region "apps_ipc" - APPS IPC region "qdsp6_0_ipc" - QDSP6 0 IPC region "qdsp6_1_ipc" - QDSP6 1 IPC region "qdsp6_2_ipc" - QDSP6 2 IPC region "qdsp6_3_ipc" - QDSP6 3 IPC region - reg: location and size of Krait IPC buffers - reg: location and size of APPS IPC buffers location and size of IPC global agent table location and size of Krait IPC interrupt enable MUX location and size of CPU0 IPC region location and size of CPU1 IPC region location and size of CPU2 IPC region location and size of CPU3 IPC region location and size of DSP0 IPC region location and size of DSP1 IPC region location and size of DSP2 IPC region location and size of Krait IPC region location and size of APPS IPC interrupt enable MUX location and size of PHY CPU0 IPC region location and size of PHY CPU1 IPC region location and size of PHY CPU2 IPC region location and size of PHY CPU3 IPC region location and size of PHY DSP0 IPC region location and size of PHY DSP1 IPC region location and size of PHY DSP2 IPC region location and size of APPS IPC region location and size of QDSP6 0 IPC region location and size of QDSP6 1 IPC region location and size of QDSP6 2 IPC region Loading @@ -39,14 +39,14 @@ Required properties: - interrupts: IPC interrupt line Optional properties: -qcom,cpu0-shm-size: size of shared memory region for CPU0 -qcom,cpu1-shm-size: size of shared memory region for CPU1 -qcom,cpu2-shm-size: size of shared memory region for CPU2 -qcom,cpu3-shm-size: size of shared memory region for CPU3 -qcom,dsp0-shm-size: size of shared memory region for DSP0 -qcom,dsp1-shm-size: size of shared memory region for DSP1 -qcom,dsp2-shm-size: size of shared memory region for DSP2 -qcom,krait-shm-size: size of shared memory region for Krait -qcom,phycpu0-shm-size: size of shared memory region for PHY CPU0 -qcom,phycpu1-shm-size: size of shared memory region for PHY CPU1 -qcom,phycpu2-shm-size: size of shared memory region for PHY CPU2 -qcom,phycpu3-shm-size: size of shared memory region for PHY CPU3 -qcom,phydsp0-shm-size: size of shared memory region for PHY DSP0 -qcom,phydsp1-shm-size: size of shared memory region for PHY DSP1 -qcom,phydsp2-shm-size: size of shared memory region for PHY DSP2 -qcom,apps-shm-size: size of shared memory region for APPS -qcom,qdsp6-0-shm-size: size of shared memory region for QDSP6 0 -qcom,qdsp6-1-shm-size: size of shared memory region for QDSP6 1 -qcom,qdsp6-2-shm-size: size of shared memory region for QDSP6 2 Loading @@ -55,22 +55,22 @@ Optional properties: Examples: qcom,danipc@24200000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "krait_ipc_intr_en", "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", "krait_ipc", reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc"; reg = <0x24200000 0x80000>, /* ipc_bufs */ <0x1cf60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* krait_ipc_intr_en */ <0xf683a000 0x100>, /* cpu0_ipc */ <0xf683a000 0x100>, /* cpu1_ipc */ <0xf683c000 0x100>, /* cpu2_ipc */ <0xf683c000 0x100>, /* cpu3_ipc */ <0xf6862000 0x100>, /* dsp0_ipc */ <0xf6862000 0x100>, /* dsp1_ipc */ <0xf6878000 0x100>, /* dsp2_ipc */ <0xfd490000 0x100>, /* krait_ipc */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf683c000 0x100>, /* phycpu3_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xf6878000 0x100>, /* phydsp2_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd491000 0x100>, /* qdsp6_0_ipc */ <0xfd492000 0x100>, /* qdsp6_1_ipc */ <0xfd496000 0x100>, /* qdsp6_2_ipc */ Loading
arch/arm/boot/dts/qcom/fsm9010.dtsi +22 −1 Original line number Diff line number Diff line /* Copyright (c) 2014, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2015, 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 Loading Loading @@ -364,6 +364,27 @@ }; }; qcom,danipc@21000000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phydsp0_ipc", "phydsp1_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc"; reg = <0x21000000 0x80000>, /* ipc_bufs */ <0x13e60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd495000 0x100>, /* qdsp6_0_ipc */ <0xfd496000 0x100>; /* qdsp6_1_ipc */ qcom,qdsp6-1-shm-size = <0x4000000>; interrupts = <0 202 0>; }; qcom,msm-imem@fe805000 { compatible = "qcom,msm-imem"; reg = <0xfe805000 0x1000>; /* Address and size of IMEM */ Loading
arch/arm/boot/dts/qcom/fsm9900.dtsi +13 −13 Original line number Diff line number Diff line /* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2015, 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 Loading Loading @@ -1815,22 +1815,22 @@ qcom,danipc@24200000 { compatible = "qcom,danipc"; reg-names = "ipc_bufs", "agent_table", "krait_ipc_intr_en", "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", "krait_ipc", reg-names = "ipc_bufs", "agent_table", "apps_ipc_intr_en", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc"; reg = <0x24200000 0x80000>, /* ipc_bufs */ <0x1cf60000 0x2000>, /* agent_table */ <0xfd4a3500 0x100>, /* krait_ipc_intr_en */ <0xf683a000 0x100>, /* cpu0_ipc */ <0xf683a000 0x100>, /* cpu1_ipc */ <0xf683c000 0x100>, /* cpu2_ipc */ <0xf683c000 0x100>, /* cpu3_ipc */ <0xf6862000 0x100>, /* dsp0_ipc */ <0xf6862000 0x100>, /* dsp1_ipc */ <0xf6878000 0x100>, /* dsp2_ipc */ <0xfd490000 0x100>, /* krait_ipc */ <0xfd4a3500 0x100>, /* apps_ipc_intr_en */ <0xf683a000 0x100>, /* phycpu0_ipc */ <0xf683a000 0x100>, /* phycpu1_ipc */ <0xf683c000 0x100>, /* phycpu2_ipc */ <0xf683c000 0x100>, /* phycpu3_ipc */ <0xf6862000 0x100>, /* phydsp0_ipc */ <0xf6862000 0x100>, /* phydsp1_ipc */ <0xf6878000 0x100>, /* phydsp2_ipc */ <0xfd490000 0x100>, /* apps_ipc */ <0xfd491000 0x100>, /* qdsp6_0_ipc */ <0xfd492000 0x100>, /* qdsp6_1_ipc */ <0xfd496000 0x100>, /* qdsp6_2_ipc */ Loading
drivers/net/danipc/danipc_lowlevel.c +11 −11 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ uint8_t __iomem *ipc_buffers; struct ipc_to_virt_map ipc_to_virt_map[PLATFORM_MAX_NUM_OF_NODES][2]; static void __iomem *krait_ipc_mux; static void __iomem *apps_ipc_mux; static void init_own_ipc_to_virt_map(struct danipc_priv *priv) { Loading Loading @@ -239,7 +239,7 @@ void danipc_init_irq(struct net_device *dev, struct danipc_priv *priv) (void *)(base_addr + CDU_INT0_MASK_F0)); /* Route interrupts from TCSR to APPS (only relevant to APPS-FIFO) */ __raw_writel_no_log(APPS_IPC_FIFO_INT, krait_ipc_mux); __raw_writel_no_log(APPS_IPC_FIFO_INT, apps_ipc_mux); } Loading Loading @@ -277,7 +277,7 @@ static void prepare_nodes(void) int n; for (n = 0; n < PLATFORM_MAX_NUM_OF_NODES; n++) if (ipc_regs_phys[n]) if (ipc_regs_len[n]) prepare_node(n); } Loading Loading @@ -309,21 +309,21 @@ static void free_ipc_buffers(void) iounmap(ipc_buffers); } static void remap_krait_ipc_mux(struct danipc_priv *priv) static void remap_apps_ipc_mux(struct danipc_priv *priv) { krait_ipc_mux = ioremap_nocache(priv->res_start[KRAIT_IPC_MUX_RES], apps_ipc_mux = ioremap_nocache(priv->res_start[KRAIT_IPC_MUX_RES], priv->res_len[KRAIT_IPC_MUX_RES]); if (!krait_ipc_mux) { if (!apps_ipc_mux) { pr_err("%s: cannot remap Krait IPC mux\n", __func__); BUG(); } } static void unmap_krait_ipc_mux(void) static void unmap_apps_ipc_mux(void) { if (krait_ipc_mux) iounmap(krait_ipc_mux); if (apps_ipc_mux) iounmap(apps_ipc_mux); } Loading @@ -335,7 +335,7 @@ int danipc_ll_init(struct danipc_priv *priv) prepare_nodes(); remap_agent_table(priv); init_own_ipc_to_virt_map(priv); remap_krait_ipc_mux(priv); remap_apps_ipc_mux(priv); rc = ipc_init(); } Loading @@ -345,7 +345,7 @@ int danipc_ll_init(struct danipc_priv *priv) void danipc_ll_cleanup(void) { unmap_krait_ipc_mux(); unmap_apps_ipc_mux(); unmap_ipc_to_virt_map(); unmap_agent_table(); unmap_nodes_memory(); Loading
drivers/net/danipc/danipc_main.c +13 −11 Original line number Diff line number Diff line Loading @@ -192,19 +192,19 @@ static int parse_resources(struct platform_device *pdev, struct danipc_priv *priv) { const char *regs[PLATFORM_MAX_NUM_OF_NODES] = { "cpu0_ipc", "cpu1_ipc", "cpu2_ipc", "cpu3_ipc", "dsp0_ipc", "dsp1_ipc", "dsp2_ipc", NULL, "krait_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "phycpu0_ipc", "phycpu1_ipc", "phycpu2_ipc", "phycpu3_ipc", "phydsp0_ipc", "phydsp1_ipc", "phydsp2_ipc", NULL, "apps_ipc", "qdsp6_0_ipc", "qdsp6_1_ipc", "qdsp6_2_ipc", "qdsp6_3_ipc", NULL, NULL, NULL }; const char *resource[RESOURCE_NUM] = { "ipc_bufs", "agent_table", "krait_ipc_intr_en" "ipc_bufs", "agent_table", "apps_ipc_intr_en" }; const char *shm_sizes[PLATFORM_MAX_NUM_OF_NODES] = { "qcom,cpu0-shm-size", "qcom,cpu1-shm-size", "qcom,cpu2-shm-size", "qcom,cpu3-shm-size", "qcom,dsp0-shm-size", "qcom,dsp1-shm-size", "qcom,dsp2-shm-size", NULL, "qcom,krait-shm-size", "qcom,phycpu0-shm-size", "qcom,phycpu1-shm-size", "qcom,phycpu2-shm-size", "qcom,phycpu3-shm-size", "qcom,phydsp0-shm-size", "qcom,phydsp1-shm-size", "qcom,phydsp2-shm-size", NULL, "qcom,apps-shm-size", "qcom,qdsp6-0-shm-size", "qcom,qdsp6-1-shm-size", "qcom,qdsp6-2-shm-size", "qcom,qdsp6-3-shm-size", NULL, NULL, NULL Loading Loading @@ -245,9 +245,6 @@ static int parse_resources(struct platform_device *pdev, if (res) { ipc_regs_phys[r] = res->start; ipc_regs_len[r] = resource_size(res); } else { pr_err("cannot get resource %s\n", regs[r]); parse_err = true; } if (of_property_read_u32((&pdev->dev)->of_node, Loading @@ -258,6 +255,11 @@ static int parse_resources(struct platform_device *pdev, ipc_shared_mem_sizes[r] = shm_size; } if (ipc_regs_len[LOCAL_IPC_ID] == 0) { pr_err("cannot get fifo resource for %s\n", regs[r]); parse_err = true; } rc = (!parse_err) ? 0 : -ENOMEM; } Loading