1299994Sadrian/*- 2299994Sadrian * Copyright (c) 2016 Michael Zhilin <mizhka@gmail.com> 3299994Sadrian * 4299994Sadrian * All rights reserved. 5299994Sadrian * 6299994Sadrian * Redistribution and use in source and binary forms, with or without 7299994Sadrian * modification, are permitted provided that the following conditions 8299994Sadrian * are met: 9299994Sadrian * 1. Redistributions of source code must retain the above copyright 10299994Sadrian * notice, this list of conditions and the following disclaimer. 11299994Sadrian * 2. Redistributions in binary form must reproduce the above copyright 12299994Sadrian * notice, this list of conditions and the following disclaimer in the 13299994Sadrian * documentation and/or other materials provided with the distribution. 14299994Sadrian * 15299994Sadrian * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16299994Sadrian * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17299994Sadrian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18299994Sadrian * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19299994Sadrian * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20299994Sadrian * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21299994Sadrian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22299994Sadrian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23299994Sadrian * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24299994Sadrian * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25299994Sadrian * SUCH DAMAGE. 26299994Sadrian */ 27299994Sadrian 28299994Sadrian/* 29299994Sadrian * $FreeBSD$ 30299994Sadrian */ 31299994Sadrian 32299994Sadrian#ifndef _MIPS_BROADCOM_BCM_SOCINFO_H_ 33299994Sadrian#define _MIPS_BROADCOM_BCM_SOCINFO_H_ 34299994Sadrian 35299994Sadrian#include <machine/cpuregs.h> 36299994Sadrian 37299994Sadrianstruct bcm_socinfo { 38302190Slandonf uint32_t id; 39302190Slandonf uint32_t cpurate; /* in MHz */ 40302190Slandonf uint32_t uartrate; /* in Hz */ 41302190Slandonf int double_count; 42299994Sadrian}; 43299994Sadrian 44299994Sadrianstruct bcm_socinfo* bcm_get_socinfo_by_socid(uint32_t key); 45299994Sadrianstruct bcm_socinfo* bcm_get_socinfo(void); 46299994Sadrian 47299994Sadrian#define BCM_SOCADDR 0x18000000 48299994Sadrian#define BCM_REG_CHIPC_ID 0x0 49299994Sadrian#define BCM_REG_CHIPC_UART 0x300 50299994Sadrian#define BCM_REG_CHIPC_PMUWD_OFFS 0x634 51299994Sadrian#define BCM_SOCREG(reg) \ 52299994Sadrian MIPS_PHYS_TO_KSEG1((BCM_SOCADDR + (reg))) 53299994Sadrian#define BCM_READ_REG32(reg) \ 54299994Sadrian *((volatile uint32_t *)BCM_SOCREG(reg)) 55299994Sadrian#define BCM_WRITE_REG32(reg, value) \ 56299994Sadrian do { \ 57299994Sadrian writel((void*)BCM_SOCREG((reg)),value); \ 58299994Sadrian } while (0); 59299994Sadrian 60299994Sadrian#endif /* _MIPS_BROADCOM_BCM_SOCINFO_H_ */ 61