/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #include "plat_addr_map.h" #ifdef BTDUMP_BASE #include "hal_cmu.h" #include "hal_btdump.h" #define BTDUMP_DMA_CTL_REG_OFFSET 0x30 #define BTDUMP_DMA_CTL_MASK 0xFFFFFFFE #define BTDUMP_DEVICE_EN_MASK 0xFFFFFFFE #define BTDUMP_FM_PSD_MASK 0xFFFFFFDF #define BTDUMP_DEVICE_EN (1 << 0) #define BTDUMP_DMA_CTL_EN (1 << 0) #define BTDUMP_FM_PSD_EN (1 << 5) #define BTDUMP_DMA_CTL_DISABLE (0 << 0) #define BTDUMP_DEVICE_DISABLE (0 << 0) #define btdump_read32(b,a) \ (*(volatile uint32_t *)(b+a)) #define btdump_write32(v,b,a) \ ((*(volatile uint32_t *)(b+a)) = v) void hal_btdump_clk_enable(void) { hal_cmu_clock_enable(HAL_CMU_MOD_H_BT_DUMP); hal_cmu_reset_clear(HAL_CMU_MOD_H_BT_DUMP); } void hal_btdump_clk_disable(void) { hal_cmu_reset_set(HAL_CMU_MOD_H_BT_DUMP); hal_cmu_clock_disable(HAL_CMU_MOD_H_BT_DUMP); } void hal_btdump_enable(void) { uint32_t val; val = btdump_read32(BTDUMP_BASE,BTDUMP_DMA_CTL_REG_OFFSET); val &= BTDUMP_DMA_CTL_MASK; val |= BTDUMP_DMA_CTL_EN; btdump_write32(val,BTDUMP_BASE,BTDUMP_DMA_CTL_REG_OFFSET); val = btdump_read32(BTDUMP_BASE,0); val &= BTDUMP_DEVICE_EN_MASK; val |= BTDUMP_DEVICE_EN; val &= BTDUMP_FM_PSD_MASK; val |= BTDUMP_FM_PSD_EN; btdump_write32(val,BTDUMP_BASE,0); } void hal_btdump_disable(void) { uint32_t val; val = btdump_read32(BTDUMP_BASE,BTDUMP_DMA_CTL_REG_OFFSET); val &= BTDUMP_DMA_CTL_MASK; val |= BTDUMP_DMA_CTL_DISABLE; btdump_write32(val,BTDUMP_BASE,BTDUMP_DMA_CTL_REG_OFFSET); val = btdump_read32(BTDUMP_BASE,0); val &= BTDUMP_DEVICE_EN_MASK; val |= BTDUMP_DEVICE_DISABLE; btdump_write32(val,BTDUMP_BASE,0); } #endif