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;
+}

Reply via email to