Merge ^/head r279893 through r279984.
This commit is contained in:
commit
e0125cfdd1
@ -318,6 +318,19 @@ LOCALBASE?= /usr/local
|
||||
CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
|
||||
CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
|
||||
.endif
|
||||
|
||||
# If we do not have a bootstrap binutils (because the in-tree one does not
|
||||
# support the target architecture), provide a default cross-binutils prefix.
|
||||
# This allows aarch64 builds, for example, to automatically use the
|
||||
# aarch64-binutils port or package.
|
||||
.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \
|
||||
!defined(CROSS_BINUTILS_PREFIX)
|
||||
CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_ARCH}-freebsd/bin/
|
||||
.if !exists(${CROSS_BINUTILS_PREFIX})
|
||||
.error In-tree binutils does not support the ${TARGET_ARCH} architecture. Install the ${TARGET_ARCH}-binutils port or package or set CROSS_BINUTILS_PREFIX.
|
||||
.endif
|
||||
.endif
|
||||
|
||||
XCOMPILERS= CC CXX CPP
|
||||
.for COMPILER in ${XCOMPILERS}
|
||||
.if defined(CROSS_COMPILER_PREFIX)
|
||||
@ -1484,7 +1497,6 @@ cross-tools: .MAKE
|
||||
${_binutils} \
|
||||
${_elftctools} \
|
||||
${_cc} \
|
||||
usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \
|
||||
${_btxld} \
|
||||
${_crunchide} \
|
||||
${_kgzip} \
|
||||
|
@ -169,7 +169,7 @@ filemon_read(FILE *mfp, int fd)
|
||||
if ((fp = fdopen(fd, "r")) == NULL)
|
||||
err(1, "Could not read build monitor file '%d'", fd);
|
||||
|
||||
fprintf(mfp, "-- filemon acquired metadata --\n");
|
||||
fprintf(mfp, "\n-- filemon acquired metadata --\n");
|
||||
|
||||
while (fgets(buf, sizeof(buf), fp)) {
|
||||
fprintf(mfp, "%s", buf);
|
||||
|
@ -6,40 +6,17 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixdfdi for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: double is a IEEE 64 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in double is representable in di_int (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
|
||||
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
ARM_EABI_FNALIAS(d2lz, fixdfdi)
|
||||
|
||||
typedef di_int fixint_t;
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI di_int
|
||||
__fixdfdi(double a)
|
||||
{
|
||||
double_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u.s.high & 0x7FF00000) >> 20) - 1023;
|
||||
if (e < 0)
|
||||
return 0;
|
||||
di_int s = (si_int)(fb.u.s.high & 0x80000000) >> 31;
|
||||
dwords r;
|
||||
r.s.high = (fb.u.s.high & 0x000FFFFF) | 0x00100000;
|
||||
r.s.low = fb.u.s.low;
|
||||
if (e > 52)
|
||||
r.all <<= (e - 52);
|
||||
else
|
||||
r.all >>= (52 - e);
|
||||
return (r.all ^ s) - s;
|
||||
}
|
||||
__fixdfdi(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
|
@ -1,50 +1,22 @@
|
||||
//===-- lib/fixdfsi.c - Double-precision -> integer conversion ----*- C -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements double-precision to integer conversion for the
|
||||
// compiler-rt library. No range checking is performed; the behavior of this
|
||||
// conversion is undefined for out of range values in the C standard.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
/* ===-- fixdfsi.c - Implement __fixdfsi -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#include "int_lib.h"
|
||||
typedef si_int fixint_t;
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(d2iz, fixdfsi)
|
||||
|
||||
COMPILER_RT_ABI int
|
||||
COMPILER_RT_ABI si_int
|
||||
__fixdfsi(fp_t a) {
|
||||
|
||||
// Break a into sign, exponent, significand
|
||||
const rep_t aRep = toRep(a);
|
||||
const rep_t aAbs = aRep & absMask;
|
||||
const int sign = aRep & signBit ? -1 : 1;
|
||||
const int exponent = (aAbs >> significandBits) - exponentBias;
|
||||
const rep_t significand = (aAbs & significandMask) | implicitBit;
|
||||
|
||||
// If 0 < exponent < significandBits, right shift to get the result.
|
||||
if ((unsigned int)exponent < significandBits) {
|
||||
return sign * (significand >> (significandBits - exponent));
|
||||
}
|
||||
|
||||
// If exponent is negative, the result is zero.
|
||||
else if (exponent < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// If significandBits < exponent, left shift to get the result. This shift
|
||||
// may end up being larger than the type width, which incurs undefined
|
||||
// behavior, but the conversion itself is undefined in that case, so
|
||||
// whatever the compiler decides to do is fine.
|
||||
else {
|
||||
return sign * (significand << (exponent - significandBits));
|
||||
}
|
||||
return __fixint(a);
|
||||
}
|
||||
|
@ -6,40 +6,21 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixdfti for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
#ifdef CRT_HAS_128BIT
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: double is a IEEE 64 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in double is representable in ti_int (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
|
||||
typedef ti_int fixint_t;
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI ti_int
|
||||
__fixdfti(double a)
|
||||
{
|
||||
double_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u.s.high & 0x7FF00000) >> 20) - 1023;
|
||||
if (e < 0)
|
||||
return 0;
|
||||
ti_int s = (si_int)(fb.u.s.high & 0x80000000) >> 31;
|
||||
ti_int r = 0x0010000000000000uLL | (0x000FFFFFFFFFFFFFuLL & fb.u.all);
|
||||
if (e > 52)
|
||||
r <<= (e - 52);
|
||||
else
|
||||
r >>= (52 - e);
|
||||
return (r ^ s) - s;
|
||||
__fixdfti(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
@ -1,43 +1,23 @@
|
||||
/* ===-- fixsfdi.c - Implement __fixsfdi -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixsfdi for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: float is a IEEE 32 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in float is representable in di_int (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define SINGLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
ARM_EABI_FNALIAS(f2lz, fixsfdi)
|
||||
|
||||
typedef di_int fixint_t;
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI di_int
|
||||
__fixsfdi(float a)
|
||||
{
|
||||
float_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u & 0x7F800000) >> 23) - 127;
|
||||
if (e < 0)
|
||||
return 0;
|
||||
di_int s = (si_int)(fb.u & 0x80000000) >> 31;
|
||||
di_int r = (fb.u & 0x007FFFFF) | 0x00800000;
|
||||
if (e > 23)
|
||||
r <<= (e - 23);
|
||||
else
|
||||
r >>= (23 - e);
|
||||
return (r ^ s) - s;
|
||||
__fixsfdi(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
|
@ -1,47 +1,22 @@
|
||||
//===-- lib/fixsfsi.c - Single-precision -> integer conversion ----*- C -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements single-precision to integer conversion for the
|
||||
// compiler-rt library. No range checking is performed; the behavior of this
|
||||
// conversion is undefined for out of range values in the C standard.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
/* ===-- fixsfsi.c - Implement __fixsfsi -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define SINGLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef si_int fixint_t;
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(f2iz, fixsfsi)
|
||||
|
||||
COMPILER_RT_ABI int
|
||||
COMPILER_RT_ABI si_int
|
||||
__fixsfsi(fp_t a) {
|
||||
// Break a into sign, exponent, significand
|
||||
const rep_t aRep = toRep(a);
|
||||
const rep_t aAbs = aRep & absMask;
|
||||
const int sign = aRep & signBit ? -1 : 1;
|
||||
const int exponent = (aAbs >> significandBits) - exponentBias;
|
||||
const rep_t significand = (aAbs & significandMask) | implicitBit;
|
||||
|
||||
// If 0 < exponent < significandBits, right shift to get the result.
|
||||
if ((unsigned int)exponent < significandBits) {
|
||||
return sign * (significand >> (significandBits - exponent));
|
||||
}
|
||||
|
||||
// If exponent is negative, the result is zero.
|
||||
else if (exponent < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// If significandBits < exponent, left shift to get the result. This shift
|
||||
// may end up being larger than the type width, which incurs undefined
|
||||
// behavior, but the conversion itself is undefined in that case, so
|
||||
// whatever the compiler decides to do is fine.
|
||||
else {
|
||||
return sign * (significand << (exponent - significandBits));
|
||||
}
|
||||
return __fixint(a);
|
||||
}
|
||||
|
@ -6,40 +6,21 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixsfti for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
#ifdef CRT_HAS_128BIT
|
||||
#define SINGLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: float is a IEEE 32 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in float is representable in ti_int (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */
|
||||
typedef ti_int fixint_t;
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI ti_int
|
||||
__fixsfti(float a)
|
||||
{
|
||||
float_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u & 0x7F800000) >> 23) - 127;
|
||||
if (e < 0)
|
||||
return 0;
|
||||
ti_int s = (si_int)(fb.u & 0x80000000) >> 31;
|
||||
ti_int r = (fb.u & 0x007FFFFF) | 0x00800000;
|
||||
if (e > 23)
|
||||
r <<= (e - 23);
|
||||
else
|
||||
r >>= (23 - e);
|
||||
return (r ^ s) - s;
|
||||
__fixsfti(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
23
contrib/compiler-rt/lib/builtins/fixtfdi.c
Normal file
23
contrib/compiler-rt/lib/builtins/fixtfdi.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* ===-- fixtfdi.c - Implement __fixtfdi -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef di_int fixint_t;
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI di_int
|
||||
__fixtfdi(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
#endif
|
23
contrib/compiler-rt/lib/builtins/fixtfsi.c
Normal file
23
contrib/compiler-rt/lib/builtins/fixtfsi.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* ===-- fixtfsi.c - Implement __fixtfsi -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef si_int fixint_t;
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI si_int
|
||||
__fixtfsi(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
#endif
|
23
contrib/compiler-rt/lib/builtins/fixtfti.c
Normal file
23
contrib/compiler-rt/lib/builtins/fixtfti.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* ===-- fixtfti.c - Implement __fixtfti -----------------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef ti_int fixint_t;
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI ti_int
|
||||
__fixtfti(fp_t a) {
|
||||
return __fixint(a);
|
||||
}
|
||||
#endif
|
@ -6,42 +6,16 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixunsdfdi for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: double is a IEEE 64 bit floating point type
|
||||
* du_int is a 64 bit integral type
|
||||
* value in double is representable in du_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(d2ulz, fixunsdfdi)
|
||||
|
||||
COMPILER_RT_ABI du_int
|
||||
__fixunsdfdi(double a)
|
||||
{
|
||||
double_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u.s.high & 0x7FF00000) >> 20) - 1023;
|
||||
if (e < 0 || (fb.u.s.high & 0x80000000))
|
||||
return 0;
|
||||
udwords r;
|
||||
r.s.high = (fb.u.s.high & 0x000FFFFF) | 0x00100000;
|
||||
r.s.low = fb.u.s.low;
|
||||
if (e > 52)
|
||||
r.all <<= (e - 52);
|
||||
else
|
||||
r.all >>= (52 - e);
|
||||
return r.all;
|
||||
__fixunsdfdi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
@ -6,39 +6,16 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixunsdfsi for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
/* Returns: convert a to a unsigned int, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: double is a IEEE 64 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in double is representable in su_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(d2uiz, fixunsdfsi)
|
||||
|
||||
COMPILER_RT_ABI su_int
|
||||
__fixunsdfsi(double a)
|
||||
{
|
||||
double_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u.s.high & 0x7FF00000) >> 20) - 1023;
|
||||
if (e < 0 || (fb.u.s.high & 0x80000000))
|
||||
return 0;
|
||||
return (
|
||||
0x80000000u |
|
||||
((fb.u.s.high & 0x000FFFFF) << 11) |
|
||||
(fb.u.s.low >> 21)
|
||||
) >> (31 - e);
|
||||
__fixunsdfsi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
@ -6,42 +6,18 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixunsdfti for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: double is a IEEE 64 bit floating point type
|
||||
* tu_int is a 64 bit integral type
|
||||
* value in double is representable in tu_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define DOUBLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI tu_int
|
||||
__fixunsdfti(double a)
|
||||
{
|
||||
double_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u.s.high & 0x7FF00000) >> 20) - 1023;
|
||||
if (e < 0 || (fb.u.s.high & 0x80000000))
|
||||
return 0;
|
||||
tu_int r = 0x0010000000000000uLL | (fb.u.all & 0x000FFFFFFFFFFFFFuLL);
|
||||
if (e > 52)
|
||||
r <<= (e - 52);
|
||||
else
|
||||
r >>= (52 - e);
|
||||
return r;
|
||||
__fixunsdftti(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
|
@ -6,39 +6,16 @@
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*
|
||||
* This file implements __fixunssfdi for the compiler_rt library.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: float is a IEEE 32 bit floating point type
|
||||
* du_int is a 64 bit integral type
|
||||
* value in float is representable in du_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define SINGLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(f2ulz, fixunssfdi)
|
||||
|
||||
COMPILER_RT_ABI du_int
|
||||
__fixunssfdi(float a)
|
||||
{
|
||||
float_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u & 0x7F800000) >> 23) - 127;
|
||||
if (e < 0 || (fb.u & 0x80000000))
|
||||
return 0;
|
||||
du_int r = (fb.u & 0x007FFFFF) | 0x00800000;
|
||||
if (e > 23)
|
||||
r <<= (e - 23);
|
||||
else
|
||||
r >>= (23 - e);
|
||||
return r;
|
||||
__fixunssfdi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
@ -12,34 +12,14 @@
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
/* Returns: convert a to a unsigned int, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: float is a IEEE 32 bit floating point type
|
||||
* su_int is a 32 bit integral type
|
||||
* value in float is representable in su_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#define SINGLE_PRECISION
|
||||
#include "fp_lib.h"
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
ARM_EABI_FNALIAS(f2uiz, fixunssfsi)
|
||||
|
||||
COMPILER_RT_ABI su_int
|
||||
__fixunssfsi(float a)
|
||||
{
|
||||
float_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u & 0x7F800000) >> 23) - 127;
|
||||
if (e < 0 || (fb.u & 0x80000000))
|
||||
return 0;
|
||||
su_int r = (fb.u & 0x007FFFFF) | 0x00800000;
|
||||
if (e > 23)
|
||||
r <<= (e - 23);
|
||||
else
|
||||
r >>= (23 - e);
|
||||
return r;
|
||||
__fixunssfsi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
@ -12,36 +12,12 @@
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#include "int_lib.h"
|
||||
|
||||
#ifdef CRT_HAS_128BIT
|
||||
|
||||
/* Returns: convert a to a unsigned long long, rounding toward zero.
|
||||
* Negative values all become zero.
|
||||
*/
|
||||
|
||||
/* Assumption: float is a IEEE 32 bit floating point type
|
||||
* tu_int is a 64 bit integral type
|
||||
* value in float is representable in tu_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */
|
||||
#if defined(CRT_HAS_128BIT)
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI tu_int
|
||||
__fixunssfti(float a)
|
||||
{
|
||||
float_bits fb;
|
||||
fb.f = a;
|
||||
int e = ((fb.u & 0x7F800000) >> 23) - 127;
|
||||
if (e < 0 || (fb.u & 0x80000000))
|
||||
return 0;
|
||||
tu_int r = (fb.u & 0x007FFFFF) | 0x00800000;
|
||||
if (e > 23)
|
||||
r <<= (e - 23);
|
||||
else
|
||||
r >>= (23 - e);
|
||||
return r;
|
||||
__fixunssfti(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
|
||||
#endif /* CRT_HAS_128BIT */
|
||||
#endif
|
||||
|
22
contrib/compiler-rt/lib/builtins/fixunstfdi.c
Normal file
22
contrib/compiler-rt/lib/builtins/fixunstfdi.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* ===-- fixunstfdi.c - Implement __fixunstfdi -----------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef du_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI du_int
|
||||
__fixunstfdi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
#endif
|
22
contrib/compiler-rt/lib/builtins/fixunstfsi.c
Normal file
22
contrib/compiler-rt/lib/builtins/fixunstfsi.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* ===-- fixunstfsi.c - Implement __fixunstfsi -----------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef su_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI su_int
|
||||
__fixunstfsi(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
#endif
|
22
contrib/compiler-rt/lib/builtins/fixunstfti.c
Normal file
22
contrib/compiler-rt/lib/builtins/fixunstfti.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* ===-- fixunstfsi.c - Implement __fixunstfsi -----------------------------===
|
||||
*
|
||||
* The LLVM Compiler Infrastructure
|
||||
*
|
||||
* This file is dual licensed under the MIT and the University of Illinois Open
|
||||
* Source Licenses. See LICENSE.TXT for details.
|
||||
*
|
||||
* ===----------------------------------------------------------------------===
|
||||
*/
|
||||
|
||||
#define QUAD_PRECISION
|
||||
#include "fp_lib.h"
|
||||
|
||||
#if defined(CRT_HAS_128BIT) && defined(CRT_LDBL_128BIT)
|
||||
typedef tu_int fixuint_t;
|
||||
#include "fp_fixuint_impl.inc"
|
||||
|
||||
COMPILER_RT_ABI tu_int
|
||||
__fixunstfti(fp_t a) {
|
||||
return __fixuint(a);
|
||||
}
|
||||
#endif
|
@ -38,6 +38,8 @@ __fixunsxfdi(long double a)
|
||||
int e = (fb.u.high.s.low & 0x00007FFF) - 16383;
|
||||
if (e < 0 || (fb.u.high.s.low & 0x00008000))
|
||||
return 0;
|
||||
if ((unsigned)e > sizeof(du_int) * CHAR_BIT)
|
||||
return ~(du_int)0;
|
||||
return fb.u.low.all >> (63 - e);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
/* Assumption: long double is an intel 80 bit floating point type padded with 6 bytes
|
||||
* su_int is a 32 bit integral type
|
||||
* value in long double is representable in su_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee |
|
||||
@ -38,6 +37,8 @@ __fixunsxfsi(long double a)
|
||||
int e = (fb.u.high.s.low & 0x00007FFF) - 16383;
|
||||
if (e < 0 || (fb.u.high.s.low & 0x00008000))
|
||||
return 0;
|
||||
if ((unsigned)e > sizeof(su_int) * CHAR_BIT)
|
||||
return ~(su_int)0;
|
||||
return fb.u.low.s.high >> (31 - e);
|
||||
}
|
||||
|
||||
|
@ -21,9 +21,8 @@
|
||||
*/
|
||||
|
||||
/* Assumption: long double is an intel 80 bit floating point type padded with 6 bytes
|
||||
* tu_int is a 64 bit integral type
|
||||
* tu_int is a 128 bit integral type
|
||||
* value in long double is representable in tu_int or is negative
|
||||
* (no range checking performed)
|
||||
*/
|
||||
|
||||
/* gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee |
|
||||
@ -38,6 +37,8 @@ __fixunsxfti(long double a)
|
||||
int e = (fb.u.high.s.low & 0x00007FFF) - 16383;
|
||||
if (e < 0 || (fb.u.high.s.low & 0x00008000))
|
||||
return 0;
|
||||
if ((unsigned)e > sizeof(tu_int) * CHAR_BIT)
|
||||
return ~(tu_int)0;
|
||||
tu_int r = fb.u.low.all;
|
||||
if (e > 63)
|
||||
r <<= (e - 63);
|
||||
|
@ -19,7 +19,7 @@
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: long double is an intel 80 bit floating point type padded with 6 bytes
|
||||
* su_int is a 32 bit integral type
|
||||
* di_int is a 64 bit integral type
|
||||
* value in long double is representable in di_int (no range checking performed)
|
||||
*/
|
||||
|
||||
@ -30,11 +30,15 @@
|
||||
COMPILER_RT_ABI di_int
|
||||
__fixxfdi(long double a)
|
||||
{
|
||||
const di_int di_max = (di_int)((~(du_int)0) / 2);
|
||||
const di_int di_min = -di_max - 1;
|
||||
long_double_bits fb;
|
||||
fb.f = a;
|
||||
int e = (fb.u.high.s.low & 0x00007FFF) - 16383;
|
||||
if (e < 0)
|
||||
return 0;
|
||||
if ((unsigned)e >= sizeof(di_int) * CHAR_BIT)
|
||||
return a > 0 ? di_max : di_min;
|
||||
di_int s = -(si_int)((fb.u.high.s.low & 0x00008000) >> 15);
|
||||
di_int r = fb.u.low.all;
|
||||
r = (du_int)r >> (63 - e);
|
||||
|
@ -19,8 +19,8 @@
|
||||
/* Returns: convert a to a signed long long, rounding toward zero. */
|
||||
|
||||
/* Assumption: long double is an intel 80 bit floating point type padded with 6 bytes
|
||||
* su_int is a 32 bit integral type
|
||||
* value in long double is representable in ti_int (no range checking performed)
|
||||
* ti_int is a 128 bit integral type
|
||||
* value in long double is representable in ti_int
|
||||
*/
|
||||
|
||||
/* gggg gggg gggg gggg gggg gggg gggg gggg | gggg gggg gggg gggg seee eeee eeee eeee |
|
||||
@ -30,6 +30,8 @@
|
||||
COMPILER_RT_ABI ti_int
|
||||
__fixxfti(long double a)
|
||||
{
|
||||
const ti_int ti_max = (ti_int)((~(tu_int)0) / 2);
|
||||
const ti_int ti_min = -ti_max - 1;
|
||||
long_double_bits fb;
|
||||
fb.f = a;
|
||||
int e = (fb.u.high.s.low & 0x00007FFF) - 16383;
|
||||
@ -37,6 +39,8 @@ __fixxfti(long double a)
|
||||
return 0;
|
||||
ti_int s = -(si_int)((fb.u.high.s.low & 0x00008000) >> 15);
|
||||
ti_int r = fb.u.low.all;
|
||||
if ((unsigned)e >= sizeof(ti_int) * CHAR_BIT)
|
||||
return a > 0 ? ti_max : ti_min;
|
||||
if (e > 63)
|
||||
r <<= (e - 63);
|
||||
else
|
||||
|
41
contrib/compiler-rt/lib/builtins/fp_fixint_impl.inc
Normal file
41
contrib/compiler-rt/lib/builtins/fp_fixint_impl.inc
Normal file
@ -0,0 +1,41 @@
|
||||
//===-- lib/fixdfsi.c - Double-precision -> integer conversion ----*- C -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements float to integer conversion for the
|
||||
// compiler-rt library.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "fp_lib.h"
|
||||
|
||||
static inline fixint_t __fixint(fp_t a) {
|
||||
const fixint_t fixint_max = (fixint_t)((~(fixuint_t)0) / 2);
|
||||
const fixint_t fixint_min = -fixint_max - 1;
|
||||
// Break a into sign, exponent, significand
|
||||
const rep_t aRep = toRep(a);
|
||||
const rep_t aAbs = aRep & absMask;
|
||||
const fixint_t sign = aRep & signBit ? -1 : 1;
|
||||
const int exponent = (aAbs >> significandBits) - exponentBias;
|
||||
const rep_t significand = (aAbs & significandMask) | implicitBit;
|
||||
|
||||
// If exponent is negative, the result is zero.
|
||||
if (exponent < 0)
|
||||
return 0;
|
||||
|
||||
// If the value is too large for the integer type, saturate.
|
||||
if ((unsigned)exponent >= sizeof(fixint_t) * CHAR_BIT)
|
||||
return sign == 1 ? fixint_max : fixint_min;
|
||||
|
||||
// If 0 <= exponent < significandBits, right shift to get the result.
|
||||
// Otherwise, shift left.
|
||||
if (exponent < significandBits)
|
||||
return sign * (significand >> (significandBits - exponent));
|
||||
else
|
||||
return sign * ((fixint_t)significand << (exponent - significandBits));
|
||||
}
|
39
contrib/compiler-rt/lib/builtins/fp_fixuint_impl.inc
Normal file
39
contrib/compiler-rt/lib/builtins/fp_fixuint_impl.inc
Normal file
@ -0,0 +1,39 @@
|
||||
//===-- lib/fixdfsi.c - Double-precision -> integer conversion ----*- C -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements float to unsigned integer conversion for the
|
||||
// compiler-rt library.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "fp_lib.h"
|
||||
|
||||
static inline fixuint_t __fixuint(fp_t a) {
|
||||
// Break a into sign, exponent, significand
|
||||
const rep_t aRep = toRep(a);
|
||||
const rep_t aAbs = aRep & absMask;
|
||||
const int sign = aRep & signBit ? -1 : 1;
|
||||
const int exponent = (aAbs >> significandBits) - exponentBias;
|
||||
const rep_t significand = (aAbs & significandMask) | implicitBit;
|
||||
|
||||
// If either the value or the exponent is negative, the result is zero.
|
||||
if (sign == -1 || exponent < 0)
|
||||
return 0;
|
||||
|
||||
// If the value is too large for the integer type, saturate.
|
||||
if ((unsigned)exponent > sizeof(fixuint_t) * CHAR_BIT)
|
||||
return ~(fixuint_t)0;
|
||||
|
||||
// If 0 <= exponent < significandBits, right shift to get the result.
|
||||
// Otherwise, shift left.
|
||||
if (exponent < significandBits)
|
||||
return significand >> (significandBits - exponent);
|
||||
else
|
||||
return (fixuint_t)significand << (exponent - significandBits);
|
||||
}
|
@ -40,6 +40,9 @@
|
||||
#ifdef __arm__
|
||||
# define LG_SIZEOF_PTR 2
|
||||
#endif
|
||||
#ifdef __aarch64__
|
||||
# define LG_SIZEOF_PTR 3
|
||||
#endif
|
||||
#ifdef __mips__
|
||||
#ifdef __mips_n64
|
||||
# define LG_SIZEOF_PTR 3
|
||||
|
@ -272,13 +272,13 @@ void
|
||||
xo_warnx (const char *fmt, ...);
|
||||
|
||||
void
|
||||
xo_err (int eval, const char *fmt, ...);
|
||||
xo_err (int eval, const char *fmt, ...) __dead2;
|
||||
|
||||
void
|
||||
xo_errx (int eval, const char *fmt, ...);
|
||||
xo_errx (int eval, const char *fmt, ...) __dead2;
|
||||
|
||||
void
|
||||
xo_errc (int eval, int code, const char *fmt, ...);
|
||||
xo_errc (int eval, int code, const char *fmt, ...) __dead2;
|
||||
|
||||
void
|
||||
xo_message_hcv (xo_handle_t *xop, int code, const char *fmt, va_list vap);
|
||||
|
@ -6,3 +6,4 @@
|
||||
# When using the -media special map, make sure to edit devd.conf(5)
|
||||
# to move the call to "automount -c" out of the comments section.
|
||||
#/media -media -nosuid
|
||||
#/- -noauto
|
||||
|
@ -1,6 +1,6 @@
|
||||
# $FreeBSD$
|
||||
|
||||
FILES= include_ldap special_hosts special_media special_null
|
||||
FILES= include_ldap special_hosts special_media special_noauto special_null
|
||||
|
||||
NO_OBJ=
|
||||
FILESDIR= /etc/autofs
|
||||
|
29
etc/autofs/special_noauto
Executable file
29
etc/autofs/special_noauto
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
print_available() {
|
||||
sed 's/#.*//' /etc/fstab | awk '$4 ~ /noauto/ { print $2 }'
|
||||
}
|
||||
|
||||
print_one() {
|
||||
local _mntpoint
|
||||
|
||||
_mntpoint="${1%/}"
|
||||
|
||||
sed 's/#.*//' /etc/fstab | awk '
|
||||
$2 == "'"${_mntpoint}"'" && $4 ~ /noauto/ {
|
||||
if ($1 ~ /:/) { dev=$1 } else { dev=":"$1 }
|
||||
print "-fstype=" $3 "," $4, dev
|
||||
}'
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
print_available
|
||||
exit 0
|
||||
fi
|
||||
|
||||
print_one "$1"
|
||||
exit 0
|
||||
|
@ -89,7 +89,7 @@ daily_news_expire_enable="YES" # Run news.expire
|
||||
|
||||
# 400.status-disks
|
||||
daily_status_disks_enable="YES" # Check disk status
|
||||
daily_status_disks_df_flags="-l -h" # df(1) flags for check
|
||||
daily_status_disks_df_flags="-l -h" # df(1) flags for check
|
||||
|
||||
# 401.status-graid
|
||||
daily_status_graid_enable="NO" # Check graid(8)
|
||||
|
@ -104,6 +104,7 @@ acl_calc_mask(acl_t *acl_p)
|
||||
/* if no mask exists, check acl_cnt... */
|
||||
if (acl_int_new->acl_cnt == ACL_MAX_ENTRIES) {
|
||||
errno = ENOMEM;
|
||||
acl_free(acl_new);
|
||||
return (-1);
|
||||
}
|
||||
/* ...and add the mask entry */
|
||||
|
@ -82,8 +82,10 @@ _posix1e_acl_strip_np(const acl_t aclp, int recalculate_mask)
|
||||
|
||||
have_mask_entry = 0;
|
||||
acl_new = acl_init(ACL_MAX_ENTRIES);
|
||||
if (acl_new == NULL)
|
||||
if (acl_new == NULL) {
|
||||
acl_free(acl_old);
|
||||
return (NULL);
|
||||
}
|
||||
tag = ACL_UNDEFINED_TAG;
|
||||
|
||||
/* only save the default user/group/other entries */
|
||||
@ -94,16 +96,16 @@ _posix1e_acl_strip_np(const acl_t aclp, int recalculate_mask)
|
||||
assert(_entry_brand(entry) == ACL_BRAND_POSIX);
|
||||
|
||||
if (acl_get_tag_type(entry, &tag) == -1)
|
||||
return (NULL);
|
||||
goto fail;
|
||||
|
||||
switch(tag) {
|
||||
case ACL_USER_OBJ:
|
||||
case ACL_GROUP_OBJ:
|
||||
case ACL_OTHER:
|
||||
if (acl_get_tag_type(entry, &tag) == -1)
|
||||
return (NULL);
|
||||
goto fail;
|
||||
if (acl_get_permset(entry, &perm) == -1)
|
||||
return (NULL);
|
||||
goto fail;
|
||||
if (acl_create_entry(&acl_new, &entry_new) == -1)
|
||||
return (NULL);
|
||||
if (acl_set_tag_type(entry_new, tag) == -1)
|
||||
@ -120,6 +122,10 @@ _posix1e_acl_strip_np(const acl_t aclp, int recalculate_mask)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
fail:
|
||||
acl_free(acl_new);
|
||||
acl_free(acl_old);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
assert(_acl_brand(acl_new) == ACL_BRAND_POSIX);
|
||||
|
@ -56,12 +56,18 @@ SRCF= absvdi2 \
|
||||
fixdfti \
|
||||
fixsfdi \
|
||||
fixsfti \
|
||||
fixtfdi \
|
||||
fixtfsi \
|
||||
fixtfti \
|
||||
fixunsdfdi \
|
||||
fixunsdfsi \
|
||||
fixunsdfti \
|
||||
fixunssfdi \
|
||||
fixunssfsi \
|
||||
fixunssfti \
|
||||
fixunstfdi \
|
||||
fixunstfsi \
|
||||
fixunstfti \
|
||||
fixunsxfdi \
|
||||
fixunsxfsi \
|
||||
fixunsxfti \
|
||||
|
@ -91,7 +91,7 @@ find_dbg_obj(const char *path)
|
||||
snprintf(dbg_path, sizeof(dbg_path),
|
||||
"/usr/lib/debug/%s.debug", path);
|
||||
fd = open(dbg_path, O_RDONLY);
|
||||
if (fd > 0)
|
||||
if (fd >= 0)
|
||||
return (fd);
|
||||
else
|
||||
return (open(path, O_RDONLY));
|
||||
|
@ -28,7 +28,7 @@ CFLAGS+= -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float
|
||||
CFLAGS.gcc+= -mpreferred-stack-boundary=2
|
||||
.endif
|
||||
.if ${MACHINE_CPUARCH} == "amd64"
|
||||
CFLAGS+= -fPIC
|
||||
CFLAGS+= -fPIC -mno-red-zone
|
||||
.endif
|
||||
.if ${MACHINE} == "pc98"
|
||||
CFLAGS+= -Os
|
||||
|
@ -786,7 +786,8 @@ static int
|
||||
ioget(struct open_file *fd, u_int lsec, void *buf, u_int nsec)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
||||
twiddle(1);
|
||||
if ((err = (fd->f_dev->dv_strategy)(fd->f_devdata, F_READ, lsec,
|
||||
secbyt(nsec), buf, NULL)))
|
||||
return(err);
|
||||
|
@ -24,7 +24,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd August 12, 2014
|
||||
.Dd March 12, 2015
|
||||
.Dt GPART 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -659,6 +659,12 @@ Another symbolic names that can be used with
|
||||
.Cm gpart
|
||||
utility are:
|
||||
.Bl -tag -width ".Cm dragonfly-disklabel64"
|
||||
.It Cm apple-core-storage
|
||||
An Apple Mac OS X partition used by logical volume manager known as
|
||||
Core Storage.
|
||||
The scheme-specific type is
|
||||
.Qq Li "!53746f72-6167-11aa-aa11-00306543ecac"
|
||||
for GPT.
|
||||
.It Cm apple-hfs
|
||||
An Apple Mac OS X partition that contains a HFS or HFS+ filesystem.
|
||||
The scheme-specific types are
|
||||
|
@ -1280,9 +1280,8 @@ ifmaybeload(const char *name)
|
||||
}
|
||||
|
||||
/* turn interface and unit into module name */
|
||||
strcpy(ifkind, "if_");
|
||||
strlcpy(ifkind + MOD_PREFIX_LEN, ifname,
|
||||
sizeof(ifkind) - MOD_PREFIX_LEN);
|
||||
strlcpy(ifkind, "if_", sizeof(ifkind));
|
||||
strlcat(ifkind, ifname, sizeof(ifkind));
|
||||
|
||||
/* scan files in kernel */
|
||||
mstat.version = sizeof(struct module_stat);
|
||||
@ -1299,8 +1298,8 @@ ifmaybeload(const char *name)
|
||||
cp = mstat.name;
|
||||
}
|
||||
/* already loaded? */
|
||||
if (strncmp(ifname, cp, strlen(ifname) + 1) == 0 ||
|
||||
strncmp(ifkind, cp, strlen(ifkind) + 1) == 0)
|
||||
if (strcmp(ifname, cp) == 0 ||
|
||||
strcmp(ifkind, cp) == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd Aug 13, 2014
|
||||
.Dd March 13, 2015
|
||||
.Dt IPFW 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -2078,6 +2078,8 @@ hook number to move packet to.
|
||||
maximum number of connections.
|
||||
.It Cm ipv4
|
||||
IPv4 nexthop to fwd packets to.
|
||||
.It Cm ipv6
|
||||
IPv6 nexthop to fwd packets to.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
|
@ -1525,11 +1525,14 @@ show_static_rule(struct cmdline_opts *co, struct format_opts *fo,
|
||||
|
||||
case O_FORWARD_IP6:
|
||||
{
|
||||
char buf[4 + INET6_ADDRSTRLEN + 1];
|
||||
char buf[INET6_ADDRSTRLEN + IF_NAMESIZE + 2];
|
||||
ipfw_insn_sa6 *s = (ipfw_insn_sa6 *)cmd;
|
||||
|
||||
bprintf(bp, "fwd %s", inet_ntop(AF_INET6,
|
||||
&s->sa.sin6_addr, buf, sizeof(buf)));
|
||||
bprintf(bp, "fwd ");
|
||||
if (getnameinfo((const struct sockaddr *)&s->sa,
|
||||
sizeof(struct sockaddr_in6), buf, sizeof(buf),
|
||||
NULL, 0, NI_NUMERICHOST) == 0)
|
||||
bprintf(bp, "%s", buf);
|
||||
if (s->sa.sin6_port)
|
||||
bprintf(bp, ",%d", s->sa.sin6_port);
|
||||
}
|
||||
@ -3741,8 +3744,8 @@ chkarg:
|
||||
p->sa.sin6_family = AF_INET6;
|
||||
p->sa.sin6_port = port_number;
|
||||
p->sa.sin6_flowinfo = 0;
|
||||
p->sa.sin6_scope_id = 0;
|
||||
/* No table support for v6 yet. */
|
||||
p->sa.sin6_scope_id =
|
||||
((struct sockaddr_in6 *)&result)->sin6_scope_id;
|
||||
bcopy(&((struct sockaddr_in6*)&result)->sin6_addr,
|
||||
&p->sa.sin6_addr, sizeof(p->sa.sin6_addr));
|
||||
} else {
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/ip_fw.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
|
||||
#include "ipfw2.h"
|
||||
|
||||
@ -1384,6 +1385,7 @@ static void
|
||||
tentry_fill_value(ipfw_obj_header *oh, ipfw_obj_tentry *tent, char *arg,
|
||||
uint8_t type, uint32_t vmask)
|
||||
{
|
||||
struct addrinfo hints, *res;
|
||||
uint32_t a4, flag, val, vm;
|
||||
ipfw_table_value *v;
|
||||
uint32_t i;
|
||||
@ -1494,9 +1496,19 @@ tentry_fill_value(ipfw_obj_header *oh, ipfw_obj_tentry *tent, char *arg,
|
||||
}
|
||||
break;
|
||||
case IPFW_VTYPE_NH6:
|
||||
if (strchr(n, ':') != NULL &&
|
||||
inet_pton(AF_INET6, n, &v->nh6) == 1)
|
||||
break;
|
||||
if (strchr(n, ':') != NULL) {
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_family = AF_INET6;
|
||||
hints.ai_flags = AI_NUMERICHOST;
|
||||
if (getaddrinfo(n, NULL, &hints, &res) == 0) {
|
||||
v->nh6 = ((struct sockaddr_in6 *)
|
||||
res->ai_addr)->sin6_addr;
|
||||
v->zoneid = ((struct sockaddr_in6 *)
|
||||
res->ai_addr)->sin6_scope_id;
|
||||
freeaddrinfo(res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
etype = "ipv6";
|
||||
break;
|
||||
}
|
||||
@ -1643,10 +1655,11 @@ static void
|
||||
table_show_value(char *buf, size_t bufsize, ipfw_table_value *v,
|
||||
uint32_t vmask, int print_ip)
|
||||
{
|
||||
char abuf[INET6_ADDRSTRLEN + IF_NAMESIZE + 2];
|
||||
struct sockaddr_in6 sa6;
|
||||
uint32_t flag, i, l;
|
||||
size_t sz;
|
||||
struct in_addr a4;
|
||||
char abuf[INET6_ADDRSTRLEN];
|
||||
|
||||
sz = bufsize;
|
||||
|
||||
@ -1702,8 +1715,15 @@ table_show_value(char *buf, size_t bufsize, ipfw_table_value *v,
|
||||
l = snprintf(buf, sz, "%d,", v->dscp);
|
||||
break;
|
||||
case IPFW_VTYPE_NH6:
|
||||
inet_ntop(AF_INET6, &v->nh6, abuf, sizeof(abuf));
|
||||
l = snprintf(buf, sz, "%s,", abuf);
|
||||
sa6.sin6_family = AF_INET6;
|
||||
sa6.sin6_len = sizeof(sa6);
|
||||
sa6.sin6_addr = v->nh6;
|
||||
sa6.sin6_port = 0;
|
||||
sa6.sin6_scope_id = v->zoneid;
|
||||
if (getnameinfo((const struct sockaddr *)&sa6,
|
||||
sa6.sin6_len, abuf, sizeof(abuf), NULL, 0,
|
||||
NI_NUMERICHOST) == 0)
|
||||
l = snprintf(buf, sz, "%s,", abuf);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1862,11 +1882,12 @@ struct _table_value {
|
||||
uint32_t nat; /* O_NAT */
|
||||
uint32_t nh4;
|
||||
uint8_t dscp;
|
||||
uint8_t spare0[3];
|
||||
uint8_t spare0;
|
||||
uint16_t spare1;
|
||||
/* -- 32 bytes -- */
|
||||
struct in6_addr nh6;
|
||||
uint32_t limit; /* O_LIMIT */
|
||||
uint32_t spare1;
|
||||
uint32_t zoneid;
|
||||
uint64_t refcnt; /* Number of references */
|
||||
};
|
||||
|
||||
|
@ -9,11 +9,7 @@
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" 3. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
|
@ -9,11 +9,7 @@
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" 3. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
|
@ -9,11 +9,7 @@
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. Neither the name of the University nor the names of its contributors
|
||||
.\" 3. Neither the name of the University nor the names of its contributors
|
||||
.\" may be used to endorse or promote products derived from this software
|
||||
.\" without specific prior written permission.
|
||||
.\"
|
||||
|
@ -62,6 +62,7 @@ usage() {
|
||||
echo " -i: force boot of the Installation CDROM image"
|
||||
echo " -I: Installation CDROM image location (default is ${DEFAULT_ISOFILE})"
|
||||
echo " -m: memory size (default is ${DEFAULT_MEMSIZE})"
|
||||
echo " -p: pass-through a host PCI device at bus/slot/func (e.g. 10/0/0)"
|
||||
echo " -t: tap device for virtio-net (default is $DEFAULT_TAPDEV)"
|
||||
echo ""
|
||||
[ -n "$msg" ] && errmsg "$msg"
|
||||
@ -89,8 +90,9 @@ disk_total=0
|
||||
apic_opt=""
|
||||
gdbport=0
|
||||
loader_opt=""
|
||||
pass_total=0
|
||||
|
||||
while getopts ac:C:d:e:g:hH:iI:m:t: c ; do
|
||||
while getopts ac:C:d:e:g:hH:iI:m:p:t: c ; do
|
||||
case $c in
|
||||
a)
|
||||
apic_opt="-a"
|
||||
@ -123,6 +125,10 @@ while getopts ac:C:d:e:g:hH:iI:m:t: c ; do
|
||||
m)
|
||||
memsize=${OPTARG}
|
||||
;;
|
||||
p)
|
||||
eval "pass_dev${pass_total}=\"${OPTARG}\""
|
||||
pass_total=$(($pass_total + 1))
|
||||
;;
|
||||
t)
|
||||
eval "tap_dev${tap_total}=\"${OPTARG}\""
|
||||
tap_total=$(($tap_total + 1))
|
||||
@ -237,6 +243,14 @@ while [ 1 ]; do
|
||||
i=$(($i + 1))
|
||||
done
|
||||
|
||||
i=0
|
||||
while [ $i -lt $pass_total ] ; do
|
||||
eval "pass=\$pass_dev${i}"
|
||||
devargs="$devargs -s $nextslot:0,passthru,${pass} "
|
||||
nextslot=$(($nextslot + 1))
|
||||
i=$(($i + 1))
|
||||
done
|
||||
|
||||
${FBSDRUN} -c ${cpus} -m ${memsize} ${apic_opt} -A -H -P \
|
||||
-g ${gdbport} \
|
||||
-s 0:0,hostbridge \
|
||||
|
@ -25,7 +25,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd January 15, 2015
|
||||
.Dd March 13, 2015
|
||||
.Dt PERIODIC.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -335,6 +335,8 @@ utility when
|
||||
.Va daily_status_disks_enable
|
||||
is set to
|
||||
.Dq Li YES .
|
||||
The default is
|
||||
.Fl l Fl h .
|
||||
.It Va daily_status_zfs_enable
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
|
@ -24,7 +24,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd January 5, 2015
|
||||
.Dd March 11, 2015
|
||||
.Dt MBUF 9
|
||||
.Os
|
||||
.\"
|
||||
@ -141,6 +141,8 @@
|
||||
.Ft struct mbuf *
|
||||
.Fn m_defrag "struct mbuf *m0" "int how"
|
||||
.Ft struct mbuf *
|
||||
.Fn m_collapse "struct mbuf *m0" "int how" "int maxfrags"
|
||||
.Ft struct mbuf *
|
||||
.Fn m_unshare "struct mbuf *m0" "int how"
|
||||
.\"
|
||||
.Sh DESCRIPTION
|
||||
@ -983,6 +985,20 @@ depending on the caller's preference.
|
||||
This function is especially useful in network drivers, where
|
||||
certain long mbuf chains must be shortened before being added
|
||||
to TX descriptor lists.
|
||||
.It Fn m_collapse m0 how maxfrags
|
||||
Defragment an mbuf chain, returning a chain of at most
|
||||
.Fa maxfrags
|
||||
mbufs and clusters.
|
||||
If allocation fails or the chain cannot be collapsed as requested,
|
||||
.Dv NULL
|
||||
will be returned, with the original chain possibly modified.
|
||||
As with
|
||||
.Fn m_defrag ,
|
||||
.Fa how
|
||||
should be one of
|
||||
.Dv M_WAITOK
|
||||
or
|
||||
.Dv M_NOWAIT .
|
||||
.It Fn m_unshare m0 how
|
||||
Create a version of the specified mbuf chain whose
|
||||
contents can be safely modified without affecting other users.
|
||||
|
@ -18,6 +18,10 @@
|
||||
# after all this processing, allowing this file to be included
|
||||
# multiple times with different lists.
|
||||
#
|
||||
# Other parts of the build system will set BROKEN_OPTIONS to a list
|
||||
# of options that are broken on this platform. This will not be unset
|
||||
# before returning. Clients are expected to always += this variable.
|
||||
#
|
||||
# Users should generally define WITH_FOO or WITHOUT_FOO, but the build
|
||||
# system should use MK_FOO={yes,no} when it needs to override the
|
||||
# user's desires or default behavior.
|
||||
@ -58,3 +62,11 @@ MK_${var}:= no
|
||||
.endif # !defined(MK_${var})
|
||||
.endfor
|
||||
.undef __DEFAULT_NO_OPTIONS
|
||||
|
||||
#
|
||||
# MK_* options which are always no, usually because they are
|
||||
# unsupported/badly broken on this architecture.
|
||||
#
|
||||
.for var in ${BROKEN_OPTIONS}
|
||||
MK_${var}:= no
|
||||
.endfor
|
||||
|
@ -89,6 +89,16 @@ obj: .PHONY
|
||||
fi; \
|
||||
${ECHO} "${CANONICALOBJDIR} created for ${.CURDIR}"; \
|
||||
fi
|
||||
.for dir in ${SRCS:H:O:u}
|
||||
@if ! test -d ${CANONICALOBJDIR}/${dir}/; then \
|
||||
mkdir -p ${CANONICALOBJDIR}/${dir}; \
|
||||
if ! test -d ${CANONICALOBJDIR}/${dir}/; then \
|
||||
${ECHO} "Unable to create ${CANONICALOBJDIR}/${dir}."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
${ECHO} "${CANONICALOBJDIR}/${dir} created for ${.CURDIR}"; \
|
||||
fi
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
.if !target(objlink)
|
||||
|
@ -242,21 +242,21 @@ YFLAGS ?= -d
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.c.o:
|
||||
${CC} ${CFLAGS} -c ${.IMPSRC}
|
||||
${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.cc .cpp .cxx .C:
|
||||
${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
|
||||
|
||||
.cc.o .cpp.o .cxx.o .C.o:
|
||||
${CXX} ${CXXFLAGS} -c ${.IMPSRC}
|
||||
${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
|
||||
.m.o:
|
||||
${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
|
||||
${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.p.o:
|
||||
${PC} ${PFLAGS} -c ${.IMPSRC}
|
||||
${PC} ${PFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.e .r .F .f:
|
||||
@ -264,14 +264,15 @@ YFLAGS ?= -d
|
||||
-o ${.TARGET}
|
||||
|
||||
.e.o .r.o .F.o .f.o:
|
||||
${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
|
||||
${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
|
||||
.S.o:
|
||||
${CC} ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC}
|
||||
${CC} ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.asm.o:
|
||||
${CC} -x assembler-with-cpp ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC}
|
||||
${CC} -x assembler-with-cpp ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \
|
||||
-o ${.TARGET}
|
||||
${CTFCONVERT_CMD}
|
||||
|
||||
.s.o:
|
||||
|
@ -301,4 +301,35 @@ IDTVEC(rendezvous)
|
||||
call smp_rendezvous_action
|
||||
call as_lapic_eoi
|
||||
jmp doreti
|
||||
|
||||
/*
|
||||
* IPI handler whose purpose is to interrupt the CPU with minimum overhead.
|
||||
* This is used by bhyve to force a host cpu executing in guest context to
|
||||
* trap into the hypervisor.
|
||||
*
|
||||
* This handler is different from other IPI handlers in the following aspects:
|
||||
*
|
||||
* 1. It doesn't push a trapframe on the stack.
|
||||
*
|
||||
* This implies that a DDB backtrace involving 'justreturn' will skip the
|
||||
* function that was interrupted by this handler.
|
||||
*
|
||||
* 2. It doesn't 'swapgs' when userspace is interrupted.
|
||||
*
|
||||
* The 'justreturn' handler does not access any pcpu data so it is not an
|
||||
* issue. Moreover the 'justreturn' handler can only be interrupted by an NMI
|
||||
* whose handler already doesn't trust GS.base when kernel code is interrupted.
|
||||
*/
|
||||
.text
|
||||
SUPERALIGN_TEXT
|
||||
IDTVEC(justreturn)
|
||||
pushq %rax
|
||||
pushq %rcx
|
||||
pushq %rdx
|
||||
call as_lapic_eoi
|
||||
popq %rdx
|
||||
popq %rcx
|
||||
popq %rax
|
||||
jmp doreti_iret
|
||||
|
||||
#endif /* SMP */
|
||||
|
@ -54,6 +54,7 @@ inthand_t
|
||||
IDTVEC(ipi_intr_bitmap_handler), /* Bitmap based IPIs */
|
||||
IDTVEC(cpustop), /* CPU stops & waits to be restarted */
|
||||
IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */
|
||||
IDTVEC(justreturn), /* interrupt CPU with minimum overhead */
|
||||
IDTVEC(rendezvous); /* handle CPU rendezvous */
|
||||
|
||||
struct pmap;
|
||||
|
@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <machine/vmm.h>
|
||||
|
||||
#include "vmx_cpufunc.h"
|
||||
#include "vmm_ipi.h"
|
||||
#include "ept.h"
|
||||
|
||||
#define EPT_SUPPORTS_EXEC_ONLY(cap) ((cap) & (1UL << 0))
|
||||
|
@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include "vmm_lapic.h"
|
||||
#include "vmm_host.h"
|
||||
#include "vmm_ioport.h"
|
||||
#include "vmm_ipi.h"
|
||||
#include "vmm_ktr.h"
|
||||
#include "vmm_stat.h"
|
||||
#include "vatpic.h"
|
||||
@ -175,7 +174,7 @@ static int posted_interrupts;
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, posted_interrupts, CTLFLAG_RD,
|
||||
&posted_interrupts, 0, "APICv posted interrupt support");
|
||||
|
||||
static int pirvec;
|
||||
static int pirvec = -1;
|
||||
SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, posted_interrupt_vector, CTLFLAG_RD,
|
||||
&pirvec, 0, "APICv posted interrupt vector");
|
||||
|
||||
@ -485,8 +484,8 @@ static int
|
||||
vmx_cleanup(void)
|
||||
{
|
||||
|
||||
if (pirvec != 0)
|
||||
vmm_ipi_free(pirvec);
|
||||
if (pirvec >= 0)
|
||||
lapic_ipi_free(pirvec);
|
||||
|
||||
if (vpid_unr != NULL) {
|
||||
delete_unrhdr(vpid_unr);
|
||||
@ -694,8 +693,8 @@ vmx_init(int ipinum)
|
||||
MSR_VMX_TRUE_PINBASED_CTLS, PINBASED_POSTED_INTERRUPT, 0,
|
||||
&tmp);
|
||||
if (error == 0) {
|
||||
pirvec = vmm_ipi_alloc();
|
||||
if (pirvec == 0) {
|
||||
pirvec = lapic_ipi_alloc(&IDTVEC(justreturn));
|
||||
if (pirvec < 0) {
|
||||
if (bootverbose) {
|
||||
printf("vmx_init: unable to allocate "
|
||||
"posted interrupt vector\n");
|
||||
|
@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include <machine/vmm.h>
|
||||
|
||||
#include "vmm_ipi.h"
|
||||
#include "vmm_lapic.h"
|
||||
#include "vmm_ktr.h"
|
||||
#include "vmm_stat.h"
|
||||
|
@ -76,7 +76,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include "vlapic.h"
|
||||
#include "vpmtmr.h"
|
||||
#include "vrtc.h"
|
||||
#include "vmm_ipi.h"
|
||||
#include "vmm_stat.h"
|
||||
#include "vmm_lapic.h"
|
||||
|
||||
@ -298,8 +297,8 @@ vmm_init(void)
|
||||
|
||||
vmm_host_state_init();
|
||||
|
||||
vmm_ipinum = vmm_ipi_alloc();
|
||||
if (vmm_ipinum == 0)
|
||||
vmm_ipinum = lapic_ipi_alloc(&IDTVEC(justreturn));
|
||||
if (vmm_ipinum < 0)
|
||||
vmm_ipinum = IPI_AST;
|
||||
|
||||
error = vmm_mem_init();
|
||||
@ -338,7 +337,7 @@ vmm_handler(module_t mod, int what, void *arg)
|
||||
vmm_resume_p = NULL;
|
||||
iommu_cleanup();
|
||||
if (vmm_ipinum != IPI_AST)
|
||||
vmm_ipi_free(vmm_ipinum);
|
||||
lapic_ipi_free(vmm_ipinum);
|
||||
error = VMM_CLEANUP();
|
||||
/*
|
||||
* Something bad happened - prevent new
|
||||
|
@ -1,93 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2011 NetApp, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/bus.h>
|
||||
|
||||
#include <machine/intr_machdep.h>
|
||||
#include <x86/apicvar.h>
|
||||
#include <machine/segments.h>
|
||||
#include <machine/md_var.h>
|
||||
|
||||
#include <machine/vmm.h>
|
||||
#include "vmm_ipi.h"
|
||||
|
||||
extern inthand_t IDTVEC(rsvd), IDTVEC(justreturn);
|
||||
|
||||
CTASSERT(APIC_SPURIOUS_INT == 255);
|
||||
|
||||
int
|
||||
vmm_ipi_alloc(void)
|
||||
{
|
||||
int idx;
|
||||
uintptr_t func;
|
||||
struct gate_descriptor *ip;
|
||||
|
||||
/*
|
||||
* Search backwards from the highest IDT vector available for use
|
||||
* as our IPI vector. We install the 'justreturn' handler at that
|
||||
* vector and use it to interrupt the vcpus.
|
||||
*
|
||||
* We do this because the IPI_AST is heavyweight and saves all
|
||||
* registers in the trapframe. This is overkill for our use case
|
||||
* which is simply to EOI the interrupt and return.
|
||||
*/
|
||||
idx = APIC_SPURIOUS_INT;
|
||||
while (--idx >= APIC_IPI_INTS) {
|
||||
ip = &idt[idx];
|
||||
func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset);
|
||||
if (func == (uintptr_t)&IDTVEC(rsvd)) {
|
||||
setidt(idx , IDTVEC(justreturn), SDT_SYSIGT,
|
||||
SEL_KPL, 0);
|
||||
return (idx);
|
||||
}
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
vmm_ipi_free(int ipinum)
|
||||
{
|
||||
uintptr_t func;
|
||||
struct gate_descriptor *ip;
|
||||
|
||||
KASSERT(ipinum >= APIC_IPI_INTS && ipinum < APIC_SPURIOUS_INT,
|
||||
("invalid ipi %d", ipinum));
|
||||
|
||||
ip = &idt[ipinum];
|
||||
func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset);
|
||||
KASSERT(func == (uintptr_t)&IDTVEC(justreturn),
|
||||
("invalid ipi %d", ipinum));
|
||||
|
||||
setidt(ipinum, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2011 NetApp, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _VMM_IPI_H_
|
||||
#define _VMM_IPI_H_
|
||||
|
||||
int vmm_ipi_alloc(void);
|
||||
void vmm_ipi_free(int num);
|
||||
|
||||
#endif
|
@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <x86/apicreg.h>
|
||||
|
||||
#include <machine/vmm.h>
|
||||
#include "vmm_ipi.h"
|
||||
#include "vmm_ktr.h"
|
||||
#include "vmm_lapic.h"
|
||||
#include "vlapic.h"
|
||||
|
@ -1,43 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 2011 NetApp, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#define LOCORE
|
||||
|
||||
#include <machine/asmacros.h>
|
||||
|
||||
.text
|
||||
SUPERALIGN_TEXT
|
||||
IDTVEC(justreturn)
|
||||
pushq %rdx
|
||||
pushq %rax
|
||||
pushq %rcx
|
||||
call as_lapic_eoi
|
||||
popq %rcx
|
||||
popq %rax
|
||||
popq %rdx
|
||||
jmp doreti_iret
|
@ -10,11 +10,7 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
|
@ -5,7 +5,7 @@
|
||||
BINDIR?= /boot
|
||||
|
||||
# See conf/kern.mk for the correct set of these
|
||||
CFLAGS+= -ffreestanding
|
||||
CFLAGS+= -ffreestanding -mno-red-zone
|
||||
CFLAGS+= -mno-mmx -mno-sse -mno-aes -mno-avx -msoft-float
|
||||
LDFLAGS+= -nostdlib
|
||||
|
||||
|
@ -44,6 +44,10 @@ LIBFICL= ${.OBJDIR}/../../ficl/libficl.a
|
||||
# Include bcache code.
|
||||
HAVE_BCACHE= yes
|
||||
|
||||
.if defined(EFI_STAGING_SIZE)
|
||||
CFLAGS+= -DEFI_STAGING_SIZE=${EFI_STAGING_SIZE}
|
||||
.endif
|
||||
|
||||
# Always add MI sources
|
||||
.PATH: ${.CURDIR}/../../common
|
||||
.include "${.CURDIR}/../../common/Makefile.inc"
|
||||
@ -55,8 +59,6 @@ FILESMODE_loader.efi= ${BINMODE}
|
||||
LDSCRIPT= ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
|
||||
LDFLAGS= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared -Wl,-znocombreloc
|
||||
|
||||
${PROG}: ${LDSCRIPT}
|
||||
|
||||
CLEANFILES= vers.c loader.efi
|
||||
|
||||
NEWVERSWHAT= "EFI loader" ${MACHINE_CPUARCH}
|
||||
@ -84,9 +86,8 @@ loader.efi: loader.sym
|
||||
--output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
|
||||
|
||||
LIBEFI= ${.OBJDIR}/../../efi/libefi/libefi.a
|
||||
LIBSTAND= ${.OBJDIR}/../../userboot/libstand/libstand.a
|
||||
|
||||
DPADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND}
|
||||
DPADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND} ${LDSCRIPT}
|
||||
LDADD= ${LIBFICL} ${LIBEFI} ${LIBSTAND}
|
||||
|
||||
.endif # ${COMPILER_TYPE} != "gcc"
|
||||
|
@ -44,6 +44,7 @@ struct fs_ops *file_system[] = {
|
||||
&cd9660_fsops,
|
||||
&nfs_fsops,
|
||||
&gzipfs_fsops,
|
||||
&bzipfs_fsops,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -37,9 +37,13 @@ __FBSDID("$FreeBSD$");
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
#define STAGE_PAGES 8192 /* 32MB */
|
||||
#ifndef EFI_STAGING_SIZE
|
||||
#define EFI_STAGING_SIZE 32
|
||||
#endif
|
||||
|
||||
EFI_PHYSICAL_ADDRESS staging;
|
||||
#define STAGE_PAGES ((EFI_STAGING_SIZE) * 1024 * 1024 / 4096)
|
||||
|
||||
EFI_PHYSICAL_ADDRESS staging, staging_end;
|
||||
int stage_offset_set = 0;
|
||||
ssize_t stage_offset;
|
||||
|
||||
@ -55,6 +59,7 @@ x86_efi_copy_init(void)
|
||||
(unsigned long)(status & EFI_ERROR_MASK));
|
||||
return (status);
|
||||
}
|
||||
staging_end = staging + STAGE_PAGES * 4096;
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -68,6 +73,11 @@ x86_efi_copyin(const void *src, vm_offset_t dest, const size_t len)
|
||||
stage_offset_set = 1;
|
||||
}
|
||||
|
||||
/* XXX: Callers do not check for failure. */
|
||||
if (dest + stage_offset + len > staging_end) {
|
||||
errno = ENOMEM;
|
||||
return (-1);
|
||||
}
|
||||
bcopy(src, (void *)(dest + stage_offset), len);
|
||||
return (len);
|
||||
}
|
||||
@ -76,6 +86,11 @@ ssize_t
|
||||
x86_efi_copyout(const vm_offset_t src, void *dest, const size_t len)
|
||||
{
|
||||
|
||||
/* XXX: Callers do not check for failure. */
|
||||
if (src + stage_offset + len > staging_end) {
|
||||
errno = ENOMEM;
|
||||
return (-1);
|
||||
}
|
||||
bcopy((void *)(src + stage_offset), dest, len);
|
||||
return (len);
|
||||
}
|
||||
@ -85,6 +100,10 @@ ssize_t
|
||||
x86_efi_readin(const int fd, vm_offset_t dest, const size_t len)
|
||||
{
|
||||
|
||||
if (dest + stage_offset + len > staging_end) {
|
||||
errno = ENOMEM;
|
||||
return (-1);
|
||||
}
|
||||
return (read(fd, (void *)(dest + stage_offset), len));
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ SRCS= delay.c efi_console.c efinet.c efipart.c errno.c handles.c \
|
||||
SRCS+= nullconsole.c comconsole.c
|
||||
|
||||
.if ${MACHINE_ARCH} == "amd64"
|
||||
CFLAGS+= -fPIC
|
||||
CFLAGS+= -fPIC -mno-red-zone
|
||||
.endif
|
||||
CFLAGS+= -I${.CURDIR}/../include
|
||||
CFLAGS+= -I${.CURDIR}/../include/${MACHINE_CPUARCH}
|
||||
|
@ -102,7 +102,7 @@ efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table)
|
||||
(void)console_control->SetMode(console_control,
|
||||
EfiConsoleControlScreenText);
|
||||
|
||||
heapsize = 2 * 1024 * 1024;
|
||||
heapsize = 3 * 1024 * 1024;
|
||||
status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
|
||||
EFI_SIZE_TO_PAGES(heapsize), &heap);
|
||||
if (status != EFI_SUCCESS)
|
||||
|
@ -21,6 +21,9 @@ CFLAGS+= -ffreestanding
|
||||
CFLAGS+= -march=i386
|
||||
CFLAGS.gcc+= -mpreferred-stack-boundary=2
|
||||
.endif
|
||||
.if ${MACHINE_CPUARCH} == "amd64"
|
||||
CFLAGS+= -mno-red-zone
|
||||
.endif
|
||||
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
|
||||
CFLAGS+= -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float
|
||||
.endif
|
||||
|
@ -3130,7 +3130,9 @@ zvol_d_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct threa
|
||||
struct diocgattr_arg *arg = (struct diocgattr_arg *)data;
|
||||
uint64_t refd, avail, usedobjs, availobjs;
|
||||
|
||||
if (strcmp(arg->name, "blocksavail") == 0) {
|
||||
if (strcmp(arg->name, "GEOM::candelete") == 0)
|
||||
arg->value.i = 1;
|
||||
else if (strcmp(arg->name, "blocksavail") == 0) {
|
||||
dmu_objset_space(zv->zv_objset, &refd, &avail,
|
||||
&usedobjs, &availobjs);
|
||||
arg->value.off = avail / DEV_BSIZE;
|
||||
|
@ -48,6 +48,33 @@ __DEFAULT_NO_OPTIONS = \
|
||||
NAND \
|
||||
OFED
|
||||
|
||||
# Some options are totally broken on some architectures. We disable
|
||||
# them. If you need to enable them on an experimental basis, you
|
||||
# must change this code.
|
||||
|
||||
# Things that don't work based on the CPU
|
||||
.if ${MACHINE_CPUARCH} == "arm"
|
||||
BROKEN_OPTIONS+= CDDL ZFS
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_CPUARCH} == "mips"
|
||||
BROKEN_OPTIONS+= CDDL ZFS
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_CPUARCH} == "powerpc" && ${MACHINE_ARCH} == "powerpc"
|
||||
BROKEN_OPTIONS+= ZFS
|
||||
.endif
|
||||
|
||||
# Things that don't work because the kernel doesn't have the support
|
||||
# for them.
|
||||
.if ${MACHINE} != "i386"
|
||||
BROKEN_OPTIONS+= EISA
|
||||
.endif
|
||||
|
||||
.if ${MACHINE} != "i386" && ${MACHINE} != "amd64"
|
||||
BROKEN_OPTIONS+= OFED
|
||||
.endif
|
||||
|
||||
# expanded inline from bsd.mkopt.mk to avoid share/mk dependency
|
||||
|
||||
# Those that default to yes
|
||||
@ -82,6 +109,16 @@ MK_${var}:= no
|
||||
.endfor
|
||||
.undef __DEFAULT_NO_OPTIONS
|
||||
|
||||
#
|
||||
# MK_* options which are always no, usually because they are
|
||||
# unsupported/badly broken on this architecture.
|
||||
#
|
||||
.for var in ${BROKEN_OPTIONS}
|
||||
MK_${var}:= no
|
||||
.endfor
|
||||
.undef BROKEN_OPTIONS
|
||||
#end of bsd.mkopt.mk expanded inline.
|
||||
|
||||
#
|
||||
# MK_*_SUPPORT options which default to "yes" unless their corresponding
|
||||
# MK_* variable is set to "no".
|
||||
@ -104,6 +141,3 @@ MK_${var}_SUPPORT:= yes
|
||||
.endif
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
|
||||
|
||||
|
@ -93,7 +93,7 @@
|
||||
#define ATA_SS_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SS_SPD_GEN1 0x00000010
|
||||
#define ATA_SS_SPD_GEN2 0x00000020
|
||||
#define ATA_SS_SPD_GEN3 0x00000040
|
||||
#define ATA_SS_SPD_GEN3 0x00000030
|
||||
|
||||
#define ATA_SS_IPM_MASK 0x00000f00
|
||||
#define ATA_SS_IPM_NO_DEVICE 0x00000000
|
||||
@ -131,7 +131,7 @@
|
||||
#define ATA_SC_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SC_SPD_SPEED_GEN1 0x00000010
|
||||
#define ATA_SC_SPD_SPEED_GEN2 0x00000020
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000040
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000030
|
||||
|
||||
#define ATA_SC_IPM_MASK 0x00000f00
|
||||
#define ATA_SC_IPM_NONE 0x00000000
|
||||
|
@ -105,6 +105,7 @@
|
||||
#define ATA_SS_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SS_SPD_GEN1 0x00000010
|
||||
#define ATA_SS_SPD_GEN2 0x00000020
|
||||
#define ATA_SS_SPD_GEN3 0x00000030
|
||||
|
||||
#define ATA_SS_IPM_MASK 0x00000f00
|
||||
#define ATA_SS_IPM_NO_DEVICE 0x00000000
|
||||
@ -140,7 +141,7 @@
|
||||
#define ATA_SC_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SC_SPD_SPEED_GEN1 0x00000010
|
||||
#define ATA_SC_SPD_SPEED_GEN2 0x00000020
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000040
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000030
|
||||
|
||||
#define ATA_SC_IPM_MASK 0x00000f00
|
||||
#define ATA_SC_IPM_NONE 0x00000000
|
||||
|
@ -2895,9 +2895,6 @@ build_medialist(struct port_info *pi, struct ifmedia *media)
|
||||
|
||||
switch(pi->port_type) {
|
||||
case FW_PORT_TYPE_BT_XFI:
|
||||
ifmedia_add(media, m | IFM_10G_T, data, NULL);
|
||||
break;
|
||||
|
||||
case FW_PORT_TYPE_BT_XAUI:
|
||||
ifmedia_add(media, m | IFM_10G_T, data, NULL);
|
||||
/* fall through */
|
||||
|
@ -76,7 +76,9 @@ drm_pci_alloc(struct drm_device *dev, size_t size,
|
||||
if (mtx_owned(&dev->dma_lock))
|
||||
DRM_ERROR("called while holding dma_lock\n");
|
||||
|
||||
ret = bus_dma_tag_create(NULL, align, 0, /* tag, align, boundary */
|
||||
ret = bus_dma_tag_create(
|
||||
bus_get_dma_tag(dev->device), /* parent */
|
||||
align, 0, /* align, boundary */
|
||||
maxaddr, BUS_SPACE_MAXADDR, /* lowaddr, highaddr */
|
||||
NULL, NULL, /* filtfunc, filtfuncargs */
|
||||
size, 1, size, /* maxsize, nsegs, maxsegsize */
|
||||
|
@ -66,6 +66,51 @@
|
||||
#include "miibus_if.h"
|
||||
#include "etherswitch_if.h"
|
||||
|
||||
|
||||
static int
|
||||
ar8327_vlan_op(struct arswitch_softc *sc, uint32_t op, uint32_t vid,
|
||||
uint32_t data)
|
||||
{
|
||||
int err;
|
||||
|
||||
/*
|
||||
* Wait for the "done" bit to finish.
|
||||
*/
|
||||
if (arswitch_waitreg(sc->sc_dev, AR8327_REG_VTU_FUNC1,
|
||||
AR8327_VTU_FUNC1_BUSY, 0, 5))
|
||||
return (EBUSY);
|
||||
|
||||
/*
|
||||
* If it's a "load" operation, then ensure 'data' is loaded
|
||||
* in first.
|
||||
*/
|
||||
if ((op & AR8327_VTU_FUNC1_OP) == AR8327_VTU_FUNC1_OP_LOAD) {
|
||||
err = arswitch_writereg(sc->sc_dev, AR8327_REG_VTU_FUNC0, data);
|
||||
if (err)
|
||||
return (err);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the VID.
|
||||
*/
|
||||
op |= ((vid & 0xfff) << AR8327_VTU_FUNC1_VID_S);
|
||||
|
||||
/*
|
||||
* Set busy bit to start loading in the command.
|
||||
*/
|
||||
op |= AR8327_VTU_FUNC1_BUSY;
|
||||
arswitch_writereg(sc->sc_dev, AR8327_REG_VTU_FUNC1, op);
|
||||
|
||||
/*
|
||||
* Finally - wait for it to load.
|
||||
*/
|
||||
if (arswitch_waitreg(sc->sc_dev, AR8327_REG_VTU_FUNC1,
|
||||
AR8327_VTU_FUNC1_BUSY, 0, 5))
|
||||
return (EBUSY);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
ar8327_phy_fixup(struct arswitch_softc *sc, int phy)
|
||||
{
|
||||
@ -742,7 +787,7 @@ ar8327_port_vlan_get(struct arswitch_softc *sc, etherswitch_port_t *p)
|
||||
/* Retrieve the PVID */
|
||||
sc->hal.arswitch_vlan_get_pvid(sc, p->es_port, &p->es_pvid);
|
||||
|
||||
/* Retrieve the current port configuration */
|
||||
/* Retrieve the current port configuration from the VTU */
|
||||
/*
|
||||
* DOUBLE_TAG
|
||||
* VLAN_MODE_ADD
|
||||
@ -753,11 +798,25 @@ ar8327_port_vlan_get(struct arswitch_softc *sc, etherswitch_port_t *p)
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
ar8327_port_disable_mirror(struct arswitch_softc *sc, int port)
|
||||
{
|
||||
|
||||
arswitch_modifyreg(sc->sc_dev,
|
||||
AR8327_REG_PORT_LOOKUP(port),
|
||||
AR8327_PORT_LOOKUP_ING_MIRROR_EN,
|
||||
0);
|
||||
arswitch_modifyreg(sc->sc_dev,
|
||||
AR8327_REG_PORT_HOL_CTRL1(port),
|
||||
AR8327_PORT_HOL_CTRL1_EG_MIRROR_EN,
|
||||
0);
|
||||
}
|
||||
|
||||
static void
|
||||
ar8327_reset_vlans(struct arswitch_softc *sc)
|
||||
{
|
||||
int i;
|
||||
uint32_t mode, t;
|
||||
uint32_t t;
|
||||
int ports;
|
||||
|
||||
ARSWITCH_LOCK_ASSERT(sc, MA_NOTOWNED);
|
||||
@ -787,43 +846,66 @@ ar8327_reset_vlans(struct arswitch_softc *sc)
|
||||
*/
|
||||
ports = 0x7f;
|
||||
|
||||
/*
|
||||
* XXX TODO: set things up correctly for vlans!
|
||||
*/
|
||||
for (i = 0; i < AR8327_NUM_PORTS; i++) {
|
||||
int egress, ingress;
|
||||
|
||||
if (sc->vlan_mode == ETHERSWITCH_VLAN_PORT)
|
||||
if (sc->vlan_mode == ETHERSWITCH_VLAN_PORT) {
|
||||
sc->vid[i] = i | ETHERSWITCH_VID_VALID;
|
||||
/* set egress == out_keep */
|
||||
ingress = AR8X16_PORT_VLAN_MODE_PORT_ONLY;
|
||||
/* in_port_only, forward */
|
||||
egress = AR8327_PORT_VLAN1_OUT_MODE_UNTOUCH;
|
||||
} else if (sc->vlan_mode == ETHERSWITCH_VLAN_DOT1Q) {
|
||||
ingress = AR8X16_PORT_VLAN_MODE_SECURE;
|
||||
egress = AR8327_PORT_VLAN1_OUT_MODE_UNMOD;
|
||||
} else {
|
||||
/* set egress == out_keep */
|
||||
ingress = AR8X16_PORT_VLAN_MODE_PORT_ONLY;
|
||||
/* in_port_only, forward */
|
||||
egress = AR8327_PORT_VLAN1_OUT_MODE_UNTOUCH;
|
||||
}
|
||||
|
||||
/* set pvid = 1; there's only one vlangroup to start with */
|
||||
t = 1 << AR8327_PORT_VLAN0_DEF_SVID_S;
|
||||
t |= 1 << AR8327_PORT_VLAN0_DEF_CVID_S;
|
||||
arswitch_writereg(sc->sc_dev, AR8327_REG_PORT_VLAN0(i), t);
|
||||
|
||||
/* set egress == out_keep */
|
||||
mode = AR8327_PORT_VLAN1_OUT_MODE_UNTOUCH;
|
||||
|
||||
t = AR8327_PORT_VLAN1_PORT_VLAN_PROP;
|
||||
t |= mode << AR8327_PORT_VLAN1_OUT_MODE_S;
|
||||
t |= egress << AR8327_PORT_VLAN1_OUT_MODE_S;
|
||||
arswitch_writereg(sc->sc_dev, AR8327_REG_PORT_VLAN1(i), t);
|
||||
|
||||
/* Ports can see other ports */
|
||||
/* XXX not entirely true for dot1q? */
|
||||
t = (ports & ~(1 << i)); /* all ports besides us */
|
||||
t |= AR8327_PORT_LOOKUP_LEARN;
|
||||
|
||||
/* in_port_only, forward */
|
||||
t |= AR8X16_PORT_VLAN_MODE_PORT_ONLY << AR8327_PORT_LOOKUP_IN_MODE_S;
|
||||
t |= ingress << AR8327_PORT_LOOKUP_IN_MODE_S;
|
||||
t |= AR8X16_PORT_CTRL_STATE_FORWARD << AR8327_PORT_LOOKUP_STATE_S;
|
||||
arswitch_writereg(sc->sc_dev, AR8327_REG_PORT_LOOKUP(i), t);
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable port mirroring entirely.
|
||||
*/
|
||||
arswitch_modifyreg(sc->sc_dev,
|
||||
AR8327_REG_PORT_LOOKUP(i),
|
||||
AR8327_PORT_LOOKUP_ING_MIRROR_EN,
|
||||
0);
|
||||
arswitch_modifyreg(sc->sc_dev,
|
||||
AR8327_REG_PORT_HOL_CTRL1(i),
|
||||
AR8327_PORT_HOL_CTRL1_EG_MIRROR_EN,
|
||||
0);
|
||||
/*
|
||||
* Disable port mirroring entirely.
|
||||
*/
|
||||
for (i = 0; i < AR8327_NUM_PORTS; i++) {
|
||||
ar8327_port_disable_mirror(sc, i);
|
||||
}
|
||||
|
||||
/*
|
||||
* If dot1q - set pvid; dot1q, etc.
|
||||
*/
|
||||
sc->vid[0] = 1;
|
||||
if (sc->vlan_mode == ETHERSWITCH_VLAN_DOT1Q) {
|
||||
for (i = 0; i < AR8327_NUM_PORTS; i++) {
|
||||
/* Each port - pvid 1 */
|
||||
sc->hal.arswitch_vlan_set_pvid(sc, i, sc->vid[0]);
|
||||
}
|
||||
/* Initialise vlan1 - all ports, untagged */
|
||||
sc->hal.arswitch_set_dot1q_vlan(sc, ports, ports, sc->vid[0]);
|
||||
sc->vid[0] |= ETHERSWITCH_VID_VALID;
|
||||
}
|
||||
|
||||
ARSWITCH_UNLOCK(sc);
|
||||
@ -867,9 +949,6 @@ static int
|
||||
ar8327_vlan_getvgroup(struct arswitch_softc *sc, etherswitch_vlangroup_t *vg)
|
||||
{
|
||||
|
||||
/* XXX for now, no dot1q vlans */
|
||||
if (sc->vlan_mode == ETHERSWITCH_VLAN_DOT1Q)
|
||||
return (EINVAL);
|
||||
return (ar8xxx_getvgroup(sc, vg));
|
||||
}
|
||||
|
||||
@ -877,9 +956,6 @@ static int
|
||||
ar8327_vlan_setvgroup(struct arswitch_softc *sc, etherswitch_vlangroup_t *vg)
|
||||
{
|
||||
|
||||
/* XXX for now, no dot1q vlans */
|
||||
if (sc->vlan_mode == ETHERSWITCH_VLAN_DOT1Q)
|
||||
return (EINVAL);
|
||||
return (ar8xxx_setvgroup(sc, vg));
|
||||
}
|
||||
|
||||
@ -939,6 +1015,98 @@ ar8327_atu_flush(struct arswitch_softc *sc)
|
||||
return (ret);
|
||||
}
|
||||
|
||||
static int
|
||||
ar8327_flush_dot1q_vlan(struct arswitch_softc *sc)
|
||||
{
|
||||
|
||||
return (ar8327_vlan_op(sc, AR8327_VTU_FUNC1_OP_FLUSH, 0, 0));
|
||||
}
|
||||
|
||||
static int
|
||||
ar8327_purge_dot1q_vlan(struct arswitch_softc *sc, int vid)
|
||||
{
|
||||
|
||||
return (ar8327_vlan_op(sc, AR8327_VTU_FUNC1_OP_PURGE, vid, 0));
|
||||
}
|
||||
|
||||
static int
|
||||
ar8327_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports,
|
||||
uint32_t *untagged_ports, int vid)
|
||||
{
|
||||
int i, r;
|
||||
uint32_t op, reg, val;
|
||||
|
||||
op = AR8327_VTU_FUNC1_OP_GET_ONE;
|
||||
|
||||
/* Filter out the vid flags; only grab the VLAN ID */
|
||||
vid &= 0xfff;
|
||||
|
||||
/* XXX TODO: the VTU here stores egress mode - keep, tag, untagged, none */
|
||||
r = ar8327_vlan_op(sc, op, vid, 0);
|
||||
if (r != 0) {
|
||||
device_printf(sc->sc_dev, "%s: %d: op failed\n", __func__, vid);
|
||||
}
|
||||
|
||||
reg = arswitch_readreg(sc->sc_dev, AR8327_REG_VTU_FUNC0);
|
||||
DPRINTF(sc->sc_dev, "%s: %d: reg=0x%08x\n", __func__, vid, reg);
|
||||
|
||||
/*
|
||||
* If any of the bits are set, update the port mask.
|
||||
* Worry about the port config itself when getport() is called.
|
||||
*/
|
||||
*ports = 0;
|
||||
for (i = 0; i < AR8327_NUM_PORTS; i++) {
|
||||
val = reg >> AR8327_VTU_FUNC0_EG_MODE_S(i);
|
||||
val = val & 0x3;
|
||||
/* XXX KEEP (unmodified?) */
|
||||
if (val == AR8327_VTU_FUNC0_EG_MODE_TAG) {
|
||||
*ports |= (1 << i);
|
||||
} else if (val == AR8327_VTU_FUNC0_EG_MODE_UNTAG) {
|
||||
*ports |= (1 << i);
|
||||
*untagged_ports |= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ar8327_set_dot1q_vlan(struct arswitch_softc *sc, uint32_t ports,
|
||||
uint32_t untagged_ports, int vid)
|
||||
{
|
||||
int i;
|
||||
uint32_t op, val, mode;
|
||||
|
||||
op = AR8327_VTU_FUNC1_OP_LOAD;
|
||||
vid &= 0xfff;
|
||||
|
||||
DPRINTF(sc->sc_dev,
|
||||
"%s: vid: %d, ports=0x%08x, untagged_ports=0x%08x\n",
|
||||
__func__,
|
||||
vid,
|
||||
ports,
|
||||
untagged_ports);
|
||||
|
||||
/*
|
||||
* Mark it as valid; and that it should use per-VLAN MAC table,
|
||||
* not VID=0 when doing MAC lookups
|
||||
*/
|
||||
val = AR8327_VTU_FUNC0_VALID | AR8327_VTU_FUNC0_IVL;
|
||||
|
||||
for (i = 0; i < AR8327_NUM_PORTS; i++) {
|
||||
if ((ports & BIT(i)) == 0)
|
||||
mode = AR8327_VTU_FUNC0_EG_MODE_NOT;
|
||||
else if (untagged_ports & BIT(i))
|
||||
mode = AR8327_VTU_FUNC0_EG_MODE_UNTAG;
|
||||
else
|
||||
mode = AR8327_VTU_FUNC0_EG_MODE_TAG;
|
||||
|
||||
val |= mode << AR8327_VTU_FUNC0_EG_MODE_S(i);
|
||||
}
|
||||
|
||||
return (ar8327_vlan_op(sc, op, vid, val));
|
||||
}
|
||||
|
||||
void
|
||||
ar8327_attach(struct arswitch_softc *sc)
|
||||
{
|
||||
@ -952,6 +1120,10 @@ ar8327_attach(struct arswitch_softc *sc)
|
||||
sc->hal.arswitch_vlan_setvgroup = ar8327_vlan_setvgroup;
|
||||
sc->hal.arswitch_port_vlan_setup = ar8327_port_vlan_setup;
|
||||
sc->hal.arswitch_port_vlan_get = ar8327_port_vlan_get;
|
||||
sc->hal.arswitch_flush_dot1q_vlan = ar8327_flush_dot1q_vlan;
|
||||
sc->hal.arswitch_purge_dot1q_vlan = ar8327_purge_dot1q_vlan;
|
||||
sc->hal.arswitch_set_dot1q_vlan = ar8327_set_dot1q_vlan;
|
||||
sc->hal.arswitch_get_dot1q_vlan = ar8327_get_dot1q_vlan;
|
||||
|
||||
sc->hal.arswitch_vlan_init_hw = ar8327_reset_vlans;
|
||||
sc->hal.arswitch_vlan_get_pvid = ar8327_get_pvid;
|
||||
|
@ -103,7 +103,8 @@ ar8xxx_purge_dot1q_vlan(struct arswitch_softc *sc, int vid)
|
||||
}
|
||||
|
||||
int
|
||||
ar8xxx_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports, int vid)
|
||||
ar8xxx_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports,
|
||||
uint32_t *untagged_ports, int vid)
|
||||
{
|
||||
uint32_t reg;
|
||||
int err;
|
||||
@ -120,11 +121,13 @@ ar8xxx_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports, int vid)
|
||||
}
|
||||
reg &= ((1 << (sc->numphys + 1)) - 1);
|
||||
*ports = reg;
|
||||
*untagged_ports = reg;
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
ar8xxx_set_dot1q_vlan(struct arswitch_softc *sc, uint32_t ports, int vid)
|
||||
ar8xxx_set_dot1q_vlan(struct arswitch_softc *sc, uint32_t ports,
|
||||
uint32_t untagged_ports, int vid)
|
||||
{
|
||||
int err;
|
||||
|
||||
@ -223,7 +226,7 @@ ar8xxx_reset_vlans(struct arswitch_softc *sc)
|
||||
ports = 0;
|
||||
for (i = 0; i <= sc->numphys; i++)
|
||||
ports |= (1 << i);
|
||||
sc->hal.arswitch_set_dot1q_vlan(sc, ports, sc->vid[0]);
|
||||
sc->hal.arswitch_set_dot1q_vlan(sc, ports, sc->vid[0], sc->vid[0]);
|
||||
sc->vid[0] |= ETHERSWITCH_VID_VALID;
|
||||
} else if (sc->vlan_mode == ETHERSWITCH_VLAN_PORT) {
|
||||
/* Initialize the port based vlans. */
|
||||
@ -240,6 +243,7 @@ ar8xxx_reset_vlans(struct arswitch_softc *sc)
|
||||
ports << AR8X16_PORT_VLAN_DEST_PORTS_SHIFT |
|
||||
AR8X16_PORT_VLAN_MODE_SECURE <<
|
||||
AR8X16_PORT_VLAN_MODE_PORT_ONLY);
|
||||
/* XXX TODO: SECURE / PORT_ONLY is wrong? */
|
||||
}
|
||||
} else {
|
||||
/* Disable the ingress filter and get everyone on all vlans. */
|
||||
@ -286,18 +290,21 @@ ar8xxx_getvgroup(struct arswitch_softc *sc, etherswitch_vlangroup_t *vg)
|
||||
switch (sc->vlan_mode) {
|
||||
case ETHERSWITCH_VLAN_DOT1Q:
|
||||
err = sc->hal.arswitch_get_dot1q_vlan(sc, &vg->es_member_ports,
|
||||
&vg->es_untagged_ports,
|
||||
vg->es_vid);
|
||||
break;
|
||||
case ETHERSWITCH_VLAN_PORT:
|
||||
err = sc->hal.arswitch_get_port_vlan(sc, &vg->es_member_ports,
|
||||
vg->es_vid);
|
||||
vg->es_untagged_ports = vg->es_member_ports;
|
||||
break;
|
||||
default:
|
||||
vg->es_member_ports = 0;
|
||||
vg->es_untagged_ports = 0;
|
||||
err = -1;
|
||||
}
|
||||
ARSWITCH_UNLOCK(sc);
|
||||
vg->es_untagged_ports = vg->es_member_ports;
|
||||
|
||||
return (err);
|
||||
}
|
||||
|
||||
@ -344,7 +351,8 @@ ar8xxx_setvgroup(struct arswitch_softc *sc, etherswitch_vlangroup_t *vg)
|
||||
/* Member Ports. */
|
||||
switch (sc->vlan_mode) {
|
||||
case ETHERSWITCH_VLAN_DOT1Q:
|
||||
err = sc->hal.arswitch_set_dot1q_vlan(sc, vg->es_member_ports, vid);
|
||||
err = sc->hal.arswitch_set_dot1q_vlan(sc, vg->es_member_ports,
|
||||
vg->es_untagged_ports, vid);
|
||||
break;
|
||||
case ETHERSWITCH_VLAN_PORT:
|
||||
err = sc->hal.arswitch_set_port_vlan(sc, vg->es_member_ports, vid);
|
||||
|
@ -37,8 +37,10 @@ int ar8xxx_set_pvid(struct arswitch_softc *, int, int);
|
||||
|
||||
int ar8xxx_flush_dot1q_vlan(struct arswitch_softc *sc);
|
||||
int ar8xxx_purge_dot1q_vlan(struct arswitch_softc *sc, int vid);
|
||||
int ar8xxx_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports, int vid);
|
||||
int ar8xxx_set_dot1q_vlan(struct arswitch_softc *sc, uint32_t ports, int vid);
|
||||
int ar8xxx_get_dot1q_vlan(struct arswitch_softc *sc, uint32_t *ports,
|
||||
uint32_t *untagged_ports, int vid);
|
||||
int ar8xxx_set_dot1q_vlan(struct arswitch_softc *sc, uint32_t ports,
|
||||
uint32_t untagged_ports, int vid);
|
||||
int ar8xxx_get_port_vlan(struct arswitch_softc *sc, uint32_t *ports, int vid);
|
||||
int ar8xxx_set_port_vlan(struct arswitch_softc *sc, uint32_t ports, int vid);
|
||||
|
||||
|
@ -103,9 +103,9 @@ struct arswitch_softc {
|
||||
int (* arswitch_purge_dot1q_vlan) (struct arswitch_softc *sc,
|
||||
int vid);
|
||||
int (* arswitch_get_dot1q_vlan) (struct arswitch_softc *,
|
||||
uint32_t *ports, int vid);
|
||||
uint32_t *ports, uint32_t *untagged_ports, int vid);
|
||||
int (* arswitch_set_dot1q_vlan) (struct arswitch_softc *sc,
|
||||
uint32_t ports, int vid);
|
||||
uint32_t ports, uint32_t untagged_ports, int vid);
|
||||
int (* arswitch_get_port_vlan) (struct arswitch_softc *sc,
|
||||
uint32_t *ports, int vid);
|
||||
int (* arswitch_set_port_vlan) (struct arswitch_softc *sc,
|
||||
|
@ -1651,9 +1651,9 @@ static struct iap_event_descr iap_events[] = {
|
||||
|
||||
IAPDESCR(D3H_01H, 0xD3, 0x01, IAP_F_FM | IAP_F_IB | IAP_F_SBX |
|
||||
IAP_F_IBX | IAP_F_HW | IAP_F_HWX),
|
||||
IAPDESCR(D3H_03H, 0xD0, 0x3, IAP_F_IBX ),
|
||||
IAPDESCR(D3H_03H, 0xD3, 0x03, IAP_F_IBX),
|
||||
IAPDESCR(D3H_04H, 0xD3, 0x04, IAP_F_FM | IAP_F_SBX | IAP_F_IBX), /* Not defined for IBX */
|
||||
IAPDESCR(D3H_0CH, 0xD0, 0x0, IAP_F_IBX ),
|
||||
IAPDESCR(D3H_0CH, 0xD3, 0x0C, IAP_F_IBX),
|
||||
IAPDESCR(D3H_10H, 0xD3, 0x10, IAP_F_IBX ),
|
||||
IAPDESCR(D3H_20H, 0xD3, 0x20, IAP_F_IBX ),
|
||||
|
||||
|
@ -39,6 +39,8 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/param.h>
|
||||
#if (__FreeBSD_version >= 1100000)
|
||||
#include <sys/capsicum.h>
|
||||
#else
|
||||
#include <sys/capability.h>
|
||||
#endif
|
||||
#include <sys/file.h>
|
||||
#include <sys/kernel.h>
|
||||
@ -570,9 +572,7 @@ pmclog_configure_log(struct pmc_mdep *md, struct pmc_owner *po, int logfd)
|
||||
{
|
||||
int error;
|
||||
struct proc *p;
|
||||
#if (__FreeBSD_version >= 1100000)
|
||||
cap_rights_t rights;
|
||||
#endif
|
||||
/*
|
||||
* As long as it is possible to get a LOR between pmc_sx lock and
|
||||
* proctree/allproc sx locks used for adding a new process, assure
|
||||
@ -595,12 +595,11 @@ pmclog_configure_log(struct pmc_mdep *md, struct pmc_owner *po, int logfd)
|
||||
po->po_file));
|
||||
|
||||
/* get a reference to the file state */
|
||||
#if (__FreeBSD_version >= 1100000)
|
||||
error = fget_write(curthread, logfd,
|
||||
cap_rights_init(&rights, CAP_WRITE), &po->po_file);
|
||||
if (error)
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
/* mark process as owning a log file */
|
||||
po->po_flags |= PMC_PO_OWNS_LOGFILE;
|
||||
error = kproc_create(pmclog_loop, po, &po->po_kthread,
|
||||
|
@ -87,6 +87,7 @@ static int rgephy_service(struct mii_softc *, struct mii_data *, int);
|
||||
static void rgephy_status(struct mii_softc *);
|
||||
static int rgephy_mii_phy_auto(struct mii_softc *, int);
|
||||
static void rgephy_reset(struct mii_softc *);
|
||||
static int rgephy_linkup(struct mii_softc *);
|
||||
static void rgephy_loop(struct mii_softc *);
|
||||
static void rgephy_load_dspcode(struct mii_softc *);
|
||||
|
||||
@ -147,7 +148,7 @@ static int
|
||||
rgephy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
|
||||
{
|
||||
struct ifmedia_entry *ife = mii->mii_media.ifm_cur;
|
||||
int reg, speed, gig, anar;
|
||||
int speed, gig, anar;
|
||||
|
||||
switch (cmd) {
|
||||
case MII_POLLSTAT:
|
||||
@ -237,20 +238,9 @@ setit:
|
||||
* Check to see if we have link. If we do, we don't
|
||||
* need to restart the autonegotiation process.
|
||||
*/
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 &&
|
||||
sc->mii_mpd_rev >= 2) {
|
||||
/* RTL8211B(L) */
|
||||
reg = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
if (reg & RGEPHY_SSR_LINK) {
|
||||
sc->mii_ticks = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
reg = PHY_READ(sc, RL_GMEDIASTAT);
|
||||
if (reg & RL_GMEDIASTAT_LINK) {
|
||||
sc->mii_ticks = 0;
|
||||
break;
|
||||
}
|
||||
if (rgephy_linkup(sc) != 0) {
|
||||
sc->mii_ticks = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Announce link loss right after it happens. */
|
||||
@ -283,6 +273,33 @@ setit:
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
rgephy_linkup(struct mii_softc *sc)
|
||||
{
|
||||
int linkup;
|
||||
uint16_t reg;
|
||||
|
||||
linkup = 0;
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 &&
|
||||
sc->mii_mpd_rev >= RGEPHY_8211B) {
|
||||
if (sc->mii_mpd_rev == RGEPHY_8211F) {
|
||||
reg = PHY_READ(sc, RGEPHY_F_MII_SSR);
|
||||
if (reg & RGEPHY_F_SSR_LINK)
|
||||
linkup++;
|
||||
} else {
|
||||
reg = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
if (reg & RGEPHY_SSR_LINK)
|
||||
linkup++;
|
||||
}
|
||||
} else {
|
||||
reg = PHY_READ(sc, RL_GMEDIASTAT);
|
||||
if (reg & RL_GMEDIASTAT_LINK)
|
||||
linkup++;
|
||||
}
|
||||
|
||||
return (linkup);
|
||||
}
|
||||
|
||||
static void
|
||||
rgephy_status(struct mii_softc *sc)
|
||||
{
|
||||
@ -293,18 +310,10 @@ rgephy_status(struct mii_softc *sc)
|
||||
mii->mii_media_status = IFM_AVALID;
|
||||
mii->mii_media_active = IFM_ETHER;
|
||||
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= 2) {
|
||||
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
if (ssr & RGEPHY_SSR_LINK)
|
||||
mii->mii_media_status |= IFM_ACTIVE;
|
||||
} else {
|
||||
bmsr = PHY_READ(sc, RL_GMEDIASTAT);
|
||||
if (bmsr & RL_GMEDIASTAT_LINK)
|
||||
mii->mii_media_status |= IFM_ACTIVE;
|
||||
}
|
||||
if (rgephy_linkup(sc) != 0)
|
||||
mii->mii_media_status |= IFM_ACTIVE;
|
||||
|
||||
bmsr = PHY_READ(sc, RGEPHY_MII_BMSR);
|
||||
|
||||
bmcr = PHY_READ(sc, RGEPHY_MII_BMCR);
|
||||
if (bmcr & RGEPHY_BMCR_ISO) {
|
||||
mii->mii_media_active |= IFM_NONE;
|
||||
@ -323,26 +332,50 @@ rgephy_status(struct mii_softc *sc)
|
||||
}
|
||||
}
|
||||
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= 2) {
|
||||
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
switch (ssr & RGEPHY_SSR_SPD_MASK) {
|
||||
case RGEPHY_SSR_S1000:
|
||||
mii->mii_media_active |= IFM_1000_T;
|
||||
break;
|
||||
case RGEPHY_SSR_S100:
|
||||
mii->mii_media_active |= IFM_100_TX;
|
||||
break;
|
||||
case RGEPHY_SSR_S10:
|
||||
mii->mii_media_active |= IFM_10_T;
|
||||
break;
|
||||
default:
|
||||
mii->mii_media_active |= IFM_NONE;
|
||||
break;
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 &&
|
||||
sc->mii_mpd_rev >= RGEPHY_8211B) {
|
||||
if (sc->mii_mpd_rev == RGEPHY_8211F) {
|
||||
ssr = PHY_READ(sc, RGEPHY_F_MII_SSR);
|
||||
switch (ssr & RGEPHY_F_SSR_SPD_MASK) {
|
||||
case RGEPHY_F_SSR_S1000:
|
||||
mii->mii_media_active |= IFM_1000_T;
|
||||
break;
|
||||
case RGEPHY_F_SSR_S100:
|
||||
mii->mii_media_active |= IFM_100_TX;
|
||||
break;
|
||||
case RGEPHY_F_SSR_S10:
|
||||
mii->mii_media_active |= IFM_10_T;
|
||||
break;
|
||||
default:
|
||||
mii->mii_media_active |= IFM_NONE;
|
||||
break;
|
||||
}
|
||||
if (ssr & RGEPHY_F_SSR_FDX)
|
||||
mii->mii_media_active |= IFM_FDX;
|
||||
else
|
||||
mii->mii_media_active |= IFM_HDX;
|
||||
|
||||
} else {
|
||||
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
switch (ssr & RGEPHY_SSR_SPD_MASK) {
|
||||
case RGEPHY_SSR_S1000:
|
||||
mii->mii_media_active |= IFM_1000_T;
|
||||
break;
|
||||
case RGEPHY_SSR_S100:
|
||||
mii->mii_media_active |= IFM_100_TX;
|
||||
break;
|
||||
case RGEPHY_SSR_S10:
|
||||
mii->mii_media_active |= IFM_10_T;
|
||||
break;
|
||||
default:
|
||||
mii->mii_media_active |= IFM_NONE;
|
||||
break;
|
||||
}
|
||||
if (ssr & RGEPHY_SSR_FDX)
|
||||
mii->mii_media_active |= IFM_FDX;
|
||||
else
|
||||
mii->mii_media_active |= IFM_HDX;
|
||||
}
|
||||
if (ssr & RGEPHY_SSR_FDX)
|
||||
mii->mii_media_active |= IFM_FDX;
|
||||
else
|
||||
mii->mii_media_active |= IFM_HDX;
|
||||
} else {
|
||||
bmsr = PHY_READ(sc, RL_GMEDIASTAT);
|
||||
if (bmsr & RL_GMEDIASTAT_1000MBPS)
|
||||
@ -396,7 +429,7 @@ rgephy_loop(struct mii_softc *sc)
|
||||
int i;
|
||||
|
||||
if (sc->mii_mpd_model != MII_MODEL_REALTEK_RTL8251 &&
|
||||
sc->mii_mpd_rev < 2) {
|
||||
sc->mii_mpd_rev < RGEPHY_8211B) {
|
||||
PHY_WRITE(sc, RGEPHY_MII_BMCR, RGEPHY_BMCR_PDOWN);
|
||||
DELAY(1000);
|
||||
}
|
||||
@ -430,7 +463,7 @@ rgephy_load_dspcode(struct mii_softc *sc)
|
||||
int val;
|
||||
|
||||
if (sc->mii_mpd_model == MII_MODEL_REALTEK_RTL8251 ||
|
||||
sc->mii_mpd_rev >= 2)
|
||||
sc->mii_mpd_rev >= RGEPHY_8211B)
|
||||
return;
|
||||
|
||||
PHY_WRITE(sc, 31, 0x0001);
|
||||
@ -481,22 +514,34 @@ rgephy_reset(struct mii_softc *sc)
|
||||
{
|
||||
uint16_t pcr, ssr;
|
||||
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev == 3) {
|
||||
/* RTL8211C(L) */
|
||||
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
if ((ssr & RGEPHY_SSR_ALDPS) != 0) {
|
||||
ssr &= ~RGEPHY_SSR_ALDPS;
|
||||
PHY_WRITE(sc, RGEPHY_MII_SSR, ssr);
|
||||
switch (sc->mii_mpd_rev) {
|
||||
case RGEPHY_8211F:
|
||||
pcr = PHY_READ(sc, RGEPHY_F_MII_PCR1);
|
||||
if ((pcr & RGEPHY_F_PCR1_MDI_MM) != 0) {
|
||||
pcr &= ~RGEPHY_F_PCR1_MDI_MM;
|
||||
PHY_WRITE(sc, RGEPHY_F_MII_PCR1, pcr);
|
||||
}
|
||||
}
|
||||
|
||||
if (sc->mii_mpd_rev >= 2) {
|
||||
pcr = PHY_READ(sc, RGEPHY_MII_PCR);
|
||||
if ((pcr & RGEPHY_PCR_MDIX_AUTO) == 0) {
|
||||
pcr &= ~RGEPHY_PCR_MDI_MASK;
|
||||
pcr |= RGEPHY_PCR_MDIX_AUTO;
|
||||
PHY_WRITE(sc, RGEPHY_MII_PCR, pcr);
|
||||
break;
|
||||
case RGEPHY_8211C:
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0) {
|
||||
/* RTL8211C(L) */
|
||||
ssr = PHY_READ(sc, RGEPHY_MII_SSR);
|
||||
if ((ssr & RGEPHY_SSR_ALDPS) != 0) {
|
||||
ssr &= ~RGEPHY_SSR_ALDPS;
|
||||
PHY_WRITE(sc, RGEPHY_MII_SSR, ssr);
|
||||
}
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
if (sc->mii_mpd_rev >= RGEPHY_8211B) {
|
||||
pcr = PHY_READ(sc, RGEPHY_MII_PCR);
|
||||
if ((pcr & RGEPHY_PCR_MDIX_AUTO) == 0) {
|
||||
pcr &= ~RGEPHY_PCR_MDI_MASK;
|
||||
pcr |= RGEPHY_PCR_MDIX_AUTO;
|
||||
PHY_WRITE(sc, RGEPHY_MII_PCR, pcr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
mii_phy_reset(sc);
|
||||
|
@ -35,6 +35,10 @@
|
||||
#ifndef _DEV_MII_RGEPHYREG_H_
|
||||
#define _DEV_MII_RGEPHYREG_H_
|
||||
|
||||
#define RGEPHY_8211B 2
|
||||
#define RGEPHY_8211C 3
|
||||
#define RGEPHY_8211F 6
|
||||
|
||||
/*
|
||||
* RealTek 8169S/8110S gigE PHY registers
|
||||
*/
|
||||
@ -162,4 +166,21 @@
|
||||
#define RGEPHY_SSR_ALDPS 0x0008 /* RTL8211C(L) only */
|
||||
#define RGEPHY_SSR_JABBER 0x0001 /* Jabber */
|
||||
|
||||
/* RTL8211F */
|
||||
#define RGEPHY_F_MII_PCR1 0x18 /* PHY Specific control register 1 */
|
||||
#define RGEPHY_F_PCR1_MDI_MM 0x0200 /* MDI / MDIX Manual Mode */
|
||||
#define RGEPHY_F_PCR1_MDI_MODE 0x0100 /* MDI Mode (0=MDIX,1=MDI) */
|
||||
#define RGEPHY_F_PCR1_ALDPS_EN 0x0004 /* Link Down Power Saving Enable */
|
||||
|
||||
/* RTL8211F */
|
||||
#define RGEPHY_F_MII_SSR 0x1A /* PHY Specific status register */
|
||||
#define RGEPHY_F_SSR_S1000 0x0020 /* 1000Mbps */
|
||||
#define RGEPHY_F_SSR_S100 0x0010 /* 100Mbps */
|
||||
#define RGEPHY_F_SSR_S10 0x0000 /* 10Mbps */
|
||||
#define RGEPHY_F_SSR_SPD_MASK 0x0030
|
||||
#define RGEPHY_F_SSR_FDX 0x0008 /* full duplex */
|
||||
#define RGEPHY_F_SSR_LINK 0x0004 /* link up */
|
||||
#define RGEPHY_F_SSR_MDI 0x0002 /* MDI/MDIX */
|
||||
#define RGEPHY_F_SSR_JABBER 0x0001 /* Jabber */
|
||||
|
||||
#endif /* _DEV_RGEPHY_MIIREG_H_ */
|
||||
|
@ -263,7 +263,7 @@
|
||||
#define SATA_SS_SPD_NO_SPEED 0x00000000
|
||||
#define SATA_SS_SPD_GEN1 0x00000010
|
||||
#define SATA_SS_SPD_GEN2 0x00000020
|
||||
#define SATA_SS_SPD_GEN3 0x00000040
|
||||
#define SATA_SS_SPD_GEN3 0x00000030
|
||||
|
||||
#define SATA_SS_IPM_MASK 0x00000f00
|
||||
#define SATA_SS_IPM_NO_DEVICE 0x00000000
|
||||
@ -298,7 +298,7 @@
|
||||
#define SATA_SC_SPD_NO_SPEED 0x00000000
|
||||
#define SATA_SC_SPD_SPEED_GEN1 0x00000010
|
||||
#define SATA_SC_SPD_SPEED_GEN2 0x00000020
|
||||
#define SATA_SC_SPD_SPEED_GEN3 0x00000040
|
||||
#define SATA_SC_SPD_SPEED_GEN3 0x00000030
|
||||
|
||||
#define SATA_SC_IPM_MASK 0x00000f00
|
||||
#define SATA_SC_IPM_NONE 0x00000000
|
||||
|
@ -92,7 +92,7 @@
|
||||
#define ATA_SS_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SS_SPD_GEN1 0x00000010
|
||||
#define ATA_SS_SPD_GEN2 0x00000020
|
||||
#define ATA_SS_SPD_GEN3 0x00000040
|
||||
#define ATA_SS_SPD_GEN3 0x00000030
|
||||
|
||||
#define ATA_SS_IPM_MASK 0x00000f00
|
||||
#define ATA_SS_IPM_NO_DEVICE 0x00000000
|
||||
@ -128,7 +128,7 @@
|
||||
#define ATA_SC_SPD_NO_SPEED 0x00000000
|
||||
#define ATA_SC_SPD_SPEED_GEN1 0x00000010
|
||||
#define ATA_SC_SPD_SPEED_GEN2 0x00000020
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000040
|
||||
#define ATA_SC_SPD_SPEED_GEN3 0x00000030
|
||||
|
||||
#define ATA_SC_IPM_MASK 0x00000f00
|
||||
#define ATA_SC_IPM_NONE 0x00000000
|
||||
|
@ -1020,6 +1020,23 @@ g_mirror_sync_done(struct bio *bp)
|
||||
wakeup(sc);
|
||||
}
|
||||
|
||||
static void
|
||||
g_mirror_candelete(struct bio *bp)
|
||||
{
|
||||
struct g_mirror_softc *sc;
|
||||
struct g_mirror_disk *disk;
|
||||
int *val;
|
||||
|
||||
sc = bp->bio_to->geom->softc;
|
||||
LIST_FOREACH(disk, &sc->sc_disks, d_next) {
|
||||
if (disk->d_flags & G_MIRROR_DISK_FLAG_CANDELETE)
|
||||
break;
|
||||
}
|
||||
val = (int *)bp->bio_data;
|
||||
*val = (disk != NULL);
|
||||
g_io_deliver(bp, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
g_mirror_kernel_dump(struct bio *bp)
|
||||
{
|
||||
@ -1114,9 +1131,10 @@ g_mirror_start(struct bio *bp)
|
||||
g_mirror_flush(sc, bp);
|
||||
return;
|
||||
case BIO_GETATTR:
|
||||
if (g_handleattr_int(bp, "GEOM::candelete", 1))
|
||||
if (!strcmp(bp->bio_attribute, "GEOM::candelete")) {
|
||||
g_mirror_candelete(bp);
|
||||
return;
|
||||
else if (strcmp("GEOM::kerneldump", bp->bio_attribute) == 0) {
|
||||
} else if (strcmp("GEOM::kerneldump", bp->bio_attribute) == 0) {
|
||||
g_mirror_kernel_dump(bp);
|
||||
return;
|
||||
}
|
||||
@ -1680,6 +1698,10 @@ g_mirror_register_request(struct bio *bp)
|
||||
("Consumer %s not opened (r%dw%de%d).",
|
||||
cp->provider->name, cp->acr, cp->acw, cp->ace));
|
||||
}
|
||||
if (bioq_first(&queue) == NULL) {
|
||||
g_io_deliver(bp, EOPNOTSUPP);
|
||||
return;
|
||||
}
|
||||
while ((cbp = bioq_takefirst(&queue)) != NULL) {
|
||||
G_MIRROR_LOGREQ(3, cbp, "Sending request.");
|
||||
cp = cbp->bio_caller1;
|
||||
|
@ -70,6 +70,7 @@ struct g_part_alias_list {
|
||||
enum g_part_alias alias;
|
||||
} g_part_alias_list[G_PART_ALIAS_COUNT] = {
|
||||
{ "apple-boot", G_PART_ALIAS_APPLE_BOOT },
|
||||
{ "apple-core-storage", G_PART_ALIAS_APPLE_CORE_STORAGE },
|
||||
{ "apple-hfs", G_PART_ALIAS_APPLE_HFS },
|
||||
{ "apple-label", G_PART_ALIAS_APPLE_LABEL },
|
||||
{ "apple-raid", G_PART_ALIAS_APPLE_RAID },
|
||||
|
@ -85,6 +85,7 @@ enum g_part_alias {
|
||||
G_PART_ALIAS_DFBSD_HAMMER, /* A DfBSD HAMMER FS partition entry */
|
||||
G_PART_ALIAS_DFBSD_HAMMER2, /* A DfBSD HAMMER2 FS partition entry */
|
||||
G_PART_ALIAS_PREP_BOOT, /* A PREP/CHRP boot partition entry. */
|
||||
G_PART_ALIAS_APPLE_CORE_STORAGE,/* An Apple Core Storage partition. */
|
||||
/* Keep the following last */
|
||||
G_PART_ALIAS_COUNT
|
||||
};
|
||||
|
@ -146,6 +146,8 @@ static struct g_part_scheme g_part_gpt_scheme = {
|
||||
G_PART_SCHEME_DECLARE(g_part_gpt);
|
||||
|
||||
static struct uuid gpt_uuid_apple_boot = GPT_ENT_TYPE_APPLE_BOOT;
|
||||
static struct uuid gpt_uuid_apple_core_storage =
|
||||
GPT_ENT_TYPE_APPLE_CORE_STORAGE;
|
||||
static struct uuid gpt_uuid_apple_hfs = GPT_ENT_TYPE_APPLE_HFS;
|
||||
static struct uuid gpt_uuid_apple_label = GPT_ENT_TYPE_APPLE_LABEL;
|
||||
static struct uuid gpt_uuid_apple_raid = GPT_ENT_TYPE_APPLE_RAID;
|
||||
@ -198,6 +200,7 @@ static struct g_part_uuid_alias {
|
||||
int mbrtype;
|
||||
} gpt_uuid_alias_match[] = {
|
||||
{ &gpt_uuid_apple_boot, G_PART_ALIAS_APPLE_BOOT, 0xab },
|
||||
{ &gpt_uuid_apple_core_storage, G_PART_ALIAS_APPLE_CORE_STORAGE, 0 },
|
||||
{ &gpt_uuid_apple_hfs, G_PART_ALIAS_APPLE_HFS, 0xaf },
|
||||
{ &gpt_uuid_apple_label, G_PART_ALIAS_APPLE_LABEL, 0 },
|
||||
{ &gpt_uuid_apple_raid, G_PART_ALIAS_APPLE_RAID, 0 },
|
||||
|
@ -1,13 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Oleksij Rempel <linux@rempel-privat.de>
|
||||
*
|
||||
* Licensed under the X11 license or the GPL v2 (or later)
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "alphascale-asm9260.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Alphascale asm9260 Development Kit";
|
||||
compatible = "alphascale,asm9260devkit", "alphascale,asm9260";
|
||||
};
|
@ -1,63 +0,0 @@
|
||||
/*
|
||||
* Copyright 2014 Oleksij Rempel <linux@rempel-privat.de>
|
||||
*
|
||||
* Licensed under the X11 license or the GPL v2 (or later)
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
#include <dt-bindings/clock/alphascale,asm9260.h>
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&icoll>;
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x20000000 0x2000000>;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu {
|
||||
compatible = "arm,arm926ej-s";
|
||||
device_type = "cpu";
|
||||
clocks = <&acc CLKID_SYS_CPU>;
|
||||
};
|
||||
};
|
||||
|
||||
osc24m: oscillator {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <24000000>;
|
||||
clock-accuracy = <30000>;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
ranges;
|
||||
|
||||
acc: clock-controller@80040000 {
|
||||
compatible = "alphascale,asm9260-clock-controller";
|
||||
#clock-cells = <1>;
|
||||
clocks = <&osc24m>;
|
||||
reg = <0x80040000 0x204>;
|
||||
};
|
||||
|
||||
icoll: interrupt-controller@80054000 {
|
||||
compatible = "alphascale,asm9260-icoll";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x80054000 0x200>;
|
||||
};
|
||||
|
||||
timer0: timer@80088000 {
|
||||
compatible = "alphascale,asm9260-timer";
|
||||
reg = <0x80088000 0x4000>;
|
||||
clocks = <&acc CLKID_AHB_TIMER0>;
|
||||
interrupts = <29>;
|
||||
};
|
||||
};
|
||||
};
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
* arch/arm/boot/dts/axm5516-amarillo.dts
|
||||
*
|
||||
* Copyright (C) 2013 LSI
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/memreserve/ 0x00000000 0x00400000;
|
||||
|
||||
#include "axm55xx.dtsi"
|
||||
#include "axm5516-cpus.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Amarillo AXM5516";
|
||||
compatible = "lsi,axm5516-amarillo", "lsi,axm5516";
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0 0x00000000 0x02 0x00000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&serial0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&serial1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&serial2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&serial3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
status = "okay";
|
||||
};
|
@ -1,204 +0,0 @@
|
||||
/*
|
||||
* arch/arm/boot/dts/axm55xx.dtsi
|
||||
*
|
||||
* Copyright (C) 2013 LSI
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/clock/lsi,axm5516-clks.h>
|
||||
|
||||
#include "skeleton64.dtsi"
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
aliases {
|
||||
serial0 = &serial0;
|
||||
serial1 = &serial1;
|
||||
serial2 = &serial2;
|
||||
serial3 = &serial3;
|
||||
timer = &timer0;
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
clk_ref0: clk_ref0 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <125000000>;
|
||||
};
|
||||
|
||||
clk_ref1: clk_ref1 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <125000000>;
|
||||
};
|
||||
|
||||
clk_ref2: clk_ref2 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <125000000>;
|
||||
};
|
||||
|
||||
clks: clock-controller@2010020000 {
|
||||
compatible = "lsi,axm5516-clks";
|
||||
#clock-cells = <1>;
|
||||
reg = <0x20 0x10020000 0 0x20000>;
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@2001001000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <0>;
|
||||
interrupt-controller;
|
||||
reg = <0x20 0x01001000 0 0x1000>,
|
||||
<0x20 0x01002000 0 0x1000>,
|
||||
<0x20 0x01004000 0 0x2000>,
|
||||
<0x20 0x01006000 0 0x2000>;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
|
||||
IRQ_TYPE_LEVEL_HIGH)>;
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv7-timer";
|
||||
interrupts =
|
||||
<GIC_PPI 13
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a15-pmu";
|
||||
interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
device_type = "soc";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
interrupt-parent = <&gic>;
|
||||
ranges;
|
||||
|
||||
syscon: syscon@2010030000 {
|
||||
compatible = "lsi,axxia-syscon", "syscon";
|
||||
reg = <0x20 0x10030000 0 0x2000>;
|
||||
};
|
||||
|
||||
reset: reset@2010031000 {
|
||||
compatible = "lsi,axm55xx-reset";
|
||||
syscon = <&syscon>;
|
||||
};
|
||||
|
||||
amba {
|
||||
compatible = "arm,amba-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
serial0: uart@2010080000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x20 0x10080000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial1: uart@2010081000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x20 0x10081000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial2: uart@2010082000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x20 0x10082000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial3: uart@2010083000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x20 0x10083000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer0: timer@2010091000 {
|
||||
compatible = "arm,sp804", "arm,primecell";
|
||||
reg = <0x20 0x10091000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
gpio0: gpio@2010092000 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "arm,pl061", "arm,primecell";
|
||||
gpio-controller;
|
||||
reg = <0x20 0x10092000 0x00 0x1000>;
|
||||
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio1: gpio@2010093000 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "arm,pl061", "arm,primecell";
|
||||
gpio-controller;
|
||||
reg = <0x20 0x10093000 0x00 0x1000>;
|
||||
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks AXXIA_CLK_PER>;
|
||||
clock-names = "apb_pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
Local Variables:
|
||||
mode: C
|
||||
End:
|
||||
*/
|
@ -1,651 +0,0 @@
|
||||
/*
|
||||
* Google Snow board device tree source
|
||||
*
|
||||
* Copyright (c) 2012 Google, Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/clock/maxim,max77686.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include "exynos5250.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Google Snow";
|
||||
compatible = "google,snow", "samsung,exynos5250", "samsung,exynos5";
|
||||
|
||||
aliases {
|
||||
i2c104 = &i2c_104;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x80000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=tty1";
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&power_key_irq &lid_irq>;
|
||||
|
||||
power {
|
||||
label = "Power";
|
||||
gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_POWER>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
lid-switch {
|
||||
label = "Lid";
|
||||
gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <5>; /* EV_SW */
|
||||
linux,code = <0>; /* SW_LID */
|
||||
debounce-interval = <1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
|
||||
vbat: vbat-fixed-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vbat-supply";
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
i2c-arbitrator {
|
||||
compatible = "i2c-arb-gpio-challenge";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-parent = <&{/i2c@12CA0000}>;
|
||||
|
||||
our-claim-gpio = <&gpf0 3 GPIO_ACTIVE_LOW>;
|
||||
their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
|
||||
slew-delay-us = <10>;
|
||||
wait-retry-us = <3000>;
|
||||
wait-free-us = <50000>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&arb_our_claim &arb_their_claim>;
|
||||
|
||||
/* Use ID 104 as a hint that we're on physical bus 4 */
|
||||
i2c_104: i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
battery: sbs-battery@b {
|
||||
compatible = "sbs,sbs-battery";
|
||||
reg = <0xb>;
|
||||
sbs,poll-retry-count = <1>;
|
||||
};
|
||||
|
||||
cros_ec: embedded-controller {
|
||||
compatible = "google,cros-ec-i2c";
|
||||
reg = <0x1e>;
|
||||
interrupts = <6 IRQ_TYPE_NONE>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ec_irq>;
|
||||
wakeup-source;
|
||||
};
|
||||
|
||||
power-regulator {
|
||||
compatible = "ti,tps65090";
|
||||
reg = <0x48>;
|
||||
|
||||
/*
|
||||
* Config irq to disable internal pulls
|
||||
* even though we run in polling mode.
|
||||
*/
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tps65090_irq>;
|
||||
|
||||
vsys1-supply = <&vbat>;
|
||||
vsys2-supply = <&vbat>;
|
||||
vsys3-supply = <&vbat>;
|
||||
infet1-supply = <&vbat>;
|
||||
infet2-supply = <&vbat>;
|
||||
infet3-supply = <&vbat>;
|
||||
infet4-supply = <&vbat>;
|
||||
infet5-supply = <&vbat>;
|
||||
infet6-supply = <&vbat>;
|
||||
infet7-supply = <&vbat>;
|
||||
vsys-l1-supply = <&vbat>;
|
||||
vsys-l2-supply = <&vbat>;
|
||||
|
||||
regulators {
|
||||
dcdc1 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
dcdc2 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
dcdc3 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
fet1: fet1 {
|
||||
regulator-name = "vcd_led";
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
tps65090_fet2: fet2 {
|
||||
regulator-name = "video_mid";
|
||||
regulator-always-on;
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
fet3 {
|
||||
regulator-name = "wwan_r";
|
||||
regulator-always-on;
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
fet4 {
|
||||
regulator-name = "sdcard";
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
fet5 {
|
||||
regulator-name = "camout";
|
||||
regulator-always-on;
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
fet6: fet6 {
|
||||
regulator-name = "lcd_vdd";
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
tps65090_fet7: fet7 {
|
||||
regulator-name = "video_mid_1a";
|
||||
regulator-always-on;
|
||||
ti,overcurrent-wait = <3>;
|
||||
};
|
||||
ldo1 {
|
||||
};
|
||||
ldo2 {
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "ti,tps65090-charger";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
i2c@12CD0000 {
|
||||
ptn3460: lvds-bridge@20 {
|
||||
compatible = "nxp,ptn3460";
|
||||
reg = <0x20>;
|
||||
powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
|
||||
edid-emulation = <5>;
|
||||
panel = <&panel>;
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "google,snow-audio-max98095";
|
||||
|
||||
samsung,model = "Snow-I2S-MAX98095";
|
||||
samsung,i2s-controller = <&i2s0>;
|
||||
samsung,audio-codec = <&max98095>;
|
||||
};
|
||||
|
||||
usb3_vbus_reg: regulator-usb3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "P5.0V_USB3CON";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb3_vbus_en>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
fixed-rate-clocks {
|
||||
xxti {
|
||||
compatible = "samsung,clock-xxti";
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 0 1000000 0>;
|
||||
brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
|
||||
default-brightness-level = <7>;
|
||||
enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <&fet1>;
|
||||
pinctrl-0 = <&pwm0_out>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "auo,b116xw03";
|
||||
power-supply = <&fet6>;
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
};
|
||||
|
||||
&dp {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dp_hpd>;
|
||||
samsung,color-space = <0>;
|
||||
samsung,dynamic-range = <0>;
|
||||
samsung,ycbcr-coeff = <0>;
|
||||
samsung,color-depth = <1>;
|
||||
samsung,link-rate = <0x0a>;
|
||||
samsung,lane-count = <2>;
|
||||
samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
|
||||
bridge = <&ptn3460>;
|
||||
};
|
||||
|
||||
&ehci {
|
||||
samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&fimd {
|
||||
status = "okay";
|
||||
samsung,invert-vclk;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_hpd_irq>;
|
||||
phy = <&hdmiphy>;
|
||||
ddc = <&i2c_2>;
|
||||
hdmi-en-supply = <&tps65090_fet7>;
|
||||
vdd-supply = <&ldo8_reg>;
|
||||
vdd_osc-supply = <&ldo10_reg>;
|
||||
vdd_pll-supply = <&ldo8_reg>;
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
|
||||
max77686: max77686@09 {
|
||||
compatible = "maxim,max77686";
|
||||
interrupt-parent = <&gpx3>;
|
||||
interrupts = <2 IRQ_TYPE_NONE>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max77686_irq>;
|
||||
wakeup-source;
|
||||
reg = <0x09>;
|
||||
#clock-cells = <1>;
|
||||
|
||||
voltage-regulators {
|
||||
ldo1_reg: LDO1 {
|
||||
regulator-name = "P1.0V_LDO_OUT1";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo2_reg: LDO2 {
|
||||
regulator-name = "P1.8V_LDO_OUT2";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo3_reg: LDO3 {
|
||||
regulator-name = "P1.8V_LDO_OUT3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "P1.1V_LDO_OUT7";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo8_reg: LDO8 {
|
||||
regulator-name = "P1.0V_LDO_OUT8";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo10_reg: LDO10 {
|
||||
regulator-name = "P1.8V_LDO_OUT10";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo12_reg: LDO12 {
|
||||
regulator-name = "P3.0V_LDO_OUT12";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo14_reg: LDO14 {
|
||||
regulator-name = "P1.8V_LDO_OUT14";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo15_reg: LDO15 {
|
||||
regulator-name = "P1.0V_LDO_OUT15";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo16_reg: LDO16 {
|
||||
regulator-name = "P1.8V_LDO_OUT16";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck1_reg: BUCK1 {
|
||||
regulator-name = "vdd_mif";
|
||||
regulator-min-microvolt = <950000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck2_reg: BUCK2 {
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck3_reg: BUCK3 {
|
||||
regulator-name = "vdd_int";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck4_reg: BUCK4 {
|
||||
regulator-name = "vdd_g3d";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck5_reg: BUCK5 {
|
||||
regulator-name = "P1.8V_BUCK_OUT5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck6_reg: BUCK6 {
|
||||
regulator-name = "P1.35V_BUCK_OUT6";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck7_reg: BUCK7 {
|
||||
regulator-name = "P2.0V_BUCK_OUT7";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck8_reg: BUCK8 {
|
||||
regulator-name = "P2.85V_BUCK_OUT8";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_1 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
|
||||
trackpad {
|
||||
reg = <0x67>;
|
||||
compatible = "cypress,cyapa";
|
||||
interrupts = <2 IRQ_TYPE_NONE>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Disabled pullups since external part has its own pullups and
|
||||
* double-pulling gets us out of spec in some cases.
|
||||
*/
|
||||
&i2c2_bus {
|
||||
samsung,pin-pud = <0>;
|
||||
};
|
||||
|
||||
&i2c_2 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
|
||||
hdmiddc@50 {
|
||||
compatible = "samsung,exynos4210-hdmiddc";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_3 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
};
|
||||
|
||||
&i2c_4 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
};
|
||||
|
||||
&i2c_5 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
};
|
||||
|
||||
&i2c_7 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
|
||||
max98095: codec@11 {
|
||||
compatible = "maxim,max98095";
|
||||
reg = <0x11>;
|
||||
pinctrl-0 = <&max98095_en>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_8 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <378000>;
|
||||
|
||||
hdmiphy: hdmiphy@38 {
|
||||
compatible = "samsung,exynos4212-hdmiphy";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2s0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc_0 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
broken-cd;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
};
|
||||
|
||||
&mmc_2 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
|
||||
bus-width = <4>;
|
||||
wp-gpios = <&gpc2 1 GPIO_ACTIVE_HIGH>;
|
||||
cap-sd-highspeed;
|
||||
};
|
||||
|
||||
/*
|
||||
* On Snow we've got SIP WiFi and so can keep drive strengths low to
|
||||
* reduce EMI.
|
||||
*/
|
||||
&mmc_3 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
broken-cd;
|
||||
card-detect-delay = <200>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
|
||||
bus-width = <4>;
|
||||
cap-sd-highspeed;
|
||||
};
|
||||
|
||||
&pinctrl_0 {
|
||||
power_key_irq: power-key-irq {
|
||||
samsung,pins = "gpx1-3";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
ec_irq: ec-irq {
|
||||
samsung,pins = "gpx1-6";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
max98095_en: max98095-en {
|
||||
samsung,pins = "gpx1-7";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
tps65090_irq: tps65090-irq {
|
||||
samsung,pins = "gpx2-6";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
usb3_vbus_en: usb3-vbus-en {
|
||||
samsung,pins = "gpx2-7";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
max77686_irq: max77686-irq {
|
||||
samsung,pins = "gpx3-2";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
lid_irq: lid-irq {
|
||||
samsung,pins = "gpx3-5";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
hdmi_hpd_irq: hdmi-hpd-irq {
|
||||
samsung,pins = "gpx3-7";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <1>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_1 {
|
||||
arb_their_claim: arb-their-claim {
|
||||
samsung,pins = "gpe0-4";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
arb_our_claim: arb-our-claim {
|
||||
samsung,pins = "gpf0-3";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "okay";
|
||||
clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
|
||||
clock-names = "rtc", "rtc_src";
|
||||
};
|
||||
|
||||
&sd3_bus4 {
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
&sd3_clk {
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
&sd3_cmd {
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
&spi_1 {
|
||||
status = "okay";
|
||||
samsung,spi-src-clk = <0>;
|
||||
num-cs = <1>;
|
||||
};
|
||||
|
||||
&usbdrd_dwc3 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd_phy {
|
||||
vbus-supply = <&usb3_vbus_reg>;
|
||||
};
|
||||
|
||||
#include "cros-ec-keyboard.dtsi"
|
@ -1,968 +0,0 @@
|
||||
/*
|
||||
* Google Peach Pit Rev 6+ board device tree source
|
||||
*
|
||||
* Copyright (c) 2014 Google, Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/clock/maxim,max77802.h>
|
||||
#include <dt-bindings/regulator/maxim,max77802.h>
|
||||
#include "exynos5420.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Google Peach Pit Rev 6+";
|
||||
|
||||
compatible = "google,pit-rev16",
|
||||
"google,pit-rev15", "google,pit-rev14",
|
||||
"google,pit-rev13", "google,pit-rev12",
|
||||
"google,pit-rev11", "google,pit-rev10",
|
||||
"google,pit-rev9", "google,pit-rev8",
|
||||
"google,pit-rev7", "google,pit-rev6",
|
||||
"google,pit", "google,peach","samsung,exynos5420",
|
||||
"samsung,exynos5";
|
||||
|
||||
aliases {
|
||||
/* Assign 20 so we don't get confused w/ builtin ones */
|
||||
i2c20 = "/spi@12d40000/cros-ec@0/i2c-tunnel";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 0 1000000 0>;
|
||||
brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
|
||||
default-brightness-level = <7>;
|
||||
power-supply = <&tps65090_fet1>;
|
||||
pinctrl-0 = <&pwm0_out>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
fixed-rate-clocks {
|
||||
oscclk {
|
||||
compatible = "samsung,exynos5420-oscclk";
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&power_key_irq &lid_irq>;
|
||||
|
||||
power {
|
||||
label = "Power";
|
||||
gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_POWER>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
lid-switch {
|
||||
label = "Lid";
|
||||
gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <5>; /* EV_SW */
|
||||
linux,code = <0>; /* SW_LID */
|
||||
debounce-interval = <1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x20000000 0x80000000>;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "google,snow-audio-max98090";
|
||||
|
||||
samsung,model = "Peach-Pit-I2S-MAX98090";
|
||||
samsung,i2s-controller = <&i2s0>;
|
||||
samsung,audio-codec = <&max98090>;
|
||||
};
|
||||
|
||||
usb300_vbus_reg: regulator-usb300 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "P5.0V_USB3CON0";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gph0 0 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb300_vbus_en>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
usb301_vbus_reg: regulator-usb301 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "P5.0V_USB3CON1";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gph0 1 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb301_vbus_en>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vbat: fixed-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vbat-supply";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "auo,b116xw03";
|
||||
power-supply = <&tps65090_fet6>;
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
};
|
||||
|
||||
&adc {
|
||||
status = "okay";
|
||||
vdd-supply = <&ldo9_reg>;
|
||||
};
|
||||
|
||||
&dp {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dp_hpd_gpio>;
|
||||
samsung,color-space = <0>;
|
||||
samsung,dynamic-range = <0>;
|
||||
samsung,ycbcr-coeff = <0>;
|
||||
samsung,color-depth = <1>;
|
||||
samsung,link-rate = <0x06>;
|
||||
samsung,lane-count = <2>;
|
||||
samsung,hpd-gpio = <&gpx2 6 0>;
|
||||
bridge = <&ps8625>;
|
||||
};
|
||||
|
||||
&fimd {
|
||||
status = "okay";
|
||||
samsung,invert-vclk;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_hpd_irq>;
|
||||
ddc = <&i2c_2>;
|
||||
|
||||
hdmi-en-supply = <&tps65090_fet7>;
|
||||
vdd-supply = <&ldo8_reg>;
|
||||
vdd_osc-supply = <&ldo10_reg>;
|
||||
vdd_pll-supply = <&ldo8_reg>;
|
||||
};
|
||||
|
||||
&hsi2c_4 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
max77802: max77802-pmic@9 {
|
||||
compatible = "maxim,max77802";
|
||||
interrupt-parent = <&gpx3>;
|
||||
interrupts = <1 IRQ_TYPE_NONE>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max77802_irq>, <&pmic_selb>,
|
||||
<&pmic_dvs_1>, <&pmic_dvs_2>, <&pmic_dvs_3>;
|
||||
wakeup-source;
|
||||
reg = <0x9>;
|
||||
#clock-cells = <1>;
|
||||
|
||||
inb1-supply = <&tps65090_dcdc2>;
|
||||
inb2-supply = <&tps65090_dcdc1>;
|
||||
inb3-supply = <&tps65090_dcdc2>;
|
||||
inb4-supply = <&tps65090_dcdc2>;
|
||||
inb5-supply = <&tps65090_dcdc1>;
|
||||
inb6-supply = <&tps65090_dcdc2>;
|
||||
inb7-supply = <&tps65090_dcdc1>;
|
||||
inb8-supply = <&tps65090_dcdc1>;
|
||||
inb9-supply = <&tps65090_dcdc1>;
|
||||
inb10-supply = <&tps65090_dcdc1>;
|
||||
|
||||
inl1-supply = <&buck5_reg>;
|
||||
inl2-supply = <&buck7_reg>;
|
||||
inl3-supply = <&buck9_reg>;
|
||||
inl4-supply = <&buck9_reg>;
|
||||
inl5-supply = <&buck9_reg>;
|
||||
inl6-supply = <&tps65090_dcdc2>;
|
||||
inl7-supply = <&buck9_reg>;
|
||||
inl9-supply = <&tps65090_dcdc2>;
|
||||
inl10-supply = <&buck7_reg>;
|
||||
|
||||
regulators {
|
||||
buck1_reg: BUCK1 {
|
||||
regulator-name = "vdd_mif";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck2_reg: BUCK2 {
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck3_reg: BUCK3 {
|
||||
regulator-name = "vdd_int";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck4_reg: BUCK4 {
|
||||
regulator-name = "vdd_g3d";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck5_reg: BUCK5 {
|
||||
regulator-name = "vdd_1v2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck6_reg: BUCK6 {
|
||||
regulator-name = "vdd_kfc";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck7_reg: BUCK7 {
|
||||
regulator-name = "vdd_1v35";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck8_reg: BUCK8 {
|
||||
regulator-name = "vdd_emmc";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck9_reg: BUCK9 {
|
||||
regulator-name = "vdd_2v";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck10_reg: BUCK10 {
|
||||
regulator-name = "vdd_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo1_reg: LDO1 {
|
||||
regulator-name = "vdd_1v0";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo2_reg: LDO2 {
|
||||
regulator-name = "vdd_1v2_2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo3_reg: LDO3 {
|
||||
regulator-name = "vdd_1v8_3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
vqmmc_sdcard: ldo4_reg: LDO4 {
|
||||
regulator-name = "vdd_sd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo5_reg: LDO5 {
|
||||
regulator-name = "vdd_1v8_5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo6_reg: LDO6 {
|
||||
regulator-name = "vdd_1v8_6";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "vdd_1v8_7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo8_reg: LDO8 {
|
||||
regulator-name = "vdd_ldo8";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo9_reg: LDO9 {
|
||||
regulator-name = "vdd_ldo9";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo10_reg: LDO10 {
|
||||
regulator-name = "vdd_ldo10";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo11_reg: LDO11 {
|
||||
regulator-name = "vdd_ldo11";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo12_reg: LDO12 {
|
||||
regulator-name = "vdd_ldo12";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo13_reg: LDO13 {
|
||||
regulator-name = "vdd_ldo13";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo14_reg: LDO14 {
|
||||
regulator-name = "vdd_ldo14";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo15_reg: LDO15 {
|
||||
regulator-name = "vdd_ldo15";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo17_reg: LDO17 {
|
||||
regulator-name = "vdd_g3ds";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo18_reg: LDO18 {
|
||||
regulator-name = "ldo_18";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo19_reg: LDO19 {
|
||||
regulator-name = "ldo_19";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo20_reg: LDO20 {
|
||||
regulator-name = "ldo_20";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo21_reg: LDO21 {
|
||||
regulator-name = "ldo_21";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo23_reg: LDO23 {
|
||||
regulator-name = "ldo_23";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo24_reg: LDO24 {
|
||||
regulator-name = "ldo_24";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo25_reg: LDO25 {
|
||||
regulator-name = "ldo_25";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo26_reg: LDO26 {
|
||||
regulator-name = "ldo_26";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo27_reg: LDO27 {
|
||||
regulator-name = "ldo_27";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo28_reg: LDO28 {
|
||||
regulator-name = "ldo_28";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo29_reg: LDO29 {
|
||||
regulator-name = "ldo_29";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo30_reg: LDO30 {
|
||||
regulator-name = "vdd_mifs";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo32_reg: LDO32 {
|
||||
regulator-name = "ldo_32";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo33_reg: LDO33 {
|
||||
regulator-name = "ldo_33";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo34_reg: LDO34 {
|
||||
regulator-name = "ldo_34";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo35_reg: LDO35 {
|
||||
regulator-name = "ldo_35";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_7 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
max98090: codec@10 {
|
||||
compatible = "maxim,max98090";
|
||||
reg = <0x10>;
|
||||
interrupts = <2 0>;
|
||||
interrupt-parent = <&gpx0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max98090_irq>;
|
||||
};
|
||||
|
||||
light-sensor@44 {
|
||||
compatible = "isil,isl29018";
|
||||
reg = <0x44>;
|
||||
vcc-supply = <&tps65090_fet5>;
|
||||
};
|
||||
|
||||
ps8625: lvds-bridge@48 {
|
||||
compatible = "parade,ps8625";
|
||||
reg = <0x48>;
|
||||
sleep-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpy7 7 GPIO_ACTIVE_HIGH>;
|
||||
lane-count = <2>;
|
||||
panel = <&panel>;
|
||||
use-external-pwm;
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_8 {
|
||||
status = "okay";
|
||||
clock-frequency = <333000>;
|
||||
|
||||
/* Atmel mXT336S */
|
||||
trackpad@4b {
|
||||
compatible = "atmel,maxtouch";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
|
||||
wakeup-source;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&trackpad_irq>;
|
||||
linux,gpio-keymap = <KEY_RESERVED
|
||||
KEY_RESERVED
|
||||
KEY_RESERVED /* GPIO0 */
|
||||
KEY_RESERVED /* GPIO1 */
|
||||
KEY_RESERVED /* GPIO2 */
|
||||
BTN_LEFT>; /* GPIO3 */
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_9 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
tpm@20 {
|
||||
compatible = "infineon,slb9645tt";
|
||||
reg = <0x20>;
|
||||
|
||||
/* Unused irq; but still need to configure the pins */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tpm_irq>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_2 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
samsung,i2c-slave-addr = <0x50>;
|
||||
};
|
||||
|
||||
&i2s0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc_0 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
broken-cd;
|
||||
mmc-hs200-1_8v;
|
||||
cap-mmc-highspeed;
|
||||
non-removable;
|
||||
card-detect-delay = <200>;
|
||||
clock-frequency = <400000000>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <0 4>;
|
||||
samsung,dw-mshc-ddr-timing = <0 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc_2 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
clock-frequency = <400000000>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
|
||||
&pinctrl_0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mask_tpm_reset>;
|
||||
|
||||
max98090_irq: max98090-irq {
|
||||
samsung,pins = "gpx0-2";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
/* We need GPX0_6 to be low at sleep time; just keep it low always */
|
||||
mask_tpm_reset: mask-tpm-reset {
|
||||
samsung,pins = "gpx0-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-val = <0>;
|
||||
};
|
||||
|
||||
tpm_irq: tpm-irq {
|
||||
samsung,pins = "gpx1-0";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
trackpad_irq: trackpad-irq {
|
||||
samsung,pins = "gpx1-1";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
power_key_irq: power-key-irq {
|
||||
samsung,pins = "gpx1-2";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
ec_irq: ec-irq {
|
||||
samsung,pins = "gpx1-5";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
tps65090_irq: tps65090-irq {
|
||||
samsung,pins = "gpx2-5";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
dp_hpd_gpio: dp_hpd_gpio {
|
||||
samsung,pins = "gpx2-6";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
max77802_irq: max77802-irq {
|
||||
samsung,pins = "gpx3-1";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
lid_irq: lid-irq {
|
||||
samsung,pins = "gpx3-4";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
hdmi_hpd_irq: hdmi-hpd-irq {
|
||||
samsung,pins = "gpx3-7";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <1>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_dvs_1: pmic-dvs-1 {
|
||||
samsung,pins = "gpy7-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_2 {
|
||||
pmic_dvs_2: pmic-dvs-2 {
|
||||
samsung,pins = "gpj4-2";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_dvs_3: pmic-dvs-3 {
|
||||
samsung,pins = "gpj4-3";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_3 {
|
||||
/* Drive SPI lines at x2 for better integrity */
|
||||
spi2-bus {
|
||||
samsung,pin-drv = <2>;
|
||||
};
|
||||
|
||||
/* Drive SPI chip select at x2 for better integrity */
|
||||
ec_spi_cs: ec-spi-cs {
|
||||
samsung,pins = "gpb1-2";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <2>;
|
||||
};
|
||||
|
||||
usb300_vbus_en: usb300-vbus-en {
|
||||
samsung,pins = "gph0-0";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
usb301_vbus_en: usb301-vbus-en {
|
||||
samsung,pins = "gph0-1";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_selb: pmic-selb {
|
||||
samsung,pins = "gph0-2", "gph0-3", "gph0-4", "gph0-5",
|
||||
"gph0-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "okay";
|
||||
clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>;
|
||||
clock-names = "rtc", "rtc_src";
|
||||
};
|
||||
|
||||
&spi_2 {
|
||||
status = "okay";
|
||||
num-cs = <1>;
|
||||
samsung,spi-src-clk = <0>;
|
||||
cs-gpios = <&gpb1 2 0>;
|
||||
|
||||
cros_ec: cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ec_spi_cs &ec_irq>;
|
||||
reg = <0>;
|
||||
spi-max-frequency = <3125000>;
|
||||
|
||||
controller-data {
|
||||
samsung,spi-feedback-delay = <1>;
|
||||
};
|
||||
|
||||
i2c-tunnel {
|
||||
compatible = "google,cros-ec-i2c-tunnel";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
google,remote-bus = <0>;
|
||||
|
||||
battery: sbs-battery@b {
|
||||
compatible = "sbs,sbs-battery";
|
||||
reg = <0xb>;
|
||||
sbs,poll-retry-count = <1>;
|
||||
sbs,i2c-retry-count = <2>;
|
||||
};
|
||||
|
||||
power-regulator@48 {
|
||||
compatible = "ti,tps65090";
|
||||
reg = <0x48>;
|
||||
|
||||
/*
|
||||
* Config irq to disable internal pulls
|
||||
* even though we run in polling mode.
|
||||
*/
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tps65090_irq>;
|
||||
|
||||
vsys1-supply = <&vbat>;
|
||||
vsys2-supply = <&vbat>;
|
||||
vsys3-supply = <&vbat>;
|
||||
infet1-supply = <&vbat>;
|
||||
infet2-supply = <&tps65090_dcdc1>;
|
||||
infet3-supply = <&tps65090_dcdc2>;
|
||||
infet4-supply = <&tps65090_dcdc2>;
|
||||
infet5-supply = <&tps65090_dcdc2>;
|
||||
infet6-supply = <&tps65090_dcdc2>;
|
||||
infet7-supply = <&tps65090_dcdc1>;
|
||||
vsys-l1-supply = <&vbat>;
|
||||
vsys-l2-supply = <&vbat>;
|
||||
|
||||
regulators {
|
||||
tps65090_dcdc1: dcdc1 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_dcdc2: dcdc2 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_dcdc3: dcdc3 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_fet1: fet1 {
|
||||
regulator-name = "vcd_led";
|
||||
};
|
||||
tps65090_fet2: fet2 {
|
||||
regulator-name = "video_mid";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet3: fet3 {
|
||||
regulator-name = "wwan_r";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet4: fet4 {
|
||||
regulator-name = "sdcard";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet5: fet5 {
|
||||
regulator-name = "camout";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet6: fet6 {
|
||||
regulator-name = "lcd_vdd";
|
||||
};
|
||||
tps65090_fet7: fet7 {
|
||||
regulator-name = "video_mid_1a";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_ldo1: ldo1 {
|
||||
};
|
||||
tps65090_ldo2: ldo2 {
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "ti,tps65090-charger";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart_3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_0 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd_phy0 {
|
||||
vbus-supply = <&usb300_vbus_reg>;
|
||||
};
|
||||
|
||||
&usbdrd_phy1 {
|
||||
vbus-supply = <&usb301_vbus_reg>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Use longest HW watchdog in SoC (32 seconds) since the hardware
|
||||
* watchdog provides no debugging information (compared to soft/hard
|
||||
* lockup detectors) and so should be last resort.
|
||||
*/
|
||||
&watchdog {
|
||||
timeout-sec = <32>;
|
||||
};
|
||||
|
||||
#include "cros-ec-keyboard.dtsi"
|
||||
#include "cros-adc-thermistors.dtsi"
|
@ -1,957 +0,0 @@
|
||||
/*
|
||||
* Google Peach Pi Rev 10+ board device tree source
|
||||
*
|
||||
* Copyright (c) 2014 Google, Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/clock/maxim,max77802.h>
|
||||
#include <dt-bindings/regulator/maxim,max77802.h>
|
||||
#include "exynos5800.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Google Peach Pi Rev 10+";
|
||||
|
||||
compatible = "google,pi-rev16",
|
||||
"google,pi-rev15", "google,pi-rev14",
|
||||
"google,pi-rev13", "google,pi-rev12",
|
||||
"google,pi-rev11", "google,pi-rev10",
|
||||
"google,pi", "google,peach", "samsung,exynos5800",
|
||||
"samsung,exynos5";
|
||||
|
||||
aliases {
|
||||
/* Assign 20 so we don't get confused w/ builtin ones */
|
||||
i2c20 = "/spi@12d40000/cros-ec@0/i2c-tunnel";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 0 1000000 0>;
|
||||
brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
|
||||
default-brightness-level = <7>;
|
||||
enable-gpios = <&gpx2 2 GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <&tps65090_fet1>;
|
||||
pinctrl-0 = <&pwm0_out>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
fixed-rate-clocks {
|
||||
oscclk {
|
||||
compatible = "samsung,exynos5420-oscclk";
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&power_key_irq &lid_irq>;
|
||||
|
||||
power {
|
||||
label = "Power";
|
||||
gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_POWER>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
lid-switch {
|
||||
label = "Lid";
|
||||
gpios = <&gpx3 4 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <5>; /* EV_SW */
|
||||
linux,code = <0>; /* SW_LID */
|
||||
debounce-interval = <1>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x20000000 0x80000000>;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "google,snow-audio-max98091";
|
||||
|
||||
samsung,model = "Peach-Pi-I2S-MAX98091";
|
||||
samsung,i2s-controller = <&i2s0>;
|
||||
samsung,audio-codec = <&max98091>;
|
||||
};
|
||||
|
||||
usb300_vbus_reg: regulator-usb300 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "P5.0V_USB3CON0";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gph0 0 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb300_vbus_en>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
usb301_vbus_reg: regulator-usb301 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "P5.0V_USB3CON1";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gph0 1 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usb301_vbus_en>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vbat: fixed-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vbat-supply";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "auo,b133htn01";
|
||||
power-supply = <&tps65090_fet6>;
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
};
|
||||
|
||||
&adc {
|
||||
status = "okay";
|
||||
vdd-supply = <&ldo9_reg>;
|
||||
};
|
||||
|
||||
&dp {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dp_hpd_gpio>;
|
||||
samsung,color-space = <0>;
|
||||
samsung,dynamic-range = <0>;
|
||||
samsung,ycbcr-coeff = <0>;
|
||||
samsung,color-depth = <1>;
|
||||
samsung,link-rate = <0x0a>;
|
||||
samsung,lane-count = <2>;
|
||||
samsung,hpd-gpio = <&gpx2 6 0>;
|
||||
panel = <&panel>;
|
||||
};
|
||||
|
||||
&fimd {
|
||||
status = "okay";
|
||||
samsung,invert-vclk;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_hpd_irq>;
|
||||
ddc = <&i2c_2>;
|
||||
|
||||
hdmi-en-supply = <&tps65090_fet7>;
|
||||
vdd-supply = <&ldo8_reg>;
|
||||
vdd_osc-supply = <&ldo10_reg>;
|
||||
vdd_pll-supply = <&ldo8_reg>;
|
||||
};
|
||||
|
||||
&hsi2c_4 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
max77802: max77802-pmic@9 {
|
||||
compatible = "maxim,max77802";
|
||||
interrupt-parent = <&gpx3>;
|
||||
interrupts = <1 IRQ_TYPE_NONE>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max77802_irq>, <&pmic_selb>,
|
||||
<&pmic_dvs_1>, <&pmic_dvs_2>, <&pmic_dvs_3>;
|
||||
wakeup-source;
|
||||
reg = <0x9>;
|
||||
#clock-cells = <1>;
|
||||
|
||||
inb1-supply = <&tps65090_dcdc2>;
|
||||
inb2-supply = <&tps65090_dcdc1>;
|
||||
inb3-supply = <&tps65090_dcdc2>;
|
||||
inb4-supply = <&tps65090_dcdc2>;
|
||||
inb5-supply = <&tps65090_dcdc1>;
|
||||
inb6-supply = <&tps65090_dcdc2>;
|
||||
inb7-supply = <&tps65090_dcdc1>;
|
||||
inb8-supply = <&tps65090_dcdc1>;
|
||||
inb9-supply = <&tps65090_dcdc1>;
|
||||
inb10-supply = <&tps65090_dcdc1>;
|
||||
|
||||
inl1-supply = <&buck5_reg>;
|
||||
inl2-supply = <&buck7_reg>;
|
||||
inl3-supply = <&buck9_reg>;
|
||||
inl4-supply = <&buck9_reg>;
|
||||
inl5-supply = <&buck9_reg>;
|
||||
inl6-supply = <&tps65090_dcdc2>;
|
||||
inl7-supply = <&buck9_reg>;
|
||||
inl9-supply = <&tps65090_dcdc2>;
|
||||
inl10-supply = <&buck7_reg>;
|
||||
|
||||
regulators {
|
||||
buck1_reg: BUCK1 {
|
||||
regulator-name = "vdd_mif";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck2_reg: BUCK2 {
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck3_reg: BUCK3 {
|
||||
regulator-name = "vdd_int";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck4_reg: BUCK4 {
|
||||
regulator-name = "vdd_g3d";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck5_reg: BUCK5 {
|
||||
regulator-name = "vdd_1v2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck6_reg: BUCK6 {
|
||||
regulator-name = "vdd_kfc";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck7_reg: BUCK7 {
|
||||
regulator-name = "vdd_1v35";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck8_reg: BUCK8 {
|
||||
regulator-name = "vdd_emmc";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck9_reg: BUCK9 {
|
||||
regulator-name = "vdd_2v";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
buck10_reg: BUCK10 {
|
||||
regulator-name = "vdd_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo1_reg: LDO1 {
|
||||
regulator-name = "vdd_1v0";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo2_reg: LDO2 {
|
||||
regulator-name = "vdd_1v2_2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo3_reg: LDO3 {
|
||||
regulator-name = "vdd_1v8_3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
vqmmc_sdcard: ldo4_reg: LDO4 {
|
||||
regulator-name = "vdd_sd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo5_reg: LDO5 {
|
||||
regulator-name = "vdd_1v8_5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo6_reg: LDO6 {
|
||||
regulator-name = "vdd_1v8_6";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "vdd_1v8_7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo8_reg: LDO8 {
|
||||
regulator-name = "vdd_ldo8";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo9_reg: LDO9 {
|
||||
regulator-name = "vdd_ldo9";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo10_reg: LDO10 {
|
||||
regulator-name = "vdd_ldo10";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo11_reg: LDO11 {
|
||||
regulator-name = "vdd_ldo11";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo12_reg: LDO12 {
|
||||
regulator-name = "vdd_ldo12";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo13_reg: LDO13 {
|
||||
regulator-name = "vdd_ldo13";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo14_reg: LDO14 {
|
||||
regulator-name = "vdd_ldo14";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo15_reg: LDO15 {
|
||||
regulator-name = "vdd_ldo15";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo17_reg: LDO17 {
|
||||
regulator-name = "vdd_g3ds";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo18_reg: LDO18 {
|
||||
regulator-name = "ldo_18";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo19_reg: LDO19 {
|
||||
regulator-name = "ldo_19";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo20_reg: LDO20 {
|
||||
regulator-name = "ldo_20";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo21_reg: LDO21 {
|
||||
regulator-name = "ldo_21";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo23_reg: LDO23 {
|
||||
regulator-name = "ldo_23";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo24_reg: LDO24 {
|
||||
regulator-name = "ldo_24";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo25_reg: LDO25 {
|
||||
regulator-name = "ldo_25";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo26_reg: LDO26 {
|
||||
regulator-name = "ldo_26";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo27_reg: LDO27 {
|
||||
regulator-name = "ldo_27";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo28_reg: LDO28 {
|
||||
regulator-name = "ldo_28";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo29_reg: LDO29 {
|
||||
regulator-name = "ldo_29";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
ldo30_reg: LDO30 {
|
||||
regulator-name = "vdd_mifs";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
ldo32_reg: LDO32 {
|
||||
regulator-name = "ldo_32";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo33_reg: LDO33 {
|
||||
regulator-name = "ldo_33";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
|
||||
ldo34_reg: LDO34 {
|
||||
regulator-name = "ldo_34";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
|
||||
ldo35_reg: LDO35 {
|
||||
regulator-name = "ldo_35";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_7 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
max98091: codec@10 {
|
||||
compatible = "maxim,max98091";
|
||||
reg = <0x10>;
|
||||
interrupts = <2 0>;
|
||||
interrupt-parent = <&gpx0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max98091_irq>;
|
||||
};
|
||||
|
||||
light-sensor@44 {
|
||||
compatible = "isil,isl29018";
|
||||
reg = <0x44>;
|
||||
vcc-supply = <&tps65090_fet5>;
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_8 {
|
||||
status = "okay";
|
||||
clock-frequency = <333000>;
|
||||
/* Atmel mXT540S */
|
||||
trackpad@4b {
|
||||
compatible = "atmel,maxtouch";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
|
||||
wakeup-source;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&trackpad_irq>;
|
||||
linux,gpio-keymap = <KEY_RESERVED
|
||||
KEY_RESERVED
|
||||
KEY_RESERVED /* GPIO 0 */
|
||||
KEY_RESERVED /* GPIO 1 */
|
||||
BTN_LEFT /* GPIO 2 */
|
||||
KEY_RESERVED>; /* GPIO 3 */
|
||||
};
|
||||
};
|
||||
|
||||
&hsi2c_9 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
tpm@20 {
|
||||
compatible = "infineon,slb9645tt";
|
||||
reg = <0x20>;
|
||||
|
||||
/* Unused irq; but still need to configure the pins */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tpm_irq>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_2 {
|
||||
status = "okay";
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
samsung,i2c-slave-addr = <0x50>;
|
||||
};
|
||||
|
||||
&i2s0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc_0 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
broken-cd;
|
||||
mmc-hs200-1_8v;
|
||||
cap-mmc-highspeed;
|
||||
non-removable;
|
||||
card-detect-delay = <200>;
|
||||
clock-frequency = <400000000>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <0 4>;
|
||||
samsung,dw-mshc-ddr-timing = <0 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&mmc_2 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
clock-frequency = <400000000>;
|
||||
samsung,dw-mshc-ciu-div = <3>;
|
||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||
samsung,dw-mshc-ddr-timing = <1 2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
|
||||
&pinctrl_0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mask_tpm_reset>;
|
||||
|
||||
max98091_irq: max98091-irq {
|
||||
samsung,pins = "gpx0-2";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
/* We need GPX0_6 to be low at sleep time; just keep it low always */
|
||||
mask_tpm_reset: mask-tpm-reset {
|
||||
samsung,pins = "gpx0-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
samsung,pin-val = <0>;
|
||||
};
|
||||
|
||||
tpm_irq: tpm-irq {
|
||||
samsung,pins = "gpx1-0";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
trackpad_irq: trackpad-irq {
|
||||
samsung,pins = "gpx1-1";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
power_key_irq: power-key-irq {
|
||||
samsung,pins = "gpx1-2";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
ec_irq: ec-irq {
|
||||
samsung,pins = "gpx1-5";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
tps65090_irq: tps65090-irq {
|
||||
samsung,pins = "gpx2-5";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
dp_hpd_gpio: dp_hpd_gpio {
|
||||
samsung,pins = "gpx2-6";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <3>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
max77802_irq: max77802-irq {
|
||||
samsung,pins = "gpx3-1";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
lid_irq: lid-irq {
|
||||
samsung,pins = "gpx3-4";
|
||||
samsung,pin-function = <0xf>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
hdmi_hpd_irq: hdmi-hpd-irq {
|
||||
samsung,pins = "gpx3-7";
|
||||
samsung,pin-function = <0>;
|
||||
samsung,pin-pud = <1>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_dvs_1: pmic-dvs-1 {
|
||||
samsung,pins = "gpy7-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_2 {
|
||||
pmic_dvs_2: pmic-dvs-2 {
|
||||
samsung,pins = "gpj4-2";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_dvs_3: pmic-dvs-3 {
|
||||
samsung,pins = "gpj4-3";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_3 {
|
||||
/* Drive SPI lines at x2 for better integrity */
|
||||
spi2-bus {
|
||||
samsung,pin-drv = <2>;
|
||||
};
|
||||
|
||||
/* Drive SPI chip select at x2 for better integrity */
|
||||
ec_spi_cs: ec-spi-cs {
|
||||
samsung,pins = "gpb1-2";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <2>;
|
||||
};
|
||||
|
||||
usb300_vbus_en: usb300-vbus-en {
|
||||
samsung,pins = "gph0-0";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
usb301_vbus_en: usb301-vbus-en {
|
||||
samsung,pins = "gph0-1";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
|
||||
pmic_selb: pmic-selb {
|
||||
samsung,pins = "gph0-2", "gph0-3", "gph0-4", "gph0-5",
|
||||
"gph0-6";
|
||||
samsung,pin-function = <1>;
|
||||
samsung,pin-pud = <0>;
|
||||
samsung,pin-drv = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "okay";
|
||||
clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>;
|
||||
clock-names = "rtc", "rtc_src";
|
||||
};
|
||||
|
||||
&spi_2 {
|
||||
status = "okay";
|
||||
num-cs = <1>;
|
||||
samsung,spi-src-clk = <0>;
|
||||
cs-gpios = <&gpb1 2 0>;
|
||||
|
||||
cros_ec: cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ec_spi_cs &ec_irq>;
|
||||
reg = <0>;
|
||||
spi-max-frequency = <3125000>;
|
||||
|
||||
controller-data {
|
||||
samsung,spi-feedback-delay = <1>;
|
||||
};
|
||||
|
||||
i2c-tunnel {
|
||||
compatible = "google,cros-ec-i2c-tunnel";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
google,remote-bus = <0>;
|
||||
|
||||
battery: sbs-battery@b {
|
||||
compatible = "sbs,sbs-battery";
|
||||
reg = <0xb>;
|
||||
sbs,poll-retry-count = <1>;
|
||||
sbs,i2c-retry-count = <2>;
|
||||
};
|
||||
|
||||
power-regulator@48 {
|
||||
compatible = "ti,tps65090";
|
||||
reg = <0x48>;
|
||||
|
||||
/*
|
||||
* Config irq to disable internal pulls
|
||||
* even though we run in polling mode.
|
||||
*/
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tps65090_irq>;
|
||||
|
||||
vsys1-supply = <&vbat>;
|
||||
vsys2-supply = <&vbat>;
|
||||
vsys3-supply = <&vbat>;
|
||||
infet1-supply = <&vbat>;
|
||||
infet2-supply = <&tps65090_dcdc1>;
|
||||
infet3-supply = <&tps65090_dcdc2>;
|
||||
infet4-supply = <&tps65090_dcdc2>;
|
||||
infet5-supply = <&tps65090_dcdc2>;
|
||||
infet6-supply = <&tps65090_dcdc2>;
|
||||
infet7-supply = <&tps65090_dcdc1>;
|
||||
vsys-l1-supply = <&vbat>;
|
||||
vsys-l2-supply = <&vbat>;
|
||||
|
||||
regulators {
|
||||
tps65090_dcdc1: dcdc1 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_dcdc2: dcdc2 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_dcdc3: dcdc3 {
|
||||
ti,enable-ext-control;
|
||||
};
|
||||
tps65090_fet1: fet1 {
|
||||
regulator-name = "vcd_led";
|
||||
};
|
||||
tps65090_fet2: fet2 {
|
||||
regulator-name = "video_mid";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet3: fet3 {
|
||||
regulator-name = "wwan_r";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet4: fet4 {
|
||||
regulator-name = "sdcard";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet5: fet5 {
|
||||
regulator-name = "camout";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_fet6: fet6 {
|
||||
regulator-name = "lcd_vdd";
|
||||
};
|
||||
tps65090_fet7: fet7 {
|
||||
regulator-name = "video_mid_1a";
|
||||
regulator-always-on;
|
||||
};
|
||||
tps65090_ldo1: ldo1 {
|
||||
};
|
||||
tps65090_ldo2: ldo2 {
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "ti,tps65090-charger";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart_3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_0 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&usbdrd_phy0 {
|
||||
vbus-supply = <&usb300_vbus_reg>;
|
||||
};
|
||||
|
||||
&usbdrd_phy1 {
|
||||
vbus-supply = <&usb301_vbus_reg>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Use longest HW watchdog in SoC (32 seconds) since the hardware
|
||||
* watchdog provides no debugging information (compared to soft/hard
|
||||
* lockup detectors) and so should be last resort.
|
||||
*/
|
||||
&watchdog {
|
||||
timeout-sec = <32>;
|
||||
};
|
||||
|
||||
#include "cros-ec-keyboard.dtsi"
|
||||
#include "cros-adc-thermistors.dtsi"
|
@ -1,196 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 Marvell Technology Group Ltd.
|
||||
* Author: Haojian Zhuang <haojian.zhuang@marvell.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* publishhed by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "mmp2.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Marvell MMP2 Brownstone Development Board";
|
||||
compatible = "mrvl,mmp2-brownstone", "mrvl,mmp2";
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS2,38400 root=/dev/nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x00000000 0x08000000>;
|
||||
};
|
||||
|
||||
soc {
|
||||
apb@d4000000 {
|
||||
uart3: uart@d4018000 {
|
||||
status = "okay";
|
||||
};
|
||||
twsi1: i2c@d4011000 {
|
||||
status = "okay";
|
||||
pmic: max8925@3c {
|
||||
compatible = "maxium,max8925";
|
||||
reg = <0x3c>;
|
||||
interrupts = <1>;
|
||||
interrupt-parent = <&intcmux4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
maxim,tsc-irq = <0>;
|
||||
|
||||
regulators {
|
||||
SDV1 {
|
||||
regulator-min-microvolt = <637500>;
|
||||
regulator-max-microvolt = <1425000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
SDV2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2225000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
SDV3 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO1 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO2 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO3 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO4 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO5 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO6 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO7 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO8 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO9 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO10 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
};
|
||||
LDO11 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO12 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO13 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO14 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO15 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO16 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO17 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO18 {
|
||||
regulator-min-microvolt = <650000>;
|
||||
regulator-max-microvolt = <2250000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO19 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
LDO20 {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <3900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
backlight {
|
||||
maxim,max8925-dual-string = <0>;
|
||||
};
|
||||
charger {
|
||||
batt-detect = <0>;
|
||||
topoff-threshold = <1>;
|
||||
fast-charge = <7>;
|
||||
no-temp-support = <0>;
|
||||
no-insert-detect = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
rtc: rtc@d4010000 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,254 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 Marvell Technology Group Ltd.
|
||||
* Author: Haojian Zhuang <haojian.zhuang@marvell.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* publishhed by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
#include <dt-bindings/clock/marvell,mmp2.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart2;
|
||||
serial2 = &uart3;
|
||||
serial3 = &uart4;
|
||||
i2c0 = &twsi1;
|
||||
i2c1 = &twsi2;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
interrupt-parent = <&intc>;
|
||||
ranges;
|
||||
|
||||
L2: l2-cache {
|
||||
compatible = "marvell,tauros2-cache";
|
||||
marvell,tauros2-cache-features = <0x3>;
|
||||
};
|
||||
|
||||
axi@d4200000 { /* AXI */
|
||||
compatible = "mrvl,axi-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0xd4200000 0x00200000>;
|
||||
ranges;
|
||||
|
||||
intc: interrupt-controller@d4282000 {
|
||||
compatible = "mrvl,mmp2-intc";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0xd4282000 0x1000>;
|
||||
mrvl,intc-nr-irqs = <64>;
|
||||
};
|
||||
|
||||
intcmux4: interrupt-controller@d4282150 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x150 0x4>, <0x168 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <2>;
|
||||
};
|
||||
|
||||
intcmux5: interrupt-controller@d4282154 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <5>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x154 0x4>, <0x16c 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <2>;
|
||||
mrvl,clr-mfp-irq = <1>;
|
||||
};
|
||||
|
||||
intcmux9: interrupt-controller@d4282180 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <9>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x180 0x4>, <0x17c 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <3>;
|
||||
};
|
||||
|
||||
intcmux17: interrupt-controller@d4282158 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <17>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x158 0x4>, <0x170 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <5>;
|
||||
};
|
||||
|
||||
intcmux35: interrupt-controller@d428215c {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <35>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x15c 0x4>, <0x174 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <15>;
|
||||
};
|
||||
|
||||
intcmux51: interrupt-controller@d4282160 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <51>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x160 0x4>, <0x178 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <2>;
|
||||
};
|
||||
|
||||
intcmux55: interrupt-controller@d4282188 {
|
||||
compatible = "mrvl,mmp2-mux-intc";
|
||||
interrupts = <55>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x188 0x4>, <0x184 0x4>;
|
||||
reg-names = "mux status", "mux mask";
|
||||
mrvl,intc-nr-irqs = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
apb@d4000000 { /* APB */
|
||||
compatible = "mrvl,apb-bus", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0xd4000000 0x00200000>;
|
||||
ranges;
|
||||
|
||||
timer0: timer@d4014000 {
|
||||
compatible = "mrvl,mmp-timer";
|
||||
reg = <0xd4014000 0x100>;
|
||||
interrupts = <13>;
|
||||
};
|
||||
|
||||
uart1: uart@d4030000 {
|
||||
compatible = "mrvl,mmp-uart";
|
||||
reg = <0xd4030000 0x1000>;
|
||||
interrupts = <27>;
|
||||
clocks = <&soc_clocks MMP2_CLK_UART0>;
|
||||
resets = <&soc_clocks MMP2_CLK_UART0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart2: uart@d4017000 {
|
||||
compatible = "mrvl,mmp-uart";
|
||||
reg = <0xd4017000 0x1000>;
|
||||
interrupts = <28>;
|
||||
clocks = <&soc_clocks MMP2_CLK_UART1>;
|
||||
resets = <&soc_clocks MMP2_CLK_UART1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart3: uart@d4018000 {
|
||||
compatible = "mrvl,mmp-uart";
|
||||
reg = <0xd4018000 0x1000>;
|
||||
interrupts = <24>;
|
||||
clocks = <&soc_clocks MMP2_CLK_UART2>;
|
||||
resets = <&soc_clocks MMP2_CLK_UART2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart4: uart@d4016000 {
|
||||
compatible = "mrvl,mmp-uart";
|
||||
reg = <0xd4016000 0x1000>;
|
||||
interrupts = <46>;
|
||||
clocks = <&soc_clocks MMP2_CLK_UART3>;
|
||||
resets = <&soc_clocks MMP2_CLK_UART3>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio@d4019000 {
|
||||
compatible = "marvell,mmp2-gpio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0xd4019000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupts = <49>;
|
||||
interrupt-names = "gpio_mux";
|
||||
clocks = <&soc_clocks MMP2_CLK_GPIO>;
|
||||
resets = <&soc_clocks MMP2_CLK_GPIO>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gcb0: gpio@d4019000 {
|
||||
reg = <0xd4019000 0x4>;
|
||||
};
|
||||
|
||||
gcb1: gpio@d4019004 {
|
||||
reg = <0xd4019004 0x4>;
|
||||
};
|
||||
|
||||
gcb2: gpio@d4019008 {
|
||||
reg = <0xd4019008 0x4>;
|
||||
};
|
||||
|
||||
gcb3: gpio@d4019100 {
|
||||
reg = <0xd4019100 0x4>;
|
||||
};
|
||||
|
||||
gcb4: gpio@d4019104 {
|
||||
reg = <0xd4019104 0x4>;
|
||||
};
|
||||
|
||||
gcb5: gpio@d4019108 {
|
||||
reg = <0xd4019108 0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
twsi1: i2c@d4011000 {
|
||||
compatible = "mrvl,mmp-twsi";
|
||||
reg = <0xd4011000 0x1000>;
|
||||
interrupts = <7>;
|
||||
clocks = <&soc_clocks MMP2_CLK_TWSI0>;
|
||||
resets = <&soc_clocks MMP2_CLK_TWSI0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
mrvl,i2c-fast-mode;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
twsi2: i2c@d4025000 {
|
||||
compatible = "mrvl,mmp-twsi";
|
||||
reg = <0xd4025000 0x1000>;
|
||||
interrupts = <58>;
|
||||
clocks = <&soc_clocks MMP2_CLK_TWSI1>;
|
||||
resets = <&soc_clocks MMP2_CLK_TWSI1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rtc: rtc@d4010000 {
|
||||
compatible = "mrvl,mmp-rtc";
|
||||
reg = <0xd4010000 0x1000>;
|
||||
interrupts = <1 0>;
|
||||
interrupt-names = "rtc 1Hz", "rtc alarm";
|
||||
interrupt-parent = <&intcmux5>;
|
||||
clocks = <&soc_clocks MMP2_CLK_RTC>;
|
||||
resets = <&soc_clocks MMP2_CLK_RTC>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
soc_clocks: clocks{
|
||||
compatible = "marvell,mmp2-clock";
|
||||
reg = <0xd4050000 0x1000>,
|
||||
<0xd4282800 0x400>,
|
||||
<0xd4015000 0x1000>;
|
||||
reg-names = "mpmu", "apmu", "apbc";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user