RTEMS: bsps/arm/lpc32xx/include/bsp/lpc-ethernet-config.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
lpc-ethernet-config.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2009
11 * embedded brains GmbH
12 * Obere Lagerstr. 30
13 * D-82178 Puchheim
14 * Germany
15 * <rtems@embedded-brains.de>
16 *
17 * The license and distribution terms for this file may be
18 * found in the file LICENSE in this distribution or at
19 * http://www.rtems.org/license/LICENSE.
20 */
21
22#ifndef LIBBSP_ARM_LPC32XX_LPC_ETHERNET_CONFIG_H
23#define LIBBSP_ARM_LPC32XX_LPC_ETHERNET_CONFIG_H
24
25#include <stdlib.h>
26#include <limits.h>
27
28#include <rtems.h>
29#include <rtems/malloc.h>
30
31#include <bsp.h>
32#include <bsp/lpc32xx.h>
33
34#ifdef __cplusplus
35extern "C" {
36#endif /* __cplusplus */
37
48#define LPC_ETH_CONFIG_INTERRUPT LPC32XX_IRQ_ETHERNET
49
50#define LPC_ETH_CONFIG_REG_BASE LPC32XX_BASE_ETHERNET
51
52#define LPC_ETH_CONFIG_RX_UNIT_COUNT_DEFAULT 16
53#define LPC_ETH_CONFIG_RX_UNIT_COUNT_MAX INT_MAX
54
55#define LPC_ETH_CONFIG_TX_UNIT_COUNT_DEFAULT 32
56#define LPC_ETH_CONFIG_TX_UNIT_COUNT_MAX INT_MAX
57
58#define LPC_ETH_CONFIG_UNIT_MULTIPLE 8U
59
60#ifdef LPC32XX_ETHERNET_RMII
61 #define LPC_ETH_CONFIG_RMII
62
63 static void lpc_eth_config_module_enable(void)
64 {
65 LPC32XX_MAC_CLK_CTRL = 0x1f;
66 }
67#else
68 static void lpc_eth_config_module_enable(void)
69 {
70 LPC32XX_MAC_CLK_CTRL = 0x0f;
71 }
72#endif
73
74static void lpc_eth_config_module_disable(void)
75{
76 LPC32XX_MAC_CLK_CTRL = 0;
77}
78
79#define LPC_ETH_CONFIG_USE_TRANSMIT_DMA
80
81static char *lpc_eth_config_alloc_table_area(size_t size)
82{
83 return rtems_heap_allocate_aligned_with_boundary(size, 32, 0);
84}
85
86static void lpc_eth_config_free_table_area(char *table_area)
87{
88 /* FIXME: Type */
89 free(table_area, (int) 0xdeadbeef);
90}
91
94#ifdef __cplusplus
95}
96#endif /* __cplusplus */
97
98#endif /* LIBBSP_ARM_LPC32XX_LPC_ETHERNET_CONFIG_H */
lpc32xx.h
Register base addresses.
malloc.h
rtems_heap_allocate_aligned_with_boundary
void * rtems_heap_allocate_aligned_with_boundary(size_t size, uintptr_t alignment, uintptr_t boundary) RTEMS_MALLOCLIKE RTEMS_ALLOC_SIZE(1) RTEMS_ALLOC_ALIGN(2) RTEMS_WARN_UNUSED_RESULT
Allocates a memory area of size size bytes from the heap.
rtems.h