svn commit: r246399 - in user/attilio/vmc-playground: bin/sh etc/mtree etc/rc.d games/fortune/datfiles include lib/libcompiler_rt lib/libstand sbin/devd share/mk sys/amd64/amd64 sys/amd64/include s...
Attilio Rao
attilio at FreeBSD.org
Wed Feb 6 11:59:35 UTC 2013
Author: attilio
Date: Wed Feb 6 11:59:32 2013
New Revision: 246399
URL: http://svnweb.freebsd.org/changeset/base/246399
Log:
Merge from vmcontention
Added:
user/attilio/vmc-playground/sys/arm/allwinner/a10_gpio.c
- copied unchanged from r246398, user/attilio/vmcontention/sys/arm/allwinner/a10_gpio.c
Modified:
user/attilio/vmc-playground/bin/sh/mksyntax.c
user/attilio/vmc-playground/etc/mtree/BSD.include.dist
user/attilio/vmc-playground/etc/rc.d/pfsync
user/attilio/vmc-playground/games/fortune/datfiles/fortunes-o.real
user/attilio/vmc-playground/include/Makefile
user/attilio/vmc-playground/lib/libcompiler_rt/Makefile
user/attilio/vmc-playground/lib/libstand/Makefile
user/attilio/vmc-playground/sbin/devd/devd.8
user/attilio/vmc-playground/share/mk/bsd.own.mk
user/attilio/vmc-playground/sys/amd64/amd64/minidump_machdep.c
user/attilio/vmc-playground/sys/amd64/amd64/pmap.c
user/attilio/vmc-playground/sys/amd64/include/pmap.h
user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.c
user/attilio/vmc-playground/sys/arm/allwinner/a10_ehci.c
user/attilio/vmc-playground/sys/arm/allwinner/files.a10
user/attilio/vmc-playground/sys/arm/conf/CUBIEBOARD
user/attilio/vmc-playground/sys/boot/arm/uboot/Makefile
user/attilio/vmc-playground/sys/boot/fdt/dts/cubieboard.dts
user/attilio/vmc-playground/sys/boot/usb/Makefile
user/attilio/vmc-playground/sys/boot/usb/bsd_global.h
user/attilio/vmc-playground/sys/boot/usb/bsd_kernel.c
user/attilio/vmc-playground/sys/boot/usb/bsd_kernel.h
user/attilio/vmc-playground/sys/dev/age/if_age.c
user/attilio/vmc-playground/sys/dev/age/if_agevar.h
user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c
user/attilio/vmc-playground/sys/dev/syscons/syscons.c
user/attilio/vmc-playground/sys/dev/usb/controller/usb_controller.c
user/attilio/vmc-playground/sys/dev/usb/controller/xhci.c
user/attilio/vmc-playground/sys/dev/usb/controller/xhci.h
user/attilio/vmc-playground/sys/dev/usb/usb_bus.h
user/attilio/vmc-playground/sys/dev/usb/usb_device.c
user/attilio/vmc-playground/sys/dev/usb/usb_dynamic.c
user/attilio/vmc-playground/sys/dev/usb/usb_freebsd.h
user/attilio/vmc-playground/sys/dev/usb/usb_freebsd_loader.h
user/attilio/vmc-playground/sys/dev/usb/usb_hub.c
user/attilio/vmc-playground/sys/dev/usb/usb_msctest.c
user/attilio/vmc-playground/sys/dev/usb/usb_process.c
user/attilio/vmc-playground/sys/dev/usb/usb_request.c
user/attilio/vmc-playground/sys/dev/usb/usb_transfer.c
user/attilio/vmc-playground/sys/fs/ext2fs/ext2_lookup.c
user/attilio/vmc-playground/sys/fs/ext2fs/ext2_mount.h
user/attilio/vmc-playground/sys/fs/ext2fs/ext2_vnops.c
user/attilio/vmc-playground/sys/kern/subr_blist.c
user/attilio/vmc-playground/sys/sys/queue.h
user/attilio/vmc-playground/usr.sbin/bhyve/Makefile
user/attilio/vmc-playground/usr.sbin/crunch/crunchgen/crunchgen.c
user/attilio/vmc-playground/usr.sbin/pciconf/Makefile
Directory Properties:
user/attilio/vmc-playground/ (props changed)
user/attilio/vmc-playground/sbin/ (props changed)
user/attilio/vmc-playground/sys/ (props changed)
user/attilio/vmc-playground/sys/boot/ (props changed)
user/attilio/vmc-playground/usr.sbin/bhyve/ (props changed)
Modified: user/attilio/vmc-playground/bin/sh/mksyntax.c
==============================================================================
--- user/attilio/vmc-playground/bin/sh/mksyntax.c Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/bin/sh/mksyntax.c Wed Feb 6 11:59:32 2013 (r246399)
@@ -107,14 +107,12 @@ static const char *syntax[513];
static int base;
static int size; /* number of values which a char variable can have */
static int nbits; /* number of bits in a character */
-static int digit_contig;/* true if digits are contiguous */
static void filltable(const char *);
static void init(void);
static void add(const char *, const char *);
static void print(const char *);
static void output_type_macros(void);
-static void digit_convert(void);
int
main(int argc __unused, char **argv __unused)
@@ -125,7 +123,6 @@ main(int argc __unused, char **argv __un
int i;
char buf[80];
int pos;
- static char digit[] = "0123456789";
/* Create output files */
if ((cfile = fopen("syntax.c", "w")) == NULL) {
@@ -158,11 +155,6 @@ main(int argc __unused, char **argv __un
base = 1;
if (sign)
base += 1 << (nbits - 1);
- digit_contig = 1;
- for (i = 0 ; i < 10 ; i++) {
- if (digit[i] != '0' + i)
- digit_contig = 0;
- }
fputs("#include <sys/cdefs.h>\n", hfile);
@@ -248,8 +240,6 @@ main(int argc __unused, char **argv __un
add("_", "ISUNDER");
add("#?$!-*@", "ISSPECL");
print("is_type");
- if (! digit_contig)
- digit_convert();
exit(0);
}
@@ -341,12 +331,13 @@ print(const char *name)
*/
static const char *macro[] = {
- "#define is_digit(c)\t((is_type+SYNBASE)[(int)c] & ISDIGIT)",
+ "#define is_digit(c)\t((unsigned int)((c) - '0') <= 9)",
"#define is_eof(c)\t((c) == PEOF)",
"#define is_alpha(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER))",
"#define is_name(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER))",
"#define is_in_name(c)\t((is_type+SYNBASE)[(int)c] & (ISUPPER|ISLOWER|ISUNDER|ISDIGIT))",
"#define is_special(c)\t((is_type+SYNBASE)[(int)c] & (ISSPECL|ISDIGIT))",
+ "#define digit_val(c)\t((c) - '0')",
NULL
};
@@ -355,41 +346,6 @@ output_type_macros(void)
{
const char **pp;
- if (digit_contig)
- macro[0] = "#define is_digit(c)\t((unsigned int)((c) - '0') <= 9)";
for (pp = macro ; *pp ; pp++)
fprintf(hfile, "%s\n", *pp);
- if (digit_contig)
- fputs("#define digit_val(c)\t((c) - '0')\n", hfile);
- else
- fputs("#define digit_val(c)\t(digit_value[c])\n", hfile);
-}
-
-
-
-/*
- * Output digit conversion table (if digits are not contiguous).
- */
-
-static void
-digit_convert(void)
-{
- int maxdigit;
- static char digit[] = "0123456789";
- char *p;
- int i;
-
- maxdigit = 0;
- for (p = digit ; *p ; p++)
- if (*p > maxdigit)
- maxdigit = *p;
- fputs("extern const char digit_value[];\n", hfile);
- fputs("\n\nconst char digit_value[] = {\n", cfile);
- for (i = 0 ; i <= maxdigit ; i++) {
- for (p = digit ; *p && *p != i ; p++);
- if (*p == '\0')
- p = digit;
- fprintf(cfile, " %d,\n", (int)(p - digit));
- }
- fputs("};\n", cfile);
}
Modified: user/attilio/vmc-playground/etc/mtree/BSD.include.dist
==============================================================================
--- user/attilio/vmc-playground/etc/mtree/BSD.include.dist Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/etc/mtree/BSD.include.dist Wed Feb 6 11:59:32 2013 (r246399)
@@ -100,6 +100,8 @@
dev
acpica
..
+ agp
+ ..
an
..
bktr
@@ -136,6 +138,8 @@
..
pbio
..
+ pci
+ ..
powermac_nvram
..
ppbus
Modified: user/attilio/vmc-playground/etc/rc.d/pfsync
==============================================================================
--- user/attilio/vmc-playground/etc/rc.d/pfsync Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/etc/rc.d/pfsync Wed Feb 6 11:59:32 2013 (r246399)
@@ -35,6 +35,7 @@ pfsync_start()
if [ -n "${pfsync_syncpeer}" ]; then
_syncpeer="syncpeer ${pfsync_syncpeer}"
fi
+ load_kld pfsync
ifconfig pfsync0 $_syncpeer syncdev $pfsync_syncdev $pfsync_ifconfig up
}
Modified: user/attilio/vmc-playground/games/fortune/datfiles/fortunes-o.real
==============================================================================
--- user/attilio/vmc-playground/games/fortune/datfiles/fortunes-o.real Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/games/fortune/datfiles/fortunes-o.real Wed Feb 6 11:59:32 2013 (r246399)
@@ -11437,233 +11437,6 @@ two new uses for sheep. Meat and wool.
%
Runners do it alone.
%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(1) The greatest threat to the human spirit is liberalism.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(10) Liberalism poisons the soul.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(11) Neither the United States, nor anyone else, "imposes" freedom on
- the people of other nations. Freedom is not an imposition.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(12) Freedom is God-given.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(13) To dictatorships, peace means the absence of opposition.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(14) To free people, peace means the absence of threat.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(15) The Peace Movement in the United States was, whether by accident or
- design, pro-communist.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(16) The collective knowledge and wisdom of seasoned citizens is the
- most valuable, yet untapped, resource our young people have.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(17) The greatest football team in the history of civilization was the
- Pittsburgh Steelers of 1975 through 1980.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(18) There is no such thing as "war atrocities." War is an atrocity.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(19) Regardless of the pain in our memories, nostalgia only reminds us
- of the good times in our past.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(2) The single greatest threat to the free people of the world is posed
- by the heinous idea of centralized government control.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(20) There is a God.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(21) Abortion is wrong.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(22) Morality is not defined by individual choice.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(23) Evolution cannot explain creation.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(24) Feminism was established so that unattractive women could have
- easier access to the mainstream of society.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(25) Love is the only human emotion which cannot be controlled. You
- either do or you don't. You can't fake it. (Except women, and
- thank God they can.)
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(26) The only difference between Mikhail Gorbachev and previous Soviet
- leaders is that he is alive.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(27) Soviet leaders were actually left-wing dictators.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(28) Abraham Lincoln saved this nation.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(29) The Los Angeles Raiders will never be the team they were when they
- called Oakland home.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(3) Peace does not mean the elimination of nuclear weapons.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(30) The United States will again go to war.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(31) To more and more American intellectuals, a victorious United States
- is a sinful United States.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(32) The fact that American intellectuals rue a victorious United States
- is frightening and ominous.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(33) There will always be poor people.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(34) The fact that there will always be poor people is not the fault of
- the rich.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(35) Rather than feel guilty as some do, you should thank God for making
- you an American.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(4) Peace does not mean the absence of war.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(5) War is not obsolete.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(6) Ours is a world governed by the aggressive use of force.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(7) There is only one way to eliminate nuclear weapons. Use them.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(8) Peace cannot be achieved merely by developing an "understanding"
- among peoples.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
-Rush Limbaugh's 35 Undeniable Truths of Life:
-
-(9) Americans opposing America is not always sacred nor courageous ...
- it is sometimes dangerous.
-
- -- "The Limbaugh Letter," Copyright 1992, EFM Publishing, Inc.
-%
Said a dainty young whore named Ms. Meggs,
"The men like to spread my two legs,
Then slip in between,
Modified: user/attilio/vmc-playground/include/Makefile
==============================================================================
--- user/attilio/vmc-playground/include/Makefile Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/include/Makefile Wed Feb 6 11:59:32 2013 (r246399)
@@ -42,9 +42,10 @@ LDIRS= bsm cam geom net net80211 netatal
sys vm
LSUBDIRS= cam/ata cam/scsi \
- dev/acpica dev/an dev/bktr dev/ciss dev/filemon dev/firewire dev/hwpmc \
+ dev/acpica dev/agp dev/an dev/bktr dev/ciss dev/filemon dev/firewire \
+ dev/hwpmc \
dev/ic dev/iicbus ${_dev_ieee488} dev/io dev/lmc dev/mfi dev/nvme \
- dev/ofw dev/pbio ${_dev_powermac_nvram} dev/ppbus dev/smbus \
+ dev/ofw dev/pbio dev/pci ${_dev_powermac_nvram} dev/ppbus dev/smbus \
dev/speaker dev/usb dev/utopia dev/vkbd dev/wi \
fs/devfs fs/fdescfs fs/msdosfs fs/nandfs fs/nfs fs/nullfs \
fs/procfs fs/udf fs/unionfs \
@@ -154,7 +155,7 @@ copies:
done
.endif
.endfor
-.for i in ${LDIRS} ${LSUBDIRS:Ndev/acpica:Ndev/bktr:Ndev/nand} ${LSUBSUBDIRS}
+.for i in ${LDIRS} ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/nand:Ndev/pci} ${LSUBSUBDIRS}
cd ${.CURDIR}/../sys; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \
${DESTDIR}${INCLUDEDIR}/$i
@@ -162,6 +163,9 @@ copies:
cd ${.CURDIR}/../sys/dev/acpica; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 acpiio.h \
${DESTDIR}${INCLUDEDIR}/dev/acpica
+ cd ${.CURDIR}/../sys/dev/agp; \
+ ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 agpreg.h \
+ ${DESTDIR}${INCLUDEDIR}/dev/agp
cd ${.CURDIR}/../sys/dev/bktr; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ioctl_*.h \
${DESTDIR}${INCLUDEDIR}/dev/bktr
@@ -172,6 +176,9 @@ copies:
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 nand_dev.h \
${DESTDIR}${INCLUDEDIR}/dev/nand
.endif
+ cd ${.CURDIR}/../sys/dev/pci; \
+ ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 pcireg.h \
+ ${DESTDIR}${INCLUDEDIR}/dev/pci
cd ${.CURDIR}/../sys/contrib/altq/altq; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
${DESTDIR}${INCLUDEDIR}/altq
@@ -225,7 +232,7 @@ symlinks:
ln -fs ../../../sys/$i/$$h ${DESTDIR}${INCLUDEDIR}/$i; \
done
.endfor
-.for i in ${LSUBDIRS:Ndev/acpica:Ndev/bktr:Ndev/nand}
+.for i in ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/nand:Ndev/pci}
cd ${.CURDIR}/../sys/$i; \
for h in *.h; do \
ln -fs ../../../../sys/$i/$$h ${DESTDIR}${INCLUDEDIR}/$i; \
@@ -236,6 +243,11 @@ symlinks:
ln -fs ../../../../sys/dev/acpica/$$h \
${DESTDIR}${INCLUDEDIR}/dev/acpica; \
done
+ cd ${.CURDIR}/../sys/dev/agp; \
+ for h in agpreg.h; do \
+ ln -fs ../../../../sys/dev/agp/$$h \
+ ${DESTDIR}${INCLUDEDIR}/dev/agp; \
+ done
cd ${.CURDIR}/../sys/dev/bktr; \
for h in ioctl_*.h; do \
ln -fs ../../../../sys/dev/bktr/$$h \
@@ -248,6 +260,11 @@ symlinks:
${DESTDIR}${INCLUDEDIR}/dev/nand; \
done
.endif
+ cd ${.CURDIR}/../sys/dev/pci; \
+ for h in pcireg.h; do \
+ ln -fs ../../../../sys/dev/pci/$$h \
+ ${DESTDIR}${INCLUDEDIR}/dev/pci; \
+ done
.for i in ${LSUBSUBDIRS}
cd ${.CURDIR}/../sys/$i; \
for h in *.h; do \
Modified: user/attilio/vmc-playground/lib/libcompiler_rt/Makefile
==============================================================================
--- user/attilio/vmc-playground/lib/libcompiler_rt/Makefile Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/lib/libcompiler_rt/Makefile Wed Feb 6 11:59:32 2013 (r246399)
@@ -188,6 +188,10 @@ SRCS+= ${file}.c
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
SRCS+= aeabi_idivmod.S \
aeabi_ldivmod.S \
+ aeabi_memcmp.S \
+ aeabi_memcpy.S \
+ aeabi_memmove.S \
+ aeabi_memset.S \
aeabi_uidivmod.S \
aeabi_uldivmod.S
.endif
Modified: user/attilio/vmc-playground/lib/libstand/Makefile
==============================================================================
--- user/attilio/vmc-playground/lib/libstand/Makefile Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/lib/libstand/Makefile Wed Feb 6 11:59:32 2013 (r246399)
@@ -61,7 +61,20 @@ SRCS+= bcmp.c bcopy.c bzero.c ffs.c memc
.endif
.if ${MACHINE_CPUARCH} == "arm"
.PATH: ${.CURDIR}/../libc/arm/gen
+
+.if ${MK_ARM_EABI} == "no"
SRCS+= divsi3.S
+.else
+# Compiler support functions
+.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib/
+SRCS+= divmoddi4.c divmodsi4.c divdi3.c divsi3.c moddi3.c modsi3.c
+SRCS+= udivmoddi4.c udivmodsi4.c udivdi3.c udivsi3.c umoddi3.c umodsi3.c
+
+.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib/arm/
+SRCS+= aeabi_idivmod.S aeabi_ldivmod.S aeabi_uidivmod.S aeabi_uldivmod.S
+SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
+.endif
+
.endif
.if ${MACHINE_CPUARCH} == "ia64"
.PATH: ${.CURDIR}/../libc/ia64/string
Modified: user/attilio/vmc-playground/sbin/devd/devd.8
==============================================================================
--- user/attilio/vmc-playground/sbin/devd/devd.8 Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sbin/devd/devd.8 Wed Feb 6 11:59:32 2013 (r246399)
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 24, 2005
+.Dd January 30, 2013
.Dt DEVD 8
.Os
.Sh NAME
Modified: user/attilio/vmc-playground/share/mk/bsd.own.mk
==============================================================================
--- user/attilio/vmc-playground/share/mk/bsd.own.mk Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/share/mk/bsd.own.mk Wed Feb 6 11:59:32 2013 (r246399)
@@ -389,9 +389,13 @@ __T=${TARGET_ARCH}
.else
__T=${MACHINE_ARCH}
.endif
-# Clang is only for x86 and powerpc right now, by default.
+# Clang is only for x86, powerpc and little-endian arm right now, by default.
.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
+.elif ${__T} == "arm" || ${__T} == "armv6"
+__DEFAULT_YES_OPTIONS+=CLANG
+# GCC is unable to build the full clang on arm, disable it by default.
+__DEFAULT_NO_OPTIONS+=CLANG_FULL
.else
__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
.endif
Modified: user/attilio/vmc-playground/sys/amd64/amd64/minidump_machdep.c
==============================================================================
--- user/attilio/vmc-playground/sys/amd64/amd64/minidump_machdep.c Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sys/amd64/amd64/minidump_machdep.c Wed Feb 6 11:59:32 2013 (r246399)
@@ -232,7 +232,7 @@ minidumpsys(struct dumperinfo *di)
/* Walk page table pages, set bits in vm_page_dump */
pmapsize = 0;
pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys);
- for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR,
+ for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + nkpt * NBPDR,
kernel_vm_end); ) {
/*
* We always write a page, even if it is zero. Each
@@ -364,7 +364,7 @@ minidumpsys(struct dumperinfo *di)
/* Dump kernel page directory pages */
bzero(fakepd, sizeof(fakepd));
pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys);
- for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR,
+ for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + nkpt * NBPDR,
kernel_vm_end); va += NBPDP) {
i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1);
Modified: user/attilio/vmc-playground/sys/amd64/amd64/pmap.c
==============================================================================
--- user/attilio/vmc-playground/sys/amd64/amd64/pmap.c Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sys/amd64/amd64/pmap.c Wed Feb 6 11:59:32 2013 (r246399)
@@ -202,6 +202,10 @@ struct pmap kernel_pmap_store;
vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */
vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */
+int nkpt;
+SYSCTL_INT(_machdep, OID_AUTO, nkpt, CTLFLAG_RD, &nkpt, 0,
+ "Number of kernel page table pages allocated on bootup");
+
static int ndmpdp;
static vm_paddr_t dmaplimit;
vm_offset_t kernel_vm_end = VM_MIN_KERNEL_ADDRESS;
@@ -496,17 +500,42 @@ allocpages(vm_paddr_t *firstaddr, int n)
CTASSERT(powerof2(NDMPML4E));
+/* number of kernel PDP slots */
+#define NKPDPE(ptpgs) howmany((ptpgs), NPDEPG)
+
static void
-create_pagetables(vm_paddr_t *firstaddr)
+nkpt_init(vm_paddr_t addr)
{
- int i, j, ndm1g;
+ int pt_pages;
+
+#ifdef NKPT
+ pt_pages = NKPT;
+#else
+ pt_pages = howmany(addr, 1 << PDRSHIFT);
+ pt_pages += NKPDPE(pt_pages);
- /* Allocate pages */
- KPTphys = allocpages(firstaddr, NKPT);
- KPML4phys = allocpages(firstaddr, 1);
- KPDPphys = allocpages(firstaddr, NKPML4E);
- KPDphys = allocpages(firstaddr, NKPDPE);
+ /*
+ * Add some slop beyond the bare minimum required for bootstrapping
+ * the kernel.
+ *
+ * This is quite important when allocating KVA for kernel modules.
+ * The modules are required to be linked in the negative 2GB of
+ * the address space. If we run out of KVA in this region then
+ * pmap_growkernel() will need to allocate page table pages to map
+ * the entire 512GB of KVA space which is an unnecessary tax on
+ * physical memory.
+ */
+ pt_pages += 8; /* 16MB additional slop for kernel modules */
+#endif
+ nkpt = pt_pages;
+}
+static void
+create_pagetables(vm_paddr_t *firstaddr)
+{
+ int i, j, ndm1g, nkpdpe;
+
+ /* Allocate page table pages for the direct map */
ndmpdp = (ptoa(Maxmem) + NBPDP - 1) >> PDPSHIFT;
if (ndmpdp < 4) /* Minimum 4GB of dirmap */
ndmpdp = 4;
@@ -518,6 +547,22 @@ create_pagetables(vm_paddr_t *firstaddr)
DMPDphys = allocpages(firstaddr, ndmpdp - ndm1g);
dmaplimit = (vm_paddr_t)ndmpdp << PDPSHIFT;
+ /* Allocate pages */
+ KPML4phys = allocpages(firstaddr, 1);
+ KPDPphys = allocpages(firstaddr, NKPML4E);
+
+ /*
+ * Allocate the initial number of kernel page table pages required to
+ * bootstrap. We defer this until after all memory-size dependent
+ * allocations are done (e.g. direct map), so that we don't have to
+ * build in too much slop in our estimate.
+ */
+ nkpt_init(*firstaddr);
+ nkpdpe = NKPDPE(nkpt);
+
+ KPTphys = allocpages(firstaddr, nkpt);
+ KPDphys = allocpages(firstaddr, nkpdpe);
+
/* Fill in the underlying page table pages */
/* Read-only from zero to physfree */
/* XXX not fully used, underneath 2M pages */
@@ -527,7 +572,7 @@ create_pagetables(vm_paddr_t *firstaddr)
}
/* Now map the page tables at their location within PTmap */
- for (i = 0; i < NKPT; i++) {
+ for (i = 0; i < nkpt; i++) {
((pd_entry_t *)KPDphys)[i] = KPTphys + (i << PAGE_SHIFT);
((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V;
}
@@ -540,7 +585,7 @@ create_pagetables(vm_paddr_t *firstaddr)
}
/* And connect up the PD to the PDP */
- for (i = 0; i < NKPDPE; i++) {
+ for (i = 0; i < nkpdpe; i++) {
((pdp_entry_t *)KPDPphys)[i + KPDPI] = KPDphys +
(i << PAGE_SHIFT);
((pdp_entry_t *)KPDPphys)[i + KPDPI] |= PG_RW | PG_V | PG_U;
@@ -769,7 +814,7 @@ pmap_init(void)
* Initialize the vm page array entries for the kernel pmap's
* page table pages.
*/
- for (i = 0; i < NKPT; i++) {
+ for (i = 0; i < nkpt; i++) {
mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT));
KASSERT(mpte >= vm_page_array &&
mpte < &vm_page_array[vm_page_array_size],
@@ -2058,7 +2103,7 @@ pmap_growkernel(vm_offset_t addr)
* any new kernel page table pages between "kernel_vm_end" and
* "KERNBASE".
*/
- if (KERNBASE < addr && addr <= KERNBASE + NKPT * NBPDR)
+ if (KERNBASE < addr && addr <= KERNBASE + nkpt * NBPDR)
return;
addr = roundup2(addr, NBPDR);
Modified: user/attilio/vmc-playground/sys/amd64/include/pmap.h
==============================================================================
--- user/attilio/vmc-playground/sys/amd64/include/pmap.h Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sys/amd64/include/pmap.h Wed Feb 6 11:59:32 2013 (r246399)
@@ -113,13 +113,7 @@
((unsigned long)(l2) << PDRSHIFT) | \
((unsigned long)(l1) << PAGE_SHIFT))
-/* Initial number of kernel page tables. */
-#ifndef NKPT
-#define NKPT 32
-#endif
-
#define NKPML4E 1 /* number of kernel PML4 slots */
-#define NKPDPE howmany(NKPT, NPDEPG)/* number of kernel PDP slots */
#define NUPML4E (NPML4EPG/2) /* number of userland PML4 pages */
#define NUPDPE (NUPML4E*NPDPEPG)/* number of userland PDP pages */
@@ -181,6 +175,7 @@ typedef u_int64_t pml4_entry_t;
#define PML4map ((pd_entry_t *)(addr_PML4map))
#define PML4pml4e ((pd_entry_t *)(addr_PML4pml4e))
+extern int nkpt; /* Initial number of kernel page tables */
extern u_int64_t KPDPphys; /* physical address of kernel level 3 */
extern u_int64_t KPML4phys; /* physical address of kernel level 4 */
Modified: user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.c
==============================================================================
--- user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.c Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sys/arm/allwinner/a10_clk.c Wed Feb 6 11:59:32 2013 (r246399)
@@ -62,10 +62,10 @@ struct a10_ccm_softc {
static struct a10_ccm_softc *a10_ccm_sc = NULL;
-#define ccm_read_4(reg) \
- bus_space_read_4(a10_ccm_sc->bst, a10_ccm_sc->bsh, reg)
-#define ccm_write_4(reg, val) \
- bus_space_write_4(a10_ccm_sc->bst, a10_ccm_sc->bsh, reg, val)
+#define ccm_read_4(sc, reg) \
+ bus_space_read_4((sc)->bst, (sc)->bsh, (reg))
+#define ccm_write_4(sc, reg, val) \
+ bus_space_write_4((sc)->bst, (sc)->bsh, (reg), (val))
static int
a10_ccm_probe(device_t dev)
@@ -121,24 +121,24 @@ int
a10_clk_usb_activate(void)
{
struct a10_ccm_softc *sc = a10_ccm_sc;
- uint32_t reg_value = 0;
+ uint32_t reg_value;
if (sc == NULL)
return ENXIO;
/* Gating AHB clock for USB */
- reg_value = ccm_read_4(CCM_AHB_GATING0);
+ reg_value = ccm_read_4(sc, CCM_AHB_GATING0);
reg_value |= CCM_AHB_GATING_USB0; /* AHB clock gate usb0 */
reg_value |= CCM_AHB_GATING_EHCI1; /* AHB clock gate ehci1 */
- ccm_write_4(CCM_AHB_GATING0, reg_value);
+ ccm_write_4(sc, CCM_AHB_GATING0, reg_value);
/* Enable clock for USB */
- reg_value = ccm_read_4(CCM_USB_CLK);
+ reg_value = ccm_read_4(sc, CCM_USB_CLK);
reg_value |= CCM_USB_PHY; /* USBPHY */
reg_value |= CCM_USB0_RESET; /* disable reset for USB0 */
reg_value |= CCM_USB1_RESET; /* disable reset for USB1 */
reg_value |= CCM_USB2_RESET; /* disable reset for USB2 */
- ccm_write_4(CCM_USB_CLK, reg_value);
+ ccm_write_4(sc, CCM_USB_CLK, reg_value);
return (0);
}
@@ -147,24 +147,24 @@ int
a10_clk_usb_deactivate(void)
{
struct a10_ccm_softc *sc = a10_ccm_sc;
- uint32_t reg_value = 0;
+ uint32_t reg_value;
if (sc == NULL)
return ENXIO;
/* Disable clock for USB */
- reg_value = ccm_read_4(CCM_USB_CLK);
+ reg_value = ccm_read_4(sc, CCM_USB_CLK);
reg_value &= ~CCM_USB_PHY; /* USBPHY */
reg_value &= ~CCM_USB0_RESET; /* reset for USB0 */
reg_value &= ~CCM_USB1_RESET; /* reset for USB1 */
reg_value &= ~CCM_USB2_RESET; /* reset for USB2 */
- ccm_write_4(CCM_USB_CLK, reg_value);
+ ccm_write_4(sc, CCM_USB_CLK, reg_value);
/* Disable gating AHB clock for USB */
- reg_value = ccm_read_4(CCM_AHB_GATING0);
+ reg_value = ccm_read_4(sc, CCM_AHB_GATING0);
reg_value &= ~CCM_AHB_GATING_USB0; /* disable AHB clock gate usb0 */
reg_value &= ~CCM_AHB_GATING_EHCI1; /* disable AHB clock gate ehci1 */
- ccm_write_4(CCM_AHB_GATING0, reg_value);
+ ccm_write_4(sc, CCM_AHB_GATING0, reg_value);
return (0);
}
Modified: user/attilio/vmc-playground/sys/arm/allwinner/a10_ehci.c
==============================================================================
--- user/attilio/vmc-playground/sys/arm/allwinner/a10_ehci.c Wed Feb 6 11:49:43 2013 (r246398)
+++ user/attilio/vmc-playground/sys/arm/allwinner/a10_ehci.c Wed Feb 6 11:59:32 2013 (r246399)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/condvar.h>
#include <sys/kernel.h>
#include <sys/module.h>
+#include <sys/gpio.h>
#include <machine/bus.h>
#include <dev/ofw/ofw_bus.h>
@@ -58,6 +59,8 @@ __FBSDID("$FreeBSD$");
#include <dev/usb/controller/ehci.h>
#include <dev/usb/controller/ehcireg.h>
+#include "gpio_if.h"
+
#include "a10_clk.h"
#define EHCI_HC_DEVSTR "Allwinner Integrated USB 2.0 controller"
@@ -70,8 +73,9 @@ __FBSDID("$FreeBSD$");
#define SW_ULPI_BYPASS (1 << 0)
#define SW_AHB_INCRX_ALIGN (1 << 8)
-#define SW_AHB_INCR4 (1 << 9)
+#define SW_AHB_INCR4 (1 << 9)
#define SW_AHB_INCR8 (1 << 10)
+#define GPIO_USB2_PWR 227
#define A10_READ_4(sc, reg) \
bus_space_read_4((sc)->sc_io_tag, (sc)->sc_io_hdl, reg)
@@ -101,6 +105,7 @@ a10_ehci_attach(device_t self)
{
ehci_softc_t *sc = device_get_softc(self);
bus_space_handle_t bsh;
+ device_t sc_gpio_dev;
int err;
int rid;
uint32_t reg_value = 0;
@@ -153,6 +158,13 @@ a10_ehci_attach(device_t self)
sprintf(sc->sc_vendor, "Allwinner");
+ /* Get the GPIO device, we need this to give power to USB */
+ sc_gpio_dev = devclass_get_device(devclass_find("gpio"), 0);
+ if (sc_gpio_dev == NULL) {
+ device_printf(self, "Error: failed to get the GPIO device\n");
+ goto error;
+ }
+
err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl);
if (err) {
@@ -166,6 +178,10 @@ a10_ehci_attach(device_t self)
/* Enable clock for USB */
a10_clk_usb_activate();
+ /* Give power to USB */
+ GPIO_PIN_SETFLAGS(sc_gpio_dev, GPIO_USB2_PWR, GPIO_PIN_OUTPUT);
+ GPIO_PIN_SET(sc_gpio_dev, GPIO_USB2_PWR, GPIO_PIN_HIGH);
+
/* Enable passby */
reg_value = A10_READ_4(sc, SW_USB_PMU_IRQ_ENABLE);
reg_value |= SW_AHB_INCR8; /* AHB INCR8 enable */
Copied: user/attilio/vmc-playground/sys/arm/allwinner/a10_gpio.c (from r246398, user/attilio/vmcontention/sys/arm/allwinner/a10_gpio.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/attilio/vmc-playground/sys/arm/allwinner/a10_gpio.c Wed Feb 6 11:59:32 2013 (r246399, copy of r246398, user/attilio/vmcontention/sys/arm/allwinner/a10_gpio.c)
@@ -0,0 +1,521 @@
+/*-
+ * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold at gmail.com>
+ * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo at freebsd.org>
+ * Copyright (c) 2012 Luiz Otavio O Souza.
+ * 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 THE AUTHOR AND CONTRIBUTORS ``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 THE AUTHOR 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.
+ *
+ */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/rman.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/gpio.h>
+
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/cpufunc.h>
+#include <machine/resource.h>
+#include <machine/fdt.h>
+#include <machine/frame.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include "gpio_if.h"
+
+/*
+ * A10 have 9 banks of gpio.
+ * 32 pins per bank:
+ * PA0 - PA17 | PB0 - PB23 | PC0 - PC24
+ * PD0 - PD27 | PE0 - PE31 | PF0 - PF5
+ * PG0 - PG9 | PH0 - PH27 | PI0 - PI12
+ */
+
+#define A10_GPIO_PINS 288
+#define A10_GPIO_DEFAULT_CAPS (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | \
+ GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)
+
+struct a10_gpio_softc {
+ device_t sc_dev;
+ struct mtx sc_mtx;
+ struct resource * sc_mem_res;
+ struct resource * sc_irq_res;
+ bus_space_tag_t sc_bst;
+ bus_space_handle_t sc_bsh;
+ void * sc_intrhand;
+ int sc_gpio_npins;
+ struct gpio_pin sc_gpio_pins[A10_GPIO_PINS];
+};
+
+enum a10_gpio_fsel {
+ A10_GPIO_INPUT,
+ A10_GPIO_OUTPUT,
+};
+
+enum a10_gpio_pud {
+ A10_GPIO_NONE,
+ A10_GPIO_PULLDOWN,
+ A10_GPIO_PULLUP,
+};
+
+#define A10_GPIO_LOCK(_sc) mtx_lock(&_sc->sc_mtx)
+#define A10_GPIO_UNLOCK(_sc) mtx_unlock(&_sc->sc_mtx)
+#define A10_GPIO_LOCK_ASSERT(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED)
+
+#define A10_GPIO_GP_CFG(_bank, _pin) 0x00 + ((_bank) * 0x24) + ((_pin)<<2)
+#define A10_GPIO_GP_DAT(_bank) 0x10 + ((_bank) * 0x24)
+#define A10_GPIO_GP_DRV(_bank, _pin) 0x14 + ((_bank) * 0x24) + ((_pin)<<2)
+#define A10_GPIO_GP_PUL(_bank, _pin) 0x1c + ((_bank) * 0x24) + ((_pin)<<2)
+
+#define A10_GPIO_GP_INT_CFG0 0x200
+#define A10_GPIO_GP_INT_CFG1 0x204
+#define A10_GPIO_GP_INT_CFG2 0x208
+#define A10_GPIO_GP_INT_CFG3 0x20c
+
+#define A10_GPIO_GP_INT_CTL 0x210
+#define A10_GPIO_GP_INT_STA 0x214
+#define A10_GPIO_GP_INT_DEB 0x218
+
+#define A10_GPIO_WRITE(_sc, _off, _val) \
+ bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
+#define A10_GPIO_READ(_sc, _off) \
+ bus_space_read_4(_sc->sc_bst, _sc->sc_bsh, _off)
+
+static uint32_t
+a10_gpio_get_function(struct a10_gpio_softc *sc, uint32_t pin)
+{
+ uint32_t bank, func, offset;
+
+ bank = pin / 32;
+ pin = pin - 32 * bank;
+ func = pin >> 3;
+ offset = ((pin & 0x07) << 2);
+
+ A10_GPIO_LOCK(sc);
+ func = (A10_GPIO_READ(sc, A10_GPIO_GP_CFG(bank, func)) >> offset) & 7;
+ A10_GPIO_UNLOCK(sc);
+
+ return (func);
+}
+
+static uint32_t
+a10_gpio_func_flag(uint32_t nfunc)
+{
+
+ switch (nfunc) {
+ case A10_GPIO_INPUT:
+ return (GPIO_PIN_INPUT);
+ case A10_GPIO_OUTPUT:
+ return (GPIO_PIN_OUTPUT);
+ }
+ return (0);
+}
+
+static void
+a10_gpio_set_function(struct a10_gpio_softc *sc, uint32_t pin, uint32_t f)
+{
+ uint32_t bank, func, data, offset;
+
+ /* Must be called with lock held. */
+ A10_GPIO_LOCK_ASSERT(sc);
+
+ bank = pin / 32;
+ pin = pin - 32 * bank;
+ func = pin >> 3;
+ offset = ((pin & 0x07) << 2);
+
+ data = A10_GPIO_READ(sc, A10_GPIO_GP_CFG(bank, func));
+ data &= ~(7 << offset);
+ data |= (f << offset);
+ A10_GPIO_WRITE(sc, A10_GPIO_GP_CFG(bank, func), data);
+}
+
+static void
+a10_gpio_set_pud(struct a10_gpio_softc *sc, uint32_t pin, uint32_t state)
+{
+ uint32_t bank, offset, pull, val;
+
+ /* Must be called with lock held. */
+ A10_GPIO_LOCK_ASSERT(sc);
+
+ bank = pin / 32;
+ pin = pin - 32 * bank;
+ pull = pin >> 4;
+ offset = ((pin & 0x0f) << 1);
+
+ val = A10_GPIO_READ(sc, A10_GPIO_GP_PUL(bank, pull));
+ val &= ~(0x03 << offset);
+ val |= (state << offset);
+ A10_GPIO_WRITE(sc, A10_GPIO_GP_PUL(bank, pull), val);
+}
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list