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()
197 static int meson_pcie_probe_clocks(struct meson_pcie *mp) in meson_pcie_probe_clocks() argument
199 struct device *dev = mp->pci.dev; in meson_pcie_probe_clocks()
200 struct meson_pcie_clk_res *res = &mp->clk_res; in meson_pcie_probe_clocks()
217 static inline u32 meson_cfg_readl(struct meson_pcie *mp, u32 reg) in meson_cfg_readl() argument
219 return readl(mp->cfg_base + reg); in meson_cfg_readl()
222 static inline void meson_cfg_writel(struct meson_pcie *mp, u32 val, u32 reg) in meson_cfg_writel() argument
224 writel(val, mp->cfg_base + reg); in meson_cfg_writel()
227 static void meson_pcie_assert_reset(struct meson_pcie *mp) in meson_pcie_assert_reset() argument
229 gpiod_set_value_cansleep(mp->reset_gpio, 1); in meson_pcie_assert_reset()
231 gpiod_set_value_cansleep(mp->reset_gpio, 0); in meson_pcie_assert_reset()
234 static void meson_pcie_ltssm_enable(struct meson_pcie *mp) in meson_pcie_ltssm_enable() argument
238 val = meson_cfg_readl(mp, PCIE_CFG0); in meson_pcie_ltssm_enable()
240 meson_cfg_writel(mp, val, PCIE_CFG0); in meson_pcie_ltssm_enable()
243 static int meson_size_to_payload(struct meson_pcie *mp, int size) in meson_size_to_payload() argument
245 struct device *dev = mp->pci.dev; in meson_size_to_payload()
260 static void meson_set_max_payload(struct meson_pcie *mp, int size) in meson_set_max_payload() argument
262 struct dw_pcie *pci = &mp->pci; in meson_set_max_payload()
265 int max_payload_size = meson_size_to_payload(mp, size); in meson_set_max_payload()
276 static void meson_set_max_rd_req_size(struct meson_pcie *mp, int size) in meson_set_max_rd_req_size() argument
278 struct dw_pcie *pci = &mp->pci; in meson_set_max_rd_req_size()
281 int max_rd_req_size = meson_size_to_payload(mp, size); in meson_set_max_rd_req_size()
294 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_start_link() local
296 meson_pcie_ltssm_enable(mp); in meson_pcie_start_link()
297 meson_pcie_assert_reset(mp); in meson_pcie_start_link()
336 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_link_up() local
343 state12 = meson_cfg_readl(mp, PCIE_CFG_STATUS12); in meson_pcie_link_up()
344 state17 = meson_cfg_readl(mp, PCIE_CFG_STATUS17); in meson_pcie_link_up()
376 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_host_init() local
380 meson_set_max_payload(mp, MAX_PAYLOAD_SIZE); in meson_pcie_host_init()
381 meson_set_max_rd_req_size(mp, MAX_READ_REQ_SIZE); in meson_pcie_host_init()
399 struct meson_pcie *mp; in meson_pcie_probe() local
402 mp = devm_kzalloc(dev, sizeof(*mp), GFP_KERNEL); in meson_pcie_probe()
403 if (!mp) in meson_pcie_probe()
406 pci = &mp->pci; in meson_pcie_probe()
412 mp->phy = devm_phy_get(dev, "pcie"); in meson_pcie_probe()
413 if (IS_ERR(mp->phy)) { in meson_pcie_probe()
414 dev_err(dev, "get phy failed, %ld\n", PTR_ERR(mp->phy)); in meson_pcie_probe()
415 return PTR_ERR(mp->phy); in meson_pcie_probe()
418 mp->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in meson_pcie_probe()
419 if (IS_ERR(mp->reset_gpio)) { in meson_pcie_probe()
421 return PTR_ERR(mp->reset_gpio); in meson_pcie_probe()
424 ret = meson_pcie_get_resets(mp); in meson_pcie_probe()
430 ret = meson_pcie_get_mems(pdev, mp); in meson_pcie_probe()
436 ret = meson_pcie_power_on(mp); in meson_pcie_probe()
442 ret = meson_pcie_reset(mp); in meson_pcie_probe()
448 ret = meson_pcie_probe_clocks(mp); in meson_pcie_probe()
454 platform_set_drvdata(pdev, mp); in meson_pcie_probe()
465 meson_pcie_power_off(mp); in meson_pcie_probe()