/** @file
Copyright (c) 2016 - 2017, Socionext Inc. All rights reserved.
Copyright (c) 2017, Linaro, Ltd. All rights reserved.
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);
}