162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2006 Freescale Semiconductor, Inc. All rights reserved. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Authors: Shlomi Gridish <gridish@freescale.com> 662306a36Sopenharmony_ci * Li Yang <leoli@freescale.com> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Description: 962306a36Sopenharmony_ci * Internal header file for UCC unit routines. 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci#ifndef __UCC_H__ 1262306a36Sopenharmony_ci#define __UCC_H__ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <soc/fsl/qe/immap_qe.h> 1562306a36Sopenharmony_ci#include <soc/fsl/qe/qe.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define STATISTICS 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define UCC_MAX_NUM 8 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci/* Slow or fast type for UCCs. 2262306a36Sopenharmony_ci*/ 2362306a36Sopenharmony_cienum ucc_speed_type { 2462306a36Sopenharmony_ci UCC_SPEED_TYPE_FAST = UCC_GUEMR_MODE_FAST_RX | UCC_GUEMR_MODE_FAST_TX, 2562306a36Sopenharmony_ci UCC_SPEED_TYPE_SLOW = UCC_GUEMR_MODE_SLOW_RX | UCC_GUEMR_MODE_SLOW_TX 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* ucc_set_type 2962306a36Sopenharmony_ci * Sets UCC to slow or fast mode. 3062306a36Sopenharmony_ci * 3162306a36Sopenharmony_ci * ucc_num - (In) number of UCC (0-7). 3262306a36Sopenharmony_ci * speed - (In) slow or fast mode for UCC. 3362306a36Sopenharmony_ci */ 3462306a36Sopenharmony_ciint ucc_set_type(unsigned int ucc_num, enum ucc_speed_type speed); 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciint ucc_set_qe_mux_mii_mng(unsigned int ucc_num); 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciint ucc_set_qe_mux_rxtx(unsigned int ucc_num, enum qe_clock clock, 3962306a36Sopenharmony_ci enum comm_dir mode); 4062306a36Sopenharmony_ciint ucc_set_tdm_rxtx_clk(unsigned int tdm_num, enum qe_clock clock, 4162306a36Sopenharmony_ci enum comm_dir mode); 4262306a36Sopenharmony_ciint ucc_set_tdm_rxtx_sync(unsigned int tdm_num, enum qe_clock clock, 4362306a36Sopenharmony_ci enum comm_dir mode); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciint ucc_mux_set_grant_tsa_bkpt(unsigned int ucc_num, int set, u32 mask); 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci/* QE MUX clock routing for UCC 4862306a36Sopenharmony_ci*/ 4962306a36Sopenharmony_cistatic inline int ucc_set_qe_mux_grant(unsigned int ucc_num, int set) 5062306a36Sopenharmony_ci{ 5162306a36Sopenharmony_ci return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_GRANT); 5262306a36Sopenharmony_ci} 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cistatic inline int ucc_set_qe_mux_tsa(unsigned int ucc_num, int set) 5562306a36Sopenharmony_ci{ 5662306a36Sopenharmony_ci return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_TSA); 5762306a36Sopenharmony_ci} 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistatic inline int ucc_set_qe_mux_bkpt(unsigned int ucc_num, int set) 6062306a36Sopenharmony_ci{ 6162306a36Sopenharmony_ci return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_BKPT); 6262306a36Sopenharmony_ci} 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci#endif /* __UCC_H__ */ 65