Lines Matching full:mp

75 static struct reset_control *meson_pcie_get_reset(struct meson_pcie *mp,  in meson_pcie_get_reset()  argument
79 struct device *dev = mp->pci.dev; in meson_pcie_get_reset()
90 static int meson_pcie_get_resets(struct meson_pcie *mp) in meson_pcie_get_resets() argument
92 struct meson_pcie_rc_reset *mrst = &mp->mrst; in meson_pcie_get_resets()
94 mrst->port = meson_pcie_get_reset(mp, "port", PCIE_NORMAL_RESET); in meson_pcie_get_resets()
99 mrst->apb = meson_pcie_get_reset(mp, "apb", PCIE_SHARED_RESET); in meson_pcie_get_resets()
108 struct meson_pcie *mp) in meson_pcie_get_mems() argument
110 struct dw_pcie *pci = &mp->pci; in meson_pcie_get_mems()
116 mp->cfg_base = devm_platform_ioremap_resource_byname(pdev, "cfg"); in meson_pcie_get_mems()
117 if (IS_ERR(mp->cfg_base)) in meson_pcie_get_mems()
118 return PTR_ERR(mp->cfg_base); in meson_pcie_get_mems()
123 static int meson_pcie_power_on(struct meson_pcie *mp) in meson_pcie_power_on() argument
127 ret = phy_init(mp->phy); in meson_pcie_power_on()
131 ret = phy_power_on(mp->phy); in meson_pcie_power_on()
133 phy_exit(mp->phy); in meson_pcie_power_on()
140 static void meson_pcie_power_off(struct meson_pcie *mp) in meson_pcie_power_off() argument
142 phy_power_off(mp->phy); in meson_pcie_power_off()
143 phy_exit(mp->phy); in meson_pcie_power_off()
146 static int meson_pcie_reset(struct meson_pcie *mp) in meson_pcie_reset() argument
148 struct meson_pcie_rc_reset *mrst = &mp->mrst; in meson_pcie_reset()
151 ret = phy_reset(mp->phy); in meson_pcie_reset()
201 static int meson_pcie_probe_clocks(struct meson_pcie *mp) in meson_pcie_probe_clocks() argument
203 struct device *dev = mp->pci.dev; in meson_pcie_probe_clocks()
204 struct meson_pcie_clk_res *res = &mp->clk_res; in meson_pcie_probe_clocks()
221 static inline u32 meson_cfg_readl(struct meson_pcie *mp, u32 reg) in meson_cfg_readl() argument
223 return readl(mp->cfg_base + reg); in meson_cfg_readl()
226 static inline void meson_cfg_writel(struct meson_pcie *mp, u32 val, u32 reg) in meson_cfg_writel() argument
228 writel(val, mp->cfg_base + reg); in meson_cfg_writel()
231 static void meson_pcie_assert_reset(struct meson_pcie *mp) in meson_pcie_assert_reset() argument
233 gpiod_set_value_cansleep(mp->reset_gpio, 1); in meson_pcie_assert_reset()
235 gpiod_set_value_cansleep(mp->reset_gpio, 0); in meson_pcie_assert_reset()
238 static void meson_pcie_ltssm_enable(struct meson_pcie *mp) in meson_pcie_ltssm_enable() argument
242 val = meson_cfg_readl(mp, PCIE_CFG0); in meson_pcie_ltssm_enable()
244 meson_cfg_writel(mp, val, PCIE_CFG0); in meson_pcie_ltssm_enable()
247 static int meson_size_to_payload(struct meson_pcie *mp, int size) in meson_size_to_payload() argument
249 struct device *dev = mp->pci.dev; in meson_size_to_payload()
264 static void meson_set_max_payload(struct meson_pcie *mp, int size) in meson_set_max_payload() argument
266 struct dw_pcie *pci = &mp->pci; in meson_set_max_payload()
269 int max_payload_size = meson_size_to_payload(mp, size); in meson_set_max_payload()
280 static void meson_set_max_rd_req_size(struct meson_pcie *mp, int size) in meson_set_max_rd_req_size() argument
282 struct dw_pcie *pci = &mp->pci; in meson_set_max_rd_req_size()
285 int max_rd_req_size = meson_size_to_payload(mp, size); in meson_set_max_rd_req_size()
298 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_start_link() local
300 meson_pcie_ltssm_enable(mp); in meson_pcie_start_link()
301 meson_pcie_assert_reset(mp); in meson_pcie_start_link()
340 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_link_up() local
347 state12 = meson_cfg_readl(mp, PCIE_CFG_STATUS12); in meson_pcie_link_up()
348 state17 = meson_cfg_readl(mp, PCIE_CFG_STATUS17); in meson_pcie_link_up()
380 struct meson_pcie *mp = to_meson_pcie(pci); in meson_pcie_host_init() local
384 meson_set_max_payload(mp, MAX_PAYLOAD_SIZE); in meson_pcie_host_init()
385 meson_set_max_rd_req_size(mp, MAX_READ_REQ_SIZE); in meson_pcie_host_init()
403 struct meson_pcie *mp; in meson_pcie_probe() local
406 mp = devm_kzalloc(dev, sizeof(*mp), GFP_KERNEL); in meson_pcie_probe()
407 if (!mp) in meson_pcie_probe()
410 pci = &mp->pci; in meson_pcie_probe()
416 mp->phy = devm_phy_get(dev, "pcie"); in meson_pcie_probe()
417 if (IS_ERR(mp->phy)) { in meson_pcie_probe()
418 dev_err(dev, "get phy failed, %ld\n", PTR_ERR(mp->phy)); in meson_pcie_probe()
419 return PTR_ERR(mp->phy); in meson_pcie_probe()
422 mp->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in meson_pcie_probe()
423 if (IS_ERR(mp->reset_gpio)) { in meson_pcie_probe()
425 return PTR_ERR(mp->reset_gpio); in meson_pcie_probe()
428 ret = meson_pcie_get_resets(mp); in meson_pcie_probe()
434 ret = meson_pcie_get_mems(pdev, mp); in meson_pcie_probe()
440 ret = meson_pcie_power_on(mp); in meson_pcie_probe()
446 ret = meson_pcie_reset(mp); in meson_pcie_probe()
452 ret = meson_pcie_probe_clocks(mp); in meson_pcie_probe()
458 platform_set_drvdata(pdev, mp); in meson_pcie_probe()
469 meson_pcie_power_off(mp); in meson_pcie_probe()