Changeset d62a3df in rtems-libbsd
- Timestamp:
- 01/17/18 12:28:45 (6 years ago)
- Branches:
- 5, 5-freebsd-12, 6-freebsd-12, master
- Children:
- 327f4e1
- Parents:
- f5ed3aa
- git-author:
- Sebastian Huber <sebastian.huber@…> (01/17/18 12:28:45)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (01/23/18 13:55:31)
- Files:
-
- 9 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
libbsd.py
rf5ed3aa rd62a3df 4540 4540 'drivers/net/ethernet/freescale/dpaa/dpaa_eth.h', 4541 4541 'drivers/net/ethernet/freescale/dpaa/dpaa_eth_trace.h', 4542 'drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h', 4543 'drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.h', 4544 'drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.h', 4542 4545 'drivers/soc/fsl/qbman/qman_priv.h', 4543 4546 'drivers/soc/fsl/qbman/bman_test.h', … … 4558 4561 'drivers/net/ethernet/freescale/fman/fman_tgec.c', 4559 4562 'drivers/net/ethernet/freescale/fman/mac.c', 4563 'drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.c', 4564 'drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_macless.c', 4560 4565 'drivers/soc/fsl/qbman/bman.c', 4561 4566 'drivers/soc/fsl/qbman/bman_ccsr.c', … … 4577 4582 'sys/powerpc/linux_compat.c', 4578 4583 'sys/powerpc/drivers/net/ethernet/freescale/dpaa/if_fmanmac.c', 4584 'sys/powerpc/drivers/net/ethernet/freescale/sdk_dpaa/if_ml.c', 4579 4585 ], 4580 4586 mm.generator['source']() -
libbsd_waf.py
rf5ed3aa rd62a3df 2439 2439 'linux/drivers/net/ethernet/freescale/fman/fman_tgec.c', 2440 2440 'linux/drivers/net/ethernet/freescale/fman/mac.c', 2441 'linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.c', 2442 'linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_macless.c', 2441 2443 'linux/drivers/soc/fsl/qbman/bman.c', 2442 2444 'linux/drivers/soc/fsl/qbman/bman_ccsr.c', … … 2449 2451 'rtemsbsd/sys/powerpc/compat.c', 2450 2452 'rtemsbsd/sys/powerpc/drivers/net/ethernet/freescale/dpaa/if_fmanmac.c', 2453 'rtemsbsd/sys/powerpc/drivers/net/ethernet/freescale/sdk_dpaa/if_ml.c', 2451 2454 'rtemsbsd/sys/powerpc/fdt_phy.c', 2452 2455 'rtemsbsd/sys/powerpc/fman_muram.c', -
linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
rf5ed3aa rd62a3df 3374 3374 MODULE_DESCRIPTION("FSL DPAA Ethernet driver"); 3375 3375 #endif /* __rtems__ */ 3376 #ifdef __rtems__ 3377 static enum qman_cb_dqrr_result 3378 shared_rx_dqrr(struct qman_portal *portal, struct qman_fq *fq, 3379 const struct qm_dqrr_entry *dq) 3380 { 3381 const struct qm_fd *fd; 3382 struct net_device *net_dev; 3383 struct ifnet *ifp; 3384 u32 fd_status; 3385 enum qm_fd_format fd_format; 3386 struct mbuf *m; 3387 int len; 3388 void *dst; 3389 3390 fd = &dq->fd; 3391 fd_status = be32_to_cpu(fd->status); 3392 fd_format = qm_fd_get_format(fd); 3393 net_dev = ((struct dpaa_fq *)fq)->net_dev; 3394 ifp = net_dev->ifp; 3395 3396 if (unlikely(fd_status & FM_FD_STAT_RX_ERRORS) != 0) { 3397 if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); 3398 goto out; 3399 } 3400 3401 BSD_ASSERT((be32_to_cpu(fd->status) & FM_FD_STAT_L4CV) == 0); 3402 BSD_ASSERT(fd_format == qm_fd_contig); 3403 3404 m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); 3405 if (unlikely(m == NULL)) { 3406 if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1); 3407 goto out; 3408 } 3409 3410 len = qm_fd_get_length(fd); 3411 dst = mtod(m, char *) + ETHER_ALIGN; 3412 m->m_pkthdr.rcvif = ifp; 3413 m->m_pkthdr.len = len; 3414 m->m_len = len; 3415 m->m_data = dst; 3416 memcpy(dst, (const void *)(qm_fd_addr(fd) + 3417 qm_fd_get_offset(fd)), (size_t)len); 3418 3419 if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); 3420 (*ifp->if_input)(ifp, m); 3421 3422 out: 3423 3424 dpaa_fd_release(net_dev, fd); 3425 return (qman_cb_dqrr_consume); 3426 } 3427 3428 static enum qman_cb_dqrr_result 3429 shared_tx_error_dqrr(struct qman_portal *portal, struct qman_fq *fq, 3430 const struct qm_dqrr_entry *dq) 3431 { 3432 BSD_ASSERT(0); 3433 return (qman_cb_dqrr_consume); 3434 } 3435 3436 static enum qman_cb_dqrr_result 3437 shared_tx_default_dqrr(struct qman_portal *portal, struct qman_fq *fq, 3438 const struct qm_dqrr_entry *dq) 3439 { 3440 BSD_ASSERT(0); 3441 return (qman_cb_dqrr_consume); 3442 } 3443 3444 static void shared_ern(struct qman_portal *portal, struct qman_fq *fq, 3445 const union qm_mr_entry *msg) 3446 { 3447 BSD_ASSERT(0); 3448 } 3449 3450 const struct dpaa_fq_cbs shared_fq_cbs = { 3451 .rx_defq = { .cb = { .dqrr = shared_rx_dqrr } }, 3452 .tx_defq = { .cb = { .dqrr = shared_tx_default_dqrr } }, 3453 .rx_errq = { .cb = { .dqrr = shared_rx_dqrr } }, 3454 .tx_errq = { .cb = { .dqrr = shared_tx_error_dqrr } }, 3455 .egress_ern = { .cb = { .ern = shared_ern } } 3456 }; 3457 #endif /* __rtems__ */ -
linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h
rf5ed3aa rd62a3df 216 216 void dpaa_cleanup_tx_fd(struct ifnet *ifp, const struct qm_fd *fd); 217 217 218 /* Compatibility for SDK DPAA */ 219 220 extern const struct dpaa_fq_cbs shared_fq_cbs; 221 218 222 #ifdef QORIQ_IS_HYPERVISOR_GUEST 219 223 int dpaa_bp_alloc_pool(struct dpaa_bp *dpaa_bp); -
linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.c
rf5ed3aa rd62a3df 60 60 MODULE_LICENSE("Dual BSD/GPL"); 61 61 62 #ifndef __rtems__ 62 63 uint8_t advanced_debug = -1; 63 64 module_param(advanced_debug, byte, S_IRUGO); 64 65 MODULE_PARM_DESC(advanced_debug, "Module/Driver verbosity level"); 65 66 EXPORT_SYMBOL(advanced_debug); 67 #endif /* __rtems__ */ 66 68 67 69 static int dpa_bp_cmp(const void *dpa_bp0, const void *dpa_bp1) … … 77 79 struct device *dev; 78 80 struct device_node *dev_node; 81 #ifdef __rtems__ 82 struct device_node dns; 83 #endif /* __rtems__ */ 79 84 const __be32 *bpool_cfg; 80 85 struct dpa_bp *dpa_bp; … … 96 101 } 97 102 103 #ifndef __rtems__ 98 104 dev_node = of_find_node_by_path("/"); 105 #else /* __rtems__ */ 106 dev_node = of_find_node_by_path(&dns, "/"); 107 #endif /* __rtems__ */ 99 108 if (unlikely(dev_node == NULL)) { 100 109 dev_err(dev, "of_find_node_by_path(/) failed\n"); … … 108 117 of_node_put(dev_node); 109 118 119 #ifndef __rtems__ 110 120 dev_node = of_parse_phandle(dev->of_node, 111 121 "fsl,bman-buffer-pools", i); 122 #else /* __rtems__ */ 123 dev_node = of_parse_phandle(&dns, dev->of_node, 124 "fsl,bman-buffer-pools", i); 125 #endif /* __rtems__ */ 112 126 if (dev_node == NULL) { 113 127 dev_err(dev, "of_find_node_by_phandle() failed\n"); … … 134 148 &lenp); 135 149 if (bpool_cfg && (lenp == (2 * ns + na) * sizeof(*bpool_cfg))) { 150 #ifndef __rtems__ 136 151 const uint32_t *seed_pool; 152 #endif /* __rtems__ */ 137 153 138 154 dpa_bp[i].config_count = … … 140 156 dpa_bp[i].size = 141 157 (size_t)of_read_number(bpool_cfg + ns, ns); 158 #ifndef __rtems__ 142 159 dpa_bp[i].paddr = 143 160 of_read_number(bpool_cfg + 2 * ns, na); … … 146 163 "fsl,bpool-ethernet-seeds", &lenp); 147 164 dpa_bp[i].seed_pool = !!seed_pool; 165 #endif /* __rtems__ */ 148 166 149 167 } else { … … 168 186 EXPORT_SYMBOL(dpa_bp_probe); 169 187 188 #ifndef __rtems__ 170 189 int dpa_bp_shared_port_seed(struct dpa_bp *bp) 171 190 { … … 264 283 } 265 284 module_exit(dpa_advanced_unload); 285 #endif /* __rtems__ */ -
linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_base.h
rf5ed3aa rd62a3df 40 40 extern uint8_t advanced_debug; 41 41 extern const struct dpa_fq_cbs_t shared_fq_cbs; 42 #ifndef __rtems__ 42 43 extern int __hot dpa_shared_tx(struct sk_buff *skb, struct net_device *net_dev); 44 #endif /* __rtems__ */ 43 45 44 46 struct dpa_bp * __cold __must_check /* __attribute__((nonnull)) */ -
linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_common.h
rf5ed3aa rd62a3df 41 41 #include "lnxwrp_fsl_fman.h" 42 42 43 #ifndef __rtems__ 43 44 #define dpaa_eth_init_port(type, port, param, errq_id, defq_id, buf_layout,\ 44 45 frag_enabled) \ … … 168 169 void dpa_set_buffers_layout(struct mac_device *mac_dev, 169 170 struct dpa_buffer_layout_s *layout); 171 #endif /* __rtems__ */ 170 172 int __attribute__((nonnull)) 171 173 dpa_bp_alloc(struct dpa_bp *dpa_bp); 172 174 void __cold __attribute__((nonnull)) 173 175 dpa_bp_free(struct dpa_priv_s *priv); 176 #ifndef __rtems__ 174 177 struct dpa_bp *dpa_bpid2pool(int bpid); 175 178 void dpa_bpid2pool_map(int bpid, struct dpa_bp *dpa_bp); … … 226 229 int dpa_proxy_set_rx_mode(struct proxy_device *proxy_dev, 227 230 struct net_device *net_dev); 231 #endif /* __rtems__ */ 228 232 229 233 #endif /* __DPAA_ETH_COMMON_H */ -
linux/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_macless.c
rf5ed3aa rd62a3df 1 1 #include <machine/rtems-bsd-kernel-space.h> 2 3 #include <rtems/bsd/local/opt_dpaa.h> 2 4 3 5 /* Copyright 2008-2013 Freescale Semiconductor Inc. … … 62 64 #define DPA_DEFAULT_TX_HEADROOM 64 63 65 66 #ifndef __rtems__ 64 67 #define DPA_DESCRIPTION "FSL DPAA MACless Ethernet driver" 65 68 … … 79 82 void *addr); 80 83 static void __cold dpa_macless_set_rx_mode(struct net_device *net_dev); 84 #endif /* __rtems__ */ 81 85 82 86 static int dpaa_eth_macless_probe(struct platform_device *_of_dev); 87 #ifndef __rtems__ 83 88 static netdev_features_t 84 89 dpa_macless_fix_features(struct net_device *dev, netdev_features_t features); … … 119 124 .remove = dpa_remove 120 125 }; 126 #endif /* __rtems__ */ 121 127 122 128 static const char macless_frame_queues[][25] = { … … 125 131 }; 126 132 133 #ifndef __rtems__ 127 134 static int __cold dpa_macless_start(struct net_device *net_dev) 128 135 { … … 236 243 } 237 244 } 245 #endif /* __rtems__ */ 238 246 239 247 /* Probing of FQs for MACless ports */ … … 272 280 struct device *dev; 273 281 const phandle *proxy_prop; 282 #ifndef __rtems__ 274 283 struct proxy_device *proxy_dev; 275 284 struct device_node *proxy_node; 276 285 struct platform_device *proxy_pdev; 286 #endif /* __rtems__ */ 277 287 int lenp; 278 288 … … 283 293 return NULL; 284 294 295 #ifndef __rtems__ 285 296 proxy_node = of_find_node_by_phandle(*proxy_prop); 286 297 if (!proxy_node) { … … 301 312 302 313 return proxy_dev; 314 #else /* __rtems__ */ 315 BSD_ASSERT(0); 316 return (NULL); 317 #endif /* __rtems__ */ 303 318 } 304 319 … … 314 329 struct dpa_percpu_priv_s *percpu_priv; 315 330 static struct proxy_device *proxy_dev; 331 #ifndef __rtems__ 316 332 struct task_struct *kth; 317 333 static u8 macless_idx; 334 #else /* __rtems__ */ 335 struct dpaa_fq *dpaa_fq, *tmp; 336 #endif /* __rtems__ */ 318 337 319 338 dev = &_of_dev->dev; … … 329 348 return PTR_ERR(dpa_bp); 330 349 350 #ifndef __rtems__ 331 351 for (i = 0; i < count; i++) 332 352 dpa_bp[i].seed_cb = dpa_bp_shared_port_seed; 353 #endif /* __rtems__ */ 333 354 334 355 proxy_dev = dpa_macless_proxy_probe(_of_dev); 335 356 336 357 358 #ifndef __rtems__ 337 359 /* Allocate this early, so we can store relevant information in 338 360 * the private area (needed by 1588 code in dpa_mac_probe) … … 346 368 /* Do this here, so we can be verbose early */ 347 369 SET_NETDEV_DEV(net_dev, dev); 370 #else /* __rtems__ */ 371 net_dev = _of_dev->platform_data; 372 #endif /* __rtems__ */ 348 373 dev_set_drvdata(dev, net_dev); 349 374 375 #ifndef __rtems__ 350 376 priv = netdev_priv(net_dev); 377 #else /* __rtems__ */ 378 priv = malloc(sizeof(*priv), M_KMALLOC, M_WAITOK | M_ZERO); 379 net_dev->priv = priv; 380 #endif /* __rtems__ */ 351 381 priv->net_dev = net_dev; 382 #ifndef __rtems__ 352 383 sprintf(priv->if_type, "macless%d", macless_idx++); 353 384 … … 371 402 priv->peer = (void *)proxy_dev; 372 403 } 404 #else /* __rtems__ */ 405 (void)proxy_dev; 406 #endif /* __rtems__ */ 373 407 374 408 INIT_LIST_HEAD(&priv->dpa_fq_list); … … 382 416 383 417 /* bp init */ 418 #ifndef __rtems__ 384 419 priv->bp_count = count; 385 420 err = dpa_bp_create(net_dev, dpa_bp, count); 386 421 if (err < 0) 387 422 goto bp_create_failed; 423 #else /* __rtems__ */ 424 BSD_ASSERT(count == DPAA_BPS_NUM); 425 for (i = 0; i < DPAA_BPS_NUM; i++) { 426 int err; 427 428 dpa_bp[i].raw_size = dpa_bp[i].size; 429 dpa_bp[i].dev = dev; 430 431 err = dpaa_bp_alloc_pool(&dpa_bp[i]); 432 BSD_ASSERT(err == 0); 433 priv->dpaa_bps[i] = &dpa_bp[i]; 434 } 435 #endif /* __rtems__ */ 388 436 389 437 channel = dpa_get_channel(); … … 399 447 * and add this pool channel to each's dequeue mask. 400 448 */ 449 #ifndef __rtems__ 401 450 kth = kthread_run(dpaa_eth_add_channel, 402 451 (void *)(unsigned long)priv->channel, … … 406 455 goto add_channel_failed; 407 456 } 457 #else /* __rtems__ */ 458 dpaa_eth_add_channel(priv->channel); 459 #endif /* __rtems__ */ 408 460 409 461 dpa_fq_setup(priv, &shared_fq_cbs, NULL); … … 418 470 * partition doing qman_enqueue. 419 471 */ 472 #ifndef __rtems__ 420 473 err = dpa_fqs_init(dev, &priv->dpa_fq_list, true); 421 474 if (err < 0) 422 475 goto fq_alloc_failed; 476 #else /* __rtems__ */ 477 list_for_each_entry_safe(dpaa_fq, tmp, &priv->dpaa_fq_list, list) { 478 err = dpaa_fq_init(dpaa_fq, true); 479 if (err < 0) 480 goto fq_alloc_failed; 481 } 482 #endif /* __rtems__ */ 423 483 424 484 priv->tx_headroom = DPA_DEFAULT_TX_HEADROOM; … … 436 496 } 437 497 498 #ifndef __rtems__ 438 499 err = dpa_macless_netdev_init(dpa_node, net_dev); 439 500 if (err < 0) … … 444 505 pr_info("fsl_dpa_macless: Probed %s interface as %s\n", 445 506 priv->if_type, net_dev->name); 507 #endif /* __rtems__ */ 446 508 447 509 return 0; 448 510 511 #ifndef __rtems__ 449 512 netdev_init_failed: 513 #endif /* __rtems__ */ 450 514 alloc_percpu_failed: 451 515 fq_alloc_failed: 516 #ifndef __rtems__ 452 517 if (net_dev) 453 518 dpa_fq_free(dev, &priv->dpa_fq_list); 454 519 add_channel_failed: 520 #endif /* __rtems__ */ 455 521 get_channel_failed: 522 #ifndef __rtems__ 456 523 if (net_dev) 457 524 dpa_bp_free(priv); 458 525 bp_create_failed: 526 #endif /* __rtems__ */ 459 527 fq_probe_failed: 528 #ifndef __rtems__ 460 529 dev_set_drvdata(dev, NULL); 461 530 if (net_dev) 462 531 free_netdev(net_dev); 532 #else /* __rtems__ */ 533 BSD_ASSERT(0); 534 #endif /* __rtems__ */ 463 535 464 536 return err; 465 537 } 466 538 539 #ifndef __rtems__ 467 540 static int __init __cold dpa_macless_load(void) 468 541 { … … 497 570 } 498 571 module_exit(dpa_macless_unload); 572 #else /* __rtems__ */ 573 #include <sys/cdefs.h> 574 #include <sys/param.h> 575 #include <sys/systm.h> 576 #include <sys/bus.h> 577 #include <sys/kernel.h> 578 579 #include <bsp/fdt.h> 580 581 static const char dpaa_ml_compatible[] = "fsl,dpa-ethernet-macless"; 582 583 static int 584 dpaa_ml_attach(device_t dev) 585 { 586 const char *fdt; 587 int node; 588 int unit; 589 590 fdt = bsp_fdt_get(); 591 node = -1; 592 unit = 0; 593 594 while (true) { 595 struct if_ml_softc *sc; 596 struct platform_device of_dev; 597 struct device_node dn; 598 int err; 599 600 node = fdt_node_offset_by_compatible(fdt, node, dpaa_ml_compatible); 601 if (node < 0) { 602 break; 603 } 604 605 sc = malloc(sizeof(*sc), M_KMALLOC, M_WAITOK | M_ZERO); 606 607 memset(&of_dev, 0, sizeof(of_dev)); 608 memset(&dn, 0, sizeof(dn)); 609 dn.offset = node; 610 dn.full_name = dpaa_ml_compatible; 611 of_dev.dev.of_node = &dn; 612 of_dev.platform_data = &sc->net_dev; 613 614 err = dpaa_eth_macless_probe(&of_dev); 615 BSD_ASSERT(err == 0); 616 617 if_ml_attach(sc, unit, of_get_mac_address(&dn)); 618 ++unit; 619 } 620 621 return (0); 622 } 623 624 static device_method_t dpaa_ml_methods[] = { 625 /* Device interface */ 626 DEVMETHOD(device_probe, bus_generic_probe), 627 DEVMETHOD(device_attach, dpaa_ml_attach), 628 DEVMETHOD(device_detach, bus_generic_detach), 629 DEVMETHOD(device_suspend, bus_generic_suspend), 630 DEVMETHOD(device_resume, bus_generic_resume), 631 DEVMETHOD(device_shutdown, bus_generic_shutdown), 632 633 DEVMETHOD_END 634 }; 635 636 driver_t dpaa_ml_driver = { 637 .name = "dpaa_ml", 638 .methods = dpaa_ml_methods 639 }; 640 641 static devclass_t dpaa_ml_devclass; 642 643 DRIVER_MODULE(dpaa_ml, nexus, dpaa_ml_driver, dpaa_ml_devclass, 0, 0); 644 #endif /* __rtems__ */ -
rtemsbsd/include/bsp/nexus-devices.h
rf5ed3aa rd62a3df 147 147 #include <bsp/irq.h> 148 148 149 #ifdef QORIQ_IS_HYPERVISOR_GUEST 150 151 RTEMS_BSD_DEFINE_NEXUS_DEVICE(dpaa_ml, 0, 0, NULL); 152 153 #else /* !QORIQ_IS_HYPERVISOR_GUEST */ 154 149 155 RTEMS_BSD_DEFINE_NEXUS_DEVICE(fman, 0, 0, NULL); 150 156 RTEMS_BSD_DEFINE_NEXUS_DEVICE(fman, 1, 0, NULL); … … 153 159 SYSINIT_DRIVER_REFERENCE(fman_port, fman_mac); 154 160 SYSINIT_DRIVER_REFERENCE(ukphy, miibus); 161 162 #endif /* QORIQ_IS_HYPERVISOR_GUEST */ 155 163 156 164 #else /* QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT) */
Note: See TracChangeset
for help on using the changeset viewer.