Lines Matching refs:mp
76 static struct reset_control *meson_pcie_get_reset(struct meson_pcie *mp, in meson_pcie_get_reset() argument
80 struct device *dev = mp->pci.dev; in meson_pcie_get_reset()
91 static int meson_pcie_get_resets(struct meson_pcie *mp) in meson_pcie_get_resets() argument
93 struct meson_pcie_rc_reset *mrst = &mp->mrst; in meson_pcie_get_resets()
95 mrst->port = meson_pcie_get_reset(mp, "port", PCIE_NORMAL_RESET); in meson_pcie_get_resets()
100 mrst->apb = meson_pcie_get_reset(mp, "apb", PCIE_SHARED_RESET); in meson_pcie_get_resets()
109 struct meson_pcie *mp) in meson_pcie_get_mems() argument
111 struct dw_pcie *pci = &mp->pci; in meson_pcie_get_mems()
117 mp->cfg_base = devm_platform_ioremap_resource_byname(pdev, "cfg"); in meson_pcie_get_mems()
118 if (IS_ERR(mp->cfg_base)) in meson_pcie_get_mems()
119 return PTR_ERR(mp->cfg_base); in meson_pcie_get_mems()
124 static int meson_pcie_power_on(struct meson_pcie *mp) in meson_pcie_power_on() argument
128 ret = phy_init(mp->phy); in meson_pcie_power_on()
132 ret = phy_power_on(mp->phy); in meson_pcie_power_on()
134 phy_exit(mp->phy); in meson_pcie_power_on()
141 static void meson_pcie_power_off(struct meson_pcie *mp) in meson_pcie_power_off() argument
143 phy_power_off(mp->phy); in meson_pcie_power_off()
144 phy_exit(mp->phy); in meson_pcie_power_off()
147 static int meson_pcie_reset(struct meson_pcie *mp) in meson_pcie_reset() argument
149 struct meson_pcie_rc_reset *mrst = &mp->mrst; in meson_pcie_reset()
152 ret = phy_reset(mp->phy); in meson_pcie_reset()
202 static int meson_pcie_probe_clocks(struct meson_pcie *mp) in meson_pcie_probe_clocks() argument
204 struct device *dev = mp->pci.dev; in meson_pcie_probe_clocks()
205 struct meson_pcie_clk_res *res = &mp->clk_res; in meson_pcie_probe_clocks()
222 static inline u32 meson_cfg_readl(struct meson_pcie *mp, u32 reg) in meson_cfg_readl() argument
224 return readl(mp->cfg_base + reg); in meson_cfg_readl()
227 static inline void meson_cfg_writel(struct meson_pcie *mp, u32 val, u32 reg) in meson_cfg_writel() argument
229 writel(val, mp->cfg_base + reg); in meson_cfg_writel()
232 static void meson_pcie_assert_reset(struct meson_pcie *mp) in meson_pcie_assert_reset() argument
234 gpiod_set_value_cansleep(mp->reset_gpio, 1); in meson_pcie_assert_reset()
236 gpiod_set_value_cansleep(mp->reset_gpio, 0); in meson_pcie_assert_reset()
239 static void meson_pcie_ltssm_enable(struct meson_pcie *mp) in meson_pcie_ltssm_enable() argument
243 val = meson_cfg_readl(mp, PCIE_CFG0); in meson_pcie_ltssm_enable()
245 meson_cfg_writel(mp, val, PCIE_CFG0); in meson_pcie_ltssm_enable()
248 static int meson_size_to_payload(struct meson_pcie *mp, int size) in meson_size_to_payload() argument
250 struct device *dev = mp->pci.dev; in meson_size_to_payload()
265 static void meson_set_max_payload(struct meson_pcie *mp, int size) in meson_set_max_payload() argument
267 struct dw_pcie *pci = &mp->pci; in meson_set_max_payload()
270 int max_payload_size = meson_size_to_payload(mp, size); in meson_set_max_payload()
281 static void meson_set_max_rd_req_size(struct meson_pcie *mp, int size) in meson_set_max_rd_req_size() argument
283 struct dw_pcie *pci = &mp->pci; in meson_set_max_rd_req_size()
286 int max_rd_req_size = meson_size_to_payload(mp, size); in meson_set_max_rd_req_size()
299 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_start_link() local
301 meson_pcie_ltssm_enable(mp); in meson_pcie_start_link()
302 meson_pcie_assert_reset(mp); in meson_pcie_start_link()
341 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_link_up() local
348 state12 = meson_cfg_readl(mp, PCIE_CFG_STATUS12); in meson_pcie_link_up()
349 state17 = meson_cfg_readl(mp, PCIE_CFG_STATUS17); in meson_pcie_link_up()
381 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_host_init() local
385 meson_set_max_payload(mp, MAX_PAYLOAD_SIZE); in meson_pcie_host_init()
386 meson_set_max_rd_req_size(mp, MAX_READ_REQ_SIZE); in meson_pcie_host_init()
404 struct meson_pcie *mp; in meson_pcie_probe() local
407 mp = devm_kzalloc(dev, sizeof(*mp), GFP_KERNEL); in meson_pcie_probe()
408 if (!mp) in meson_pcie_probe()
411 pci = &mp->pci; in meson_pcie_probe()
417 mp->phy = devm_phy_get(dev, "pcie"); in meson_pcie_probe()
418 if (IS_ERR(mp->phy)) { in meson_pcie_probe()
419 dev_err(dev, "get phy failed, %ld\n", PTR_ERR(mp->phy)); in meson_pcie_probe()
420 return PTR_ERR(mp->phy); in meson_pcie_probe()
423 mp->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in meson_pcie_probe()
424 if (IS_ERR(mp->reset_gpio)) { in meson_pcie_probe()
426 return PTR_ERR(mp->reset_gpio); in meson_pcie_probe()
429 ret = meson_pcie_get_resets(mp); in meson_pcie_probe()
435 ret = meson_pcie_get_mems(pdev, mp); in meson_pcie_probe()
441 ret = meson_pcie_power_on(mp); in meson_pcie_probe()
447 ret = meson_pcie_reset(mp); in meson_pcie_probe()
453 ret = meson_pcie_probe_clocks(mp); in meson_pcie_probe()
459 platform_set_drvdata(pdev, mp); in meson_pcie_probe()
470 meson_pcie_power_off(mp); in meson_pcie_probe()