Module Name: src
Committed By: martin
Date: Fri Nov 14 10:04:40 UTC 2014
Modified Files:
src/etc/etc.evbarm [netbsd-7]: Makefile.inc
src/sys/dev/i2c [netbsd-7]: files.i2c
Added Files:
src/sys/arch/evbarm/conf [netbsd-7]: HUMMINGBIRD_A31
HUMMINGBIRD_A31_INSTALL
src/sys/dev/i2c [netbsd-7]: axp22x.c
Log Message:
Pull up following revision(s) (requested by skrll in ticket #230):
sys/dev/i2c/axp22x.c: revision 1.1
etc/etc.evbarm/Makefile.inc: revisions 1.65-1.66
sys/arch/evbarm/conf/HUMMINGBIRD_A31: revisions 1.1-1.15
sys/arch/evbarm/conf/HUMMINGBIRD_A31_INSTALL: revisions 1.1-1.3
sys/dev/i2c/axp22x.c: revision 1.1
sys/dev/i2c/files.i2c: revision 1.57
Add Merrii Hummingbird A31 board kernels.
Add AXP22x Power Management Unit driver.
To generate a diff of this commit:
cvs rdiff -u -r1.63.2.1 -r1.63.2.2 src/etc/etc.evbarm/Makefile.inc
cvs rdiff -u -r0 -r1.19.2.2 src/sys/arch/evbarm/conf/HUMMINGBIRD_A31
cvs rdiff -u -r0 -r1.3.2.2 src/sys/arch/evbarm/conf/HUMMINGBIRD_A31_INSTALL
cvs rdiff -u -r0 -r1.1.2.2 src/sys/dev/i2c/axp22x.c
cvs rdiff -u -r1.54.2.1 -r1.54.2.2 src/sys/dev/i2c/files.i2c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/etc/etc.evbarm/Makefile.inc
diff -u src/etc/etc.evbarm/Makefile.inc:1.63.2.1 src/etc/etc.evbarm/Makefile.inc:1.63.2.2
--- src/etc/etc.evbarm/Makefile.inc:1.63.2.1 Wed Nov 12 19:54:46 2014
+++ src/etc/etc.evbarm/Makefile.inc Fri Nov 14 10:04:40 2014
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.63.2.1 2014/11/12 19:54:46 martin Exp $
+# $NetBSD: Makefile.inc,v 1.63.2.2 2014/11/14 10:04:40 martin Exp $
#
# etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
#
@@ -25,6 +25,10 @@ EVBARM_BOARDS.armv7+= BPI
EVBARM_BOARDS.armv7hf+= BPI
EVBARM_BOARDS.armv7+= CUBIEBOARD
EVBARM_BOARDS.armv7hf+= CUBIEBOARD
+EVBARM_BOARDS.armv7+= CUBIETRUCK
+EVBARM_BOARDS.armv7hf+= CUBIETRUCK
+EVBARM_BOARDS.armv7+= HUMMINGBIRD_A31
+EVBARM_BOARDS.armv7hf+= HUMMINGBIRD_A31
.else
# little endian boards
#EVBARM_BOARDS.armv4+= ARMADILLO210
@@ -84,6 +88,10 @@ EVBARM_BOARDS.armv7+= BPI
EVBARM_BOARDS.armv7hf+= BPI
EVBARM_BOARDS.armv7+= CUBIEBOARD
EVBARM_BOARDS.armv7hf+= CUBIEBOARD
+EVBARM_BOARDS.armv7+= CUBIETRUCK
+EVBARM_BOARDS.armv7hf+= CUBIETRUCK
+EVBARM_BOARDS.armv7+= HUMMINGBIRD_A31
+EVBARM_BOARDS.armv7hf+= HUMMINGBIRD_A31
#EVBARM_BOARDS.armv7+= IGEPV2
EVBARM_BOARDS.armv7+= MIRABOX
EVBARM_BOARDS.armv7hf+= MIRABOX
Index: src/sys/dev/i2c/files.i2c
diff -u src/sys/dev/i2c/files.i2c:1.54.2.1 src/sys/dev/i2c/files.i2c:1.54.2.2
--- src/sys/dev/i2c/files.i2c:1.54.2.1 Wed Nov 12 20:07:20 2014
+++ src/sys/dev/i2c/files.i2c Fri Nov 14 10:04:40 2014
@@ -1,4 +1,4 @@
-# $NetBSD: files.i2c,v 1.54.2.1 2014/11/12 20:07:20 martin Exp $
+# $NetBSD: files.i2c,v 1.54.2.2 2014/11/14 10:04:40 martin Exp $
obsolete defflag opt_i2cbus.h I2C_SCAN
define i2cbus { }
@@ -219,3 +219,8 @@ file dev/i2c/mpl115a.c mpl115a
device axp20x: sysmon_envsys
attach axp20x at iic
file dev/i2c/axp20x.c axp20x
+
+# AXP22x Power Management Unit
+device axp22x: sysmon_envsys
+attach axp22x at iic
+file dev/i2c/axp22x.c axp22x
Added files:
Index: src/sys/arch/evbarm/conf/HUMMINGBIRD_A31
diff -u /dev/null src/sys/arch/evbarm/conf/HUMMINGBIRD_A31:1.19.2.2
--- /dev/null Fri Nov 14 10:04:40 2014
+++ src/sys/arch/evbarm/conf/HUMMINGBIRD_A31 Fri Nov 14 10:04:40 2014
@@ -0,0 +1,281 @@
+# $NetBSD: HUMMINGBIRD_A31,v 1.19.2.2 2014/11/14 10:04:40 martin Exp $
+#
+# HUMMINGBIRD_A31 - Merrii Hummingbird A31
+#
+
+include "arch/evbarm/conf/std.awin"
+
+# estimated number of users
+
+maxusers 32
+
+# Standard system options
+
+options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
+#options NTP # NTP phase/frequency locked loop
+
+# CPU options
+
+no makeoptions CPUFLAGS
+makeoptions CPUFLAGS="-mcpu=cortex-a7 -mfpu=neon"
+no makeoptions BOARDTYPE
+makeoptions BOARDTYPE="hummingbird_a31"
+#options UVMHIST,UVMHIST_PRINT
+options CPU_CORTEXA7
+options ALLWINNER_A31
+options PMAPCOUNTERS
+options AWIN_CONSOLE_EARLY
+options AWIN_GPIO_IGNORE_FW
+
+# Architecture options
+
+# File systems
+
+file-system FFS # UFS
+#file-system LFS # log-structured file system
+file-system MFS # memory file system
+file-system NFS # Network file system
+#file-system ADOSFS # AmigaDOS-compatible file system
+#file-system EXT2FS # second extended file system (linux)
+#file-system CD9660 # ISO 9660 + Rock Ridge file system
+file-system MSDOSFS # MS-DOS file system
+#file-system FDESC # /dev/fd
+file-system KERNFS # /kern
+#file-system NULLFS # loopback file system
+file-system PROCFS # /proc
+#file-system PUFFS # Userspace file systems (e.g. ntfs-3g & sshfs)
+#file-system UMAPFS # NULLFS + uid and gid remapping
+#file-system UNION # union file system
+file-system TMPFS # memory file system
+file-system PTYFS # /dev/pts/N support
+
+# File system options
+#options QUOTA # legacy UFS quotas
+#options QUOTA2 # new, in-filesystem UFS quotas
+#options FFS_EI # FFS Endian Independent support
+#options NFSSERVER
+options WAPBL # File system journaling support
+#options FFS_NO_SNAPSHOT # No FFS snapshot support
+
+# Networking options
+
+#options GATEWAY # packet forwarding
+options INET # IP + ICMP + TCP + UDP
+options INET6 # IPV6
+#options IPSEC # IP security
+#options IPSEC_DEBUG # debug for IP security
+#options MROUTING # IP multicast routing
+#options PIM # Protocol Independent Multicast
+#options NETATALK # AppleTalk networking
+#options PPP_BSDCOMP # BSD-Compress compression support for PPP
+#options PPP_DEFLATE # Deflate compression support for PPP
+#options PPP_FILTER # Active filter support for PPP (requires bpf)
+#options TCP_DEBUG # Record last TCP_NDEBUG packets with SO_DEBUG
+
+options NFS_BOOT_BOOTP
+options NFS_BOOT_DHCP
+#options NFS_BOOT_BOOTSTATIC
+#options NFS_BOOTSTATIC_MYIP="\"192.168.1.4\""
+#options NFS_BOOTSTATIC_GWIP="\"192.168.1.1\""
+#options NFS_BOOTSTATIC_MASK="\"255.255.255.0\""
+#options NFS_BOOTSTATIC_SERVADDR="\"192.168.1.1\""
+#options NFS_BOOTSTATIC_SERVER="\"192.168.1.1:/nfs/sdp2430\""
+
+options NFS_BOOT_RWSIZE=1024
+
+# Compatibility options
+
+options COMPAT_NETBSD32 # allow running arm (e.g. non-earm) binaries
+#options COMPAT_43 # 4.3BSD compatibility.
+#options COMPAT_09 # NetBSD 0.9,
+#options COMPAT_10 # NetBSD 1.0,
+#options COMPAT_11 # NetBSD 1.1,
+#options COMPAT_12 # NetBSD 1.2,
+#options COMPAT_13 # NetBSD 1.3,
+#options COMPAT_14 # NetBSD 1.4,
+#options COMPAT_15 # NetBSD 1.5,
+#options COMPAT_16 # NetBSD 1.6,
+#options COMPAT_20 # NetBSD 2.0,
+options COMPAT_30 # NetBSD 3.0,
+options COMPAT_40 # NetBSD 4.0,
+options COMPAT_50 # NetBSD 5.0,
+options COMPAT_60 # NetBSD 6.0, and
+options COMPAT_70 # NetBSD 7.0 binary compatibility.
+#options TCP_COMPAT_42 # 4.2BSD TCP/IP bug compat. Not recommended.
+#options COMPAT_BSDPTY # /dev/[pt]ty?? ptys.
+
+# Shared memory options
+
+options SYSVMSG # System V-like message queues
+options SYSVSEM # System V-like semaphores
+options SYSVSHM # System V-like memory sharing
+
+# Device options
+
+#options MEMORY_DISK_HOOKS # boottime setup of ramdisk
+#options MEMORY_DISK_ROOT_SIZE=8192 # Size in blocks
+#options MEMORY_DISK_DYNAMIC
+#options MINIROOTSIZE=1000 # Size in blocks
+#options MEMORY_DISK_IS_ROOT # use memory disk as root
+
+# Wedge support
+options DKWEDGE_AUTODISCOVER # Automatically add dk(4) instances
+options DKWEDGE_METHOD_GPT # Supports GPT partitions as wedges
+
+# Miscellaneous kernel options
+options KTRACE # system call tracing, a la ktrace(1)
+#options KMEMSTATS # kernel memory statistics
+#options SCSIVERBOSE # Verbose SCSI errors
+#options MIIVERBOSE # Verbose MII autoconfuration messages
+#options DDB_KEYCODE=0x40
+#options USERCONF # userconf(4) support
+#options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
+
+# Alternate buffer queue strategies for better responsiveness under high
+# disk I/O load.
+#options BUFQ_READPRIO
+options BUFQ_PRIOCSCAN
+
+# Development and Debugging options
+
+#options PERFCTRS # performance counters
+options DIAGNOSTIC # internal consistency checks
+#options DEBUG
+#options PMAP_DEBUG # Enable pmap_debug_level code
+#options IPKDB # remote kernel debugging
+#options VERBOSE_INIT_ARM # verbose bootstraping messages
+options DDB # in-kernel debugger
+options DDB_ONPANIC=1
+options DDB_HISTORY_SIZE=100 # Enable history editing in DDB
+#options KGDB
+makeoptions DEBUG="-g" # compile full symbol table
+makeoptions COPY_SYMTAB=1
+
+## USB Debugging options
+options USB_DEBUG
+options EHCI_DEBUG
+options OHCI_DEBUG
+options UHUB_DEBUG
+
+
+# Valid options for BOOT_ARGS:
+# single Boot to single user only
+# kdb Give control to kernel debugger
+# ask Ask for file name to reboot from
+# memorydisk=<n> Set memorydisk size to <n> KB
+# quiet Show aprint_naive output
+# verbose Show aprint_normal and aprint_verbose output
+options BOOT_ARGS="\"\""
+
+config netbsd root on ? type ?
+
+# The main bus device
+mainbus0 at root
+
+# CPU
+options MULTIPROCESSOR
+cpu* at mainbus?
+
+# Specify the memory size in megabytes.
+options MEMSIZE=1024
+
+# A7 core devices
+armperiph0 at mainbus?
+armgic0 at armperiph? # Interrupt Controller
+armgtmr0 at armperiph? # ARM Generic Timer
+
+# SoC I/O
+awinio0 at mainbus?
+
+# SD/MMC controllers
+awinmmc0 at awinio0 port 0
+sdmmc* at awinmmc?
+ld* at sdmmc?
+
+# Interrupt Controller
+awinicu0 at awinio0
+
+# DMA Controller
+awindma0 at awinio0
+
+# 64-bit counter
+awincnt0 at awinio0
+
+# GPIO Controller
+awingpio0 at awinio0
+
+gpio* at awingpio?
+
+# I2C Controller
+awiniic0 at awinio? port 0
+#awiniic* at awinio? port ?
+iic0 at awiniic0
+
+# P2WI
+awinp2wi0 at awinio0
+iic1 at awinp2wi0
+axp22x0 at iic1 addr 0x34 # AXP221 Power Management Unit
+
+# On-board 16550 UARTs
+com0 at awinio? port 0 # UART0 (console)
+options CONADDR=0x01c28000, CONSPEED=115200
+
+# Consumer IR
+awinir0 at awinio?
+cir0 at awinir0
+
+# Watchdog timers
+awinwdt* at awinio?
+
+# RTC
+awinrtc* at awinio?
+
+# onboard audio codec
+awinac0 at awinio0
+audio0 at awinac0
+
+# GMAC Ethernet
+awge0 at awinio0 port ?
+
+# On-board USB
+awinusb0 at awinio0 port 0
+awinusb1 at awinio0 port 1
+ohci* at awinusb?
+ehci* at awinusb?
+usb* at ohci?
+usb* at ehci?
+
+# USB OTG
+#motg0 at awinio0
+#usb* at motg?
+
+include "dev/usb/usbdevices.config"
+
+midi* at midibus?
+
+rlphy* at mii? phy ?
+rgephy* at mii? phy ?
+ukphy* at mii? phy ?
+
+# Pseudo-Devices
+
+# disk/mass storage pseudo-devices
+#pseudo-device md # memory disk device (ramdisk)
+#pseudo-device vnd # disk-like interface to files
+#pseudo-device fss # file system snapshot device
+#pseudo-device putter # for puffs and pud
+pseudo-device drvctl # driver control
+
+# network pseudo-devices
+pseudo-device bpfilter # Berkeley packet filter
+pseudo-device loop # network loopback
+#pseudo-device kttcp # network loopback
+
+# miscellaneous pseudo-devices
+pseudo-device pty # pseudo-terminals
+#options RND_COM
+#pseudo-device clockctl # user control of clock subsystem
+pseudo-device ksyms # /dev/ksyms
+pseudo-device lockstat # lock profiling
+
+cinclude "arch/evbarm/conf/HUMMINGBIRD_A31.local"
Index: src/sys/arch/evbarm/conf/HUMMINGBIRD_A31_INSTALL
diff -u /dev/null src/sys/arch/evbarm/conf/HUMMINGBIRD_A31_INSTALL:1.3.2.2
--- /dev/null Fri Nov 14 10:04:40 2014
+++ src/sys/arch/evbarm/conf/HUMMINGBIRD_A31_INSTALL Fri Nov 14 10:04:40 2014
@@ -0,0 +1,11 @@
+# $NetBSD: HUMMINGBIRD_A31_INSTALL,v 1.3.2.2 2014/11/14 10:04:40 martin Exp $
+#
+# HUMMINGBIRD_A31_INSTALL -- Merrii Hummingbird A31 kernel with
+# installation-sized ramdisk
+#
+
+include "arch/evbarm/conf/HUMMINGBIRD_A31"
+include "arch/evbarm/conf/INSTALL"
+
+options BOOTHOWTO=RB_SINGLE
+#makeoption DEBUG
Index: src/sys/dev/i2c/axp22x.c
diff -u /dev/null src/sys/dev/i2c/axp22x.c:1.1.2.2
--- /dev/null Fri Nov 14 10:04:40 2014
+++ src/sys/dev/i2c/axp22x.c Fri Nov 14 10:04:40 2014
@@ -0,0 +1,132 @@
+/* $NetBSD: axp22x.c,v 1.1.2.2 2014/11/14 10:04:40 martin Exp $ */
+
+/*-
+ * Copyright (c) 2014 Jared D. McNeill <[email protected]>
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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>
+__KERNEL_RCSID(0, "$NetBSD: axp22x.c,v 1.1.2.2 2014/11/14 10:04:40 martin Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+#include <sys/conf.h>
+#include <sys/bus.h>
+#include <sys/kmem.h>
+
+#include <dev/i2c/i2cvar.h>
+
+#include <dev/sysmon/sysmonvar.h>
+
+#define AXP_TEMP_MON_REG 0x56 /* 2 bytes */
+
+struct axp22x_softc {
+ device_t sc_dev;
+ i2c_tag_t sc_i2c;
+ i2c_addr_t sc_addr;
+
+ struct sysmon_envsys *sc_sme;
+ envsys_data_t sc_sensor_temp;
+};
+
+static int axp22x_match(device_t, cfdata_t, void *);
+static void axp22x_attach(device_t, device_t, void *);
+
+static void axp22x_sensors_refresh(struct sysmon_envsys *, envsys_data_t *);
+static int axp22x_read(struct axp22x_softc *, uint8_t, uint8_t *, size_t);
+
+CFATTACH_DECL_NEW(axp22x, sizeof(struct axp22x_softc),
+ axp22x_match, axp22x_attach, NULL, NULL);
+
+static int
+axp22x_match(device_t parent, cfdata_t match, void *aux)
+{
+ return 1;
+}
+
+static void
+axp22x_attach(device_t parent, device_t self, void *aux)
+{
+ struct axp22x_softc *sc = device_private(self);
+ struct i2c_attach_args *ia = aux;
+
+ sc->sc_dev = self;
+ sc->sc_i2c = ia->ia_tag;
+ sc->sc_addr = ia->ia_addr;
+
+ aprint_naive("\n");
+ aprint_normal("\n");
+
+ sc->sc_sme = sysmon_envsys_create();
+ sc->sc_sme->sme_name = device_xname(self);
+ sc->sc_sme->sme_cookie = sc;
+ sc->sc_sme->sme_refresh = axp22x_sensors_refresh;
+
+ sc->sc_sensor_temp.units = ENVSYS_STEMP;
+ sc->sc_sensor_temp.state = ENVSYS_SINVALID;
+ sc->sc_sensor_temp.flags = ENVSYS_FHAS_ENTROPY;
+ snprintf(sc->sc_sensor_temp.desc, sizeof(sc->sc_sensor_temp.desc),
+ "internal temperature");
+ sysmon_envsys_sensor_attach(sc->sc_sme, &sc->sc_sensor_temp);
+
+ sysmon_envsys_register(sc->sc_sme);
+}
+
+static void
+axp22x_sensors_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
+{
+ struct axp22x_softc *sc = sme->sme_cookie;
+ uint8_t buf[2];
+ int error;
+
+ iic_acquire_bus(sc->sc_i2c, 0);
+ error = axp22x_read(sc, AXP_TEMP_MON_REG, buf, sizeof(buf));
+ iic_release_bus(sc->sc_i2c, 0);
+
+ if (error) {
+ edata->state = ENVSYS_SINVALID;
+ } else {
+ /* between -267.7C and 165.8C, step +0.1C */
+ edata->value_cur = (((buf[0] << 4) | (buf[1] & 0xf)) - 2677)
+ * 100000 + 273150000;
+ edata->state = ENVSYS_SVALID;
+ }
+}
+
+static int
+axp22x_read(struct axp22x_softc *sc, uint8_t reg, uint8_t *val, size_t len)
+{
+ size_t i;
+ int error;
+
+ for (i = 0; i < len; i++) {
+ error = iic_smbus_read_byte(sc->sc_i2c, sc->sc_addr,
+ reg + i, &val[i], 0);
+ if (error)
+ return error;
+ }
+
+ return 0;
+}