hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/** @file
 
  Copyright (c) 2016 - 2017, Socionext Inc. All rights reserved.<BR>
  Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#include "ogma_internal.h"
#include "ogma_basic_access.h"
 
/**********************************************************************
 * Function definitions
 **********************************************************************/
 
void ogma_set_mac_reg (
    ogma_ctrl_t *ctrl_p,
    ogma_uint32 addr,
    ogma_uint32 value)
{
 
    ogma_uint32 cmd;
 
    ogma_check_clk_supply( ctrl_p, OGMA_CLK_EN_REG_DOM_G);
 
    /*
     * Argument check is omitted because this function is
     * of private use only.
     */
 
    ogma_write_reg( ctrl_p,
                    OGMA_REG_ADDR_MAC_DATA,
                    value);
 
    cmd = addr | OGMA_GMAC_CMD_ST_WRITE;
 
    ogma_write_reg( ctrl_p,
                    OGMA_REG_ADDR_MAC_CMD,
                    cmd);
 
    /*
     * Waits until BUSY bit is cleared.
     */
    while ( ( ogma_read_reg( ctrl_p,
                             OGMA_REG_ADDR_MAC_CMD)
              & OGMA_GMAC_CMD_ST_BUSY)
            != 0) {
        ;
    }
}
 
ogma_uint32 ogma_get_mac_reg (
    ogma_ctrl_t *ctrl_p,
    ogma_uint32 addr)
{
    ogma_uint32 cmd;
 
    ogma_check_clk_supply( ctrl_p, OGMA_CLK_EN_REG_DOM_G);
 
    /*
     * Argument check is omitted because this function is
     * of private use only.
     */
 
    cmd = addr | OGMA_GMAC_CMD_ST_READ;
 
    ogma_write_reg( ctrl_p,
                    OGMA_REG_ADDR_MAC_CMD,
                    cmd);
 
    /*
     * Waits until BUSY bit is cleared.
     */
    while ( ( ogma_read_reg( ctrl_p,
                             OGMA_REG_ADDR_MAC_CMD)
              & OGMA_GMAC_CMD_ST_BUSY)
            != 0) {
        ;
    }
    return ogma_read_reg( ctrl_p, OGMA_REG_ADDR_MAC_DATA);
}