@@ -23,7 +23,7 @@
#include "pcie-designware.h"
-#define to_exynos_pcie(x) dev_get_drvdata((x)->dev)
+#define to_samsung_pcie(x) dev_get_drvdata((x)->dev)
/* PCIe APPL registers */
#define EXYNOS_PCIE_IRQ_PULSE 0x000
@@ -51,7 +51,7 @@
#define EXYNOS_PCIE_APPL_SLV_ARMISC 0x120
#define EXYNOS_PCIE_APPL_SLV_DBI_ENABLE BIT(21)
-struct exynos_pcie {
+struct samsung_pcie {
struct dw_pcie pci;
void __iomem *appl_base;
struct clk_bulk_data *clks;
@@ -60,23 +60,23 @@ struct exynos_pcie {
struct regulator_bulk_data supplies[2];
};
-static int exynos_pcie_init_clk_resources(struct exynos_pcie *ep)
+static int exynos_pcie_init_clk_resources(struct samsung_pcie *sp)
{
- struct device *dev = ep->pci.dev;
+ struct device *dev = sp->pci.dev;
int ret;
- ret = devm_clk_bulk_get_all(dev, &ep->clks);
+ ret = devm_clk_bulk_get_all(dev, &sp->clks);
if (ret < 0)
return ret;
- ep->clk_cnt = ret;
+ sp->clk_cnt = ret;
- return clk_bulk_prepare_enable(ep->clk_cnt, ep->clks);
+ return clk_bulk_prepare_enable(sp->clk_cnt, sp->clks);
}
-static void exynos_pcie_deinit_clk_resources(struct exynos_pcie *ep)
+static void exynos_pcie_deinit_clk_resources(struct samsung_pcie *sp)
{
- clk_bulk_disable_unprepare(ep->clk_cnt, ep->clks);
+ clk_bulk_disable_unprepare(sp->clk_cnt, sp->clks);
}
static void exynos_pcie_writel(void __iomem *base, u32 val, u32 reg)
@@ -89,115 +89,115 @@ static u32 exynos_pcie_readl(void __iomem *base, u32 reg)
return readl(base + reg);
}
-static void exynos_pcie_sideband_dbi_w_mode(struct exynos_pcie *ep, bool on)
+static void exynos_pcie_sideband_dbi_w_mode(struct samsung_pcie *sp, bool on)
{
u32 val;
- val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_APPL_SLV_AWMISC);
+ val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_APPL_SLV_AWMISC);
if (on)
val |= EXYNOS_PCIE_APPL_SLV_DBI_ENABLE;
else
val &= ~EXYNOS_PCIE_APPL_SLV_DBI_ENABLE;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_APPL_SLV_AWMISC);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_APPL_SLV_AWMISC);
}
-static void exynos_pcie_sideband_dbi_r_mode(struct exynos_pcie *ep, bool on)
+static void exynos_pcie_sideband_dbi_r_mode(struct samsung_pcie *sp, bool on)
{
u32 val;
- val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_APPL_SLV_ARMISC);
+ val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_APPL_SLV_ARMISC);
if (on)
val |= EXYNOS_PCIE_APPL_SLV_DBI_ENABLE;
else
val &= ~EXYNOS_PCIE_APPL_SLV_DBI_ENABLE;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_APPL_SLV_ARMISC);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_APPL_SLV_ARMISC);
}
-static void exynos_pcie_assert_core_reset(struct exynos_pcie *ep)
+static void exynos_pcie_assert_core_reset(struct samsung_pcie *sp)
{
u32 val;
- val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_CORE_RESET);
+ val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_CORE_RESET);
val &= ~EXYNOS_PCIE_CORE_RESET_ENABLE;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_CORE_RESET);
- exynos_pcie_writel(ep->appl_base, 0, EXYNOS_PCIE_STICKY_RESET);
- exynos_pcie_writel(ep->appl_base, 0, EXYNOS_PCIE_NONSTICKY_RESET);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_CORE_RESET);
+ exynos_pcie_writel(sp->appl_base, 0, EXYNOS_PCIE_STICKY_RESET);
+ exynos_pcie_writel(sp->appl_base, 0, EXYNOS_PCIE_NONSTICKY_RESET);
}
-static void exynos_pcie_deassert_core_reset(struct exynos_pcie *ep)
+static void exynos_pcie_deassert_core_reset(struct samsung_pcie *sp)
{
u32 val;
- val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_CORE_RESET);
+ val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_CORE_RESET);
val |= EXYNOS_PCIE_CORE_RESET_ENABLE;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_CORE_RESET);
- exynos_pcie_writel(ep->appl_base, 1, EXYNOS_PCIE_STICKY_RESET);
- exynos_pcie_writel(ep->appl_base, 1, EXYNOS_PCIE_NONSTICKY_RESET);
- exynos_pcie_writel(ep->appl_base, 1, EXYNOS_PCIE_APP_INIT_RESET);
- exynos_pcie_writel(ep->appl_base, 0, EXYNOS_PCIE_APP_INIT_RESET);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_CORE_RESET);
+ exynos_pcie_writel(sp->appl_base, 1, EXYNOS_PCIE_STICKY_RESET);
+ exynos_pcie_writel(sp->appl_base, 1, EXYNOS_PCIE_NONSTICKY_RESET);
+ exynos_pcie_writel(sp->appl_base, 1, EXYNOS_PCIE_APP_INIT_RESET);
+ exynos_pcie_writel(sp->appl_base, 0, EXYNOS_PCIE_APP_INIT_RESET);
}
static int exynos_pcie_start_link(struct dw_pcie *pci)
{
- struct exynos_pcie *ep = to_exynos_pcie(pci);
+ struct samsung_pcie *sp = to_samsung_pcie(pci);
u32 val;
- val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_SW_WAKE);
+ val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_SW_WAKE);
val &= ~EXYNOS_PCIE_BUS_EN;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_SW_WAKE);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_SW_WAKE);
/* assert LTSSM enable */
- exynos_pcie_writel(ep->appl_base, EXYNOS_PCIE_APPL_LTSSM_ENABLE,
+ exynos_pcie_writel(sp->appl_base, EXYNOS_PCIE_APPL_LTSSM_ENABLE,
EXYNOS_PCIE_APP_LTSSM_ENABLE);
return 0;
}
-static void exynos_pcie_clear_irq_pulse(struct exynos_pcie *ep)
+static void exynos_pcie_clear_irq_pulse(struct samsung_pcie *sp)
{
- u32 val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_IRQ_PULSE);
+ u32 val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_IRQ_PULSE);
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_IRQ_PULSE);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_IRQ_PULSE);
}
static irqreturn_t exynos_pcie_irq_handler(int irq, void *arg)
{
- struct exynos_pcie *ep = arg;
+ struct samsung_pcie *sp = arg;
- exynos_pcie_clear_irq_pulse(ep);
+ exynos_pcie_clear_irq_pulse(sp);
return IRQ_HANDLED;
}
-static void exynos_pcie_enable_irq_pulse(struct exynos_pcie *ep)
+static void exynos_pcie_enable_irq_pulse(struct samsung_pcie *sp)
{
u32 val = EXYNOS_IRQ_INTA_ASSERT | EXYNOS_IRQ_INTB_ASSERT |
EXYNOS_IRQ_INTC_ASSERT | EXYNOS_IRQ_INTD_ASSERT;
- exynos_pcie_writel(ep->appl_base, val, EXYNOS_PCIE_IRQ_EN_PULSE);
- exynos_pcie_writel(ep->appl_base, 0, EXYNOS_PCIE_IRQ_EN_LEVEL);
- exynos_pcie_writel(ep->appl_base, 0, EXYNOS_PCIE_IRQ_EN_SPECIAL);
+ exynos_pcie_writel(sp->appl_base, val, EXYNOS_PCIE_IRQ_EN_PULSE);
+ exynos_pcie_writel(sp->appl_base, 0, EXYNOS_PCIE_IRQ_EN_LEVEL);
+ exynos_pcie_writel(sp->appl_base, 0, EXYNOS_PCIE_IRQ_EN_SPECIAL);
}
static u32 exynos_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base,
u32 reg, size_t size)
{
- struct exynos_pcie *ep = to_exynos_pcie(pci);
+ struct samsung_pcie *sp = to_samsung_pcie(pci);
u32 val;
- exynos_pcie_sideband_dbi_r_mode(ep, true);
+ exynos_pcie_sideband_dbi_r_mode(sp, true);
dw_pcie_read(base + reg, size, &val);
- exynos_pcie_sideband_dbi_r_mode(ep, false);
+ exynos_pcie_sideband_dbi_r_mode(sp, false);
return val;
}
static void exynos_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base,
u32 reg, size_t size, u32 val)
{
- struct exynos_pcie *ep = to_exynos_pcie(pci);
+ struct samsung_pcie *sp = to_samsung_pcie(pci);
- exynos_pcie_sideband_dbi_w_mode(ep, true);
+ exynos_pcie_sideband_dbi_w_mode(sp, true);
dw_pcie_write(base + reg, size, val);
- exynos_pcie_sideband_dbi_w_mode(ep, false);
+ exynos_pcie_sideband_dbi_w_mode(sp, false);
}
static int exynos_pcie_rd_own_conf(struct pci_bus *bus, unsigned int devfn,
@@ -231,8 +231,8 @@ static struct pci_ops exynos_pci_ops = {
static int exynos_pcie_link_up(struct dw_pcie *pci)
{
- struct exynos_pcie *ep = to_exynos_pcie(pci);
- u32 val = exynos_pcie_readl(ep->appl_base, EXYNOS_PCIE_APPL_RDLH_LINKUP);
+ struct samsung_pcie *sp = to_samsung_pcie(pci);
+ u32 val = exynos_pcie_readl(sp->appl_base, EXYNOS_PCIE_APPL_RDLH_LINKUP);
return (val & EXYNOS_PCIE_APPL_XMLH_LINKUP);
}
@@ -240,17 +240,17 @@ static int exynos_pcie_link_up(struct dw_pcie *pci)
static int exynos_pcie_host_init(struct dw_pcie_rp *pp)
{
struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
- struct exynos_pcie *ep = to_exynos_pcie(pci);
+ struct samsung_pcie *sp = to_samsung_pcie(pci);
pp->bridge->ops = &exynos_pci_ops;
- exynos_pcie_assert_core_reset(ep);
+ exynos_pcie_assert_core_reset(sp);
- phy_init(ep->phy);
- phy_power_on(ep->phy);
+ phy_init(sp->phy);
+ phy_power_on(sp->phy);
- exynos_pcie_deassert_core_reset(ep);
- exynos_pcie_enable_irq_pulse(ep);
+ exynos_pcie_deassert_core_reset(sp);
+ exynos_pcie_enable_irq_pulse(sp);
return 0;
}
@@ -259,10 +259,10 @@ static const struct dw_pcie_host_ops exynos_pcie_host_ops = {
.host_init = exynos_pcie_host_init,
};
-static int exynos_add_pcie_port(struct exynos_pcie *ep,
+static int exynos_add_pcie_port(struct samsung_pcie *sp,
struct platform_device *pdev)
{
- struct dw_pcie *pci = &ep->pci;
+ struct dw_pcie *pci = &sp->pci;
struct dw_pcie_rp *pp = &pci->pp;
struct device *dev = &pdev->dev;
int ret;
@@ -272,7 +272,7 @@ static int exynos_add_pcie_port(struct exynos_pcie *ep,
return pp->irq;
ret = devm_request_irq(dev, pp->irq, exynos_pcie_irq_handler,
- IRQF_SHARED, "exynos-pcie", ep);
+ IRQF_SHARED, "exynos-pcie", sp);
if (ret) {
dev_err(dev, "failed to request irq\n");
return ret;
@@ -300,95 +300,95 @@ static const struct dw_pcie_ops dw_pcie_ops = {
static int exynos_pcie_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
- struct exynos_pcie *ep;
+ struct samsung_pcie *sp;
struct device_node *np = dev->of_node;
int ret;
- ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL);
- if (!ep)
+ sp = devm_kzalloc(dev, sizeof(*sp), GFP_KERNEL);
+ if (!sp)
return -ENOMEM;
- ep->pci.dev = dev;
- ep->pci.ops = &dw_pcie_ops;
+ sp->pci.dev = dev;
+ sp->pci.ops = &dw_pcie_ops;
- ep->phy = devm_of_phy_get(dev, np, NULL);
- if (IS_ERR(ep->phy))
- return PTR_ERR(ep->phy);
+ sp->phy = devm_of_phy_get(dev, np, NULL);
+ if (IS_ERR(sp->phy))
+ return PTR_ERR(sp->phy);
/* Application logic registers */
- ep->appl_base = devm_platform_ioremap_resource_byname(pdev, "appl");
- if (IS_ERR(ep->appl_base))
- return PTR_ERR(ep->appl_base);
+ sp->appl_base = devm_platform_ioremap_resource_byname(pdev, "appl");
+ if (IS_ERR(sp->appl_base))
+ return PTR_ERR(sp->appl_base);
- ret = exynos_pcie_init_clk_resources(ep);
+ ret = exynos_pcie_init_clk_resources(sp);
if (ret < 0)
return ret;
- ep->supplies[0].supply = "vdd18";
- ep->supplies[1].supply = "vdd10";
- ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ep->supplies),
- ep->supplies);
+ sp->supplies[0].supply = "vdd18";
+ sp->supplies[1].supply = "vdd10";
+ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(sp->supplies),
+ sp->supplies);
if (ret)
return ret;
- ret = regulator_bulk_enable(ARRAY_SIZE(ep->supplies), ep->supplies);
+ ret = regulator_bulk_enable(ARRAY_SIZE(sp->supplies), sp->supplies);
if (ret)
return ret;
- platform_set_drvdata(pdev, ep);
+ platform_set_drvdata(pdev, sp);
- ret = exynos_add_pcie_port(ep, pdev);
+ ret = exynos_add_pcie_port(sp, pdev);
if (ret < 0)
goto fail_probe;
return 0;
fail_probe:
- phy_exit(ep->phy);
- regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
- exynos_pcie_deinit_clk_resources(ep);
+ phy_exit(sp->phy);
+ regulator_bulk_disable(ARRAY_SIZE(sp->supplies), sp->supplies);
+ exynos_pcie_deinit_clk_resources(sp);
return ret;
}
static int __exit exynos_pcie_remove(struct platform_device *pdev)
{
- struct exynos_pcie *ep = platform_get_drvdata(pdev);
+ struct samsung_pcie *sp = platform_get_drvdata(pdev);
- dw_pcie_host_deinit(&ep->pci.pp);
- exynos_pcie_assert_core_reset(ep);
- phy_power_off(ep->phy);
- phy_exit(ep->phy);
- exynos_pcie_deinit_clk_resources(ep);
- regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
+ dw_pcie_host_deinit(&sp->pci.pp);
+ exynos_pcie_assert_core_reset(sp);
+ phy_power_off(sp->phy);
+ phy_exit(sp->phy);
+ exynos_pcie_deinit_clk_resources(sp);
+ regulator_bulk_disable(ARRAY_SIZE(sp->supplies), sp->supplies);
return 0;
}
static int exynos_pcie_suspend_noirq(struct device *dev)
{
- struct exynos_pcie *ep = dev_get_drvdata(dev);
+ struct samsung_pcie *sp = dev_get_drvdata(dev);
- exynos_pcie_assert_core_reset(ep);
- phy_power_off(ep->phy);
- phy_exit(ep->phy);
- regulator_bulk_disable(ARRAY_SIZE(ep->supplies), ep->supplies);
+ exynos_pcie_assert_core_reset(sp);
+ phy_power_off(sp->phy);
+ phy_exit(sp->phy);
+ regulator_bulk_disable(ARRAY_SIZE(sp->supplies), sp->supplies);
return 0;
}
static int exynos_pcie_resume_noirq(struct device *dev)
{
- struct exynos_pcie *ep = dev_get_drvdata(dev);
- struct dw_pcie *pci = &ep->pci;
+ struct samsung_pcie *sp = dev_get_drvdata(dev);
+ struct dw_pcie *pci = &sp->pci;
struct dw_pcie_rp *pp = &pci->pp;
int ret;
- ret = regulator_bulk_enable(ARRAY_SIZE(ep->supplies), ep->supplies);
+ ret = regulator_bulk_enable(ARRAY_SIZE(sp->supplies), sp->supplies);
if (ret)
return ret;
- /* exynos_pcie_host_init controls ep->phy */
+ /* exynos_pcie_host_init controls sp->phy */
exynos_pcie_host_init(pp);
dw_pcie_setup_rc(pp);
exynos_pcie_start_link(pci);
The platform specific structure being used is named exynos_pcie. Changing it to samsung_pcie for making it generic. Suggested-by: Pankaj Dubey <pankaj.dubey@samsung.com> Signed-off-by: Shradha Todi <shradha.t@samsung.com> --- drivers/pci/controller/dwc/pci-samsung.c | 190 +++++++++++------------ 1 file changed, 95 insertions(+), 95 deletions(-)