Lines Matching +full:target +full:- +full:supply
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * pci-vr41xx.c, PCI Control Unit routines for the NEC VR4100 series.
5 * Copyright (C) 2001-2003 MontaVista Software Inc.
7 * Copyright (C) 2004-2008 Yoichi Yuasa <yuasa@linux-mips.org>
8 * Copyright (C) 2004 by Ralf Baechle (ralf@linux-mips.org)
13 * - New creation, NEC VR4122 and VR4131 are supported.
24 #include "pci-vr41xx.h"
101 struct pci_target_address_conversion *target; in vr41xx_pciu_init() local
110 return -EBUSY; in vr41xx_pciu_init()
115 return -EBUSY; in vr41xx_pciu_init()
121 /* Supply VTClock to PCIU */ in vr41xx_pciu_init()
124 /* Dummy write, waiting for supply of VTClock. */ in vr41xx_pciu_init()
128 if (setup->pci_clock_max != 0) in vr41xx_pciu_init()
129 pci_clock_max = setup->pci_clock_max; in vr41xx_pciu_init()
145 return -EINVAL; in vr41xx_pciu_init()
148 /* Supply PCI clock by PCI bus */ in vr41xx_pciu_init()
151 if (setup->master_memory1 != NULL) { in vr41xx_pciu_init()
152 master = setup->master_memory1; in vr41xx_pciu_init()
153 val = IBA(master->bus_base_address) | in vr41xx_pciu_init()
154 MASTER_MSK(master->address_mask) | in vr41xx_pciu_init()
156 PCIA(master->pci_base_address); in vr41xx_pciu_init()
164 if (setup->master_memory2 != NULL) { in vr41xx_pciu_init()
165 master = setup->master_memory2; in vr41xx_pciu_init()
166 val = IBA(master->bus_base_address) | in vr41xx_pciu_init()
167 MASTER_MSK(master->address_mask) | in vr41xx_pciu_init()
169 PCIA(master->pci_base_address); in vr41xx_pciu_init()
177 if (setup->target_memory1 != NULL) { in vr41xx_pciu_init()
178 target = setup->target_memory1; in vr41xx_pciu_init()
179 val = TARGET_MSK(target->address_mask) | in vr41xx_pciu_init()
181 ITA(target->bus_base_address); in vr41xx_pciu_init()
189 if (setup->target_memory2 != NULL) { in vr41xx_pciu_init()
190 target = setup->target_memory2; in vr41xx_pciu_init()
191 val = TARGET_MSK(target->address_mask) | in vr41xx_pciu_init()
193 ITA(target->bus_base_address); in vr41xx_pciu_init()
201 if (setup->master_io != NULL) { in vr41xx_pciu_init()
202 master = setup->master_io; in vr41xx_pciu_init()
203 val = IBA(master->bus_base_address) | in vr41xx_pciu_init()
204 MASTER_MSK(master->address_mask) | in vr41xx_pciu_init()
206 PCIIA(master->pci_base_address); in vr41xx_pciu_init()
214 if (setup->exclusive_access == CANNOT_LOCK_FROM_DEVICE) in vr41xx_pciu_init()
220 pciu_write(PCITRDYVREG, TRDYV(setup->wait_time_limit_from_irdy_to_trdy)); in vr41xx_pciu_init()
222 pciu_write(LATTIMEREG, MLTIM(setup->master_latency_timer)); in vr41xx_pciu_init()
224 if (setup->mailbox != NULL) { in vr41xx_pciu_init()
225 mailbox = setup->mailbox; in vr41xx_pciu_init()
226 val = MBADD(mailbox->base_address) | TYPE_32BITSPACE | in vr41xx_pciu_init()
231 if (setup->target_window1) { in vr41xx_pciu_init()
232 window = setup->target_window1; in vr41xx_pciu_init()
233 val = PMBA(window->base_address) | TYPE_32BITSPACE | in vr41xx_pciu_init()
238 if (setup->target_window2) { in vr41xx_pciu_init()
239 window = setup->target_window2; in vr41xx_pciu_init()
240 val = PMBA(window->base_address) | TYPE_32BITSPACE | in vr41xx_pciu_init()
247 val |= RTYVAL(setup->retry_limit); in vr41xx_pciu_init()
253 switch (setup->arbiter_priority_control) { in vr41xx_pciu_init()
265 if (setup->take_away_gnt_mode == PCI_TAKE_AWAY_GNT_ENABLE) in vr41xx_pciu_init()
279 if (setup->mem_resource != NULL) in vr41xx_pciu_init()
280 vr41xx_pci_controller.mem_resource = setup->mem_resource; in vr41xx_pciu_init()
282 if (setup->io_resource != NULL) { in vr41xx_pciu_init()
283 vr41xx_pci_controller.io_resource = setup->io_resource; in vr41xx_pciu_init()
290 if (setup->master_io) { in vr41xx_pciu_init()
293 master = setup->master_io; in vr41xx_pciu_init()
294 io_map_base = ioremap(master->bus_base_address, in vr41xx_pciu_init()
297 return -EBUSY; in vr41xx_pciu_init()