From owner-freebsd-current@freebsd.org Mon Oct 10 11:46:20 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6B91BC0BE2B for ; Mon, 10 Oct 2016 11:46:20 +0000 (UTC) (envelope-from grembo@freebsd.org) Received: from mail.grem.de (outcast.grem.de [213.239.217.27]) by mx1.freebsd.org (Postfix) with SMTP id C4889E4B for ; Mon, 10 Oct 2016 11:46:19 +0000 (UTC) (envelope-from grembo@freebsd.org) Received: (qmail 49054 invoked by uid 89); 10 Oct 2016 11:46:12 -0000 Received: from unknown (HELO bsd64.grem.de) (mg@grem.de@194.97.158.70) by mail.grem.de with ESMTPA; 10 Oct 2016 11:46:12 -0000 Date: Mon, 10 Oct 2016 13:46:10 +0200 From: Michael Gmelin To: Andriy Gapon Cc: Warner Losh , Matthias Apitz , FreeBSD Current Subject: Re: [request for testing] isl, cyapa on chromebooks Message-ID: <20161010134610.32120b55@bsd64.grem.de> In-Reply-To: <23c6b4f0-77e9-fe90-0eed-9d0125e7624b@FreeBSD.org> References: <53bca4d2-975f-f4a0-d12a-5d73fba01a0c@FreeBSD.org> <20161006044732.GA2393@c720-r292778-amd64.oa.oclc.org> <734c7ac0-9018-051e-1df4-a3b719057e19@FreeBSD.org> <773efe54-8ebb-e0e7-7824-10cfaa96d850@FreeBSD.org> <1EE0A2F3-86B9-4806-875E-3845A209A743@freebsd.org> <20161008180742.GA1912@c720-r292778-amd64> <846bf31f-a757-2be0-a293-8c4ce3d42a2f@FreeBSD.org> <20161009015324.007a7b42@bsd64.grem.de> <20161009065423.GA2012@c720-r292778-amd64> <23c6b4f0-77e9-fe90-0eed-9d0125e7624b@FreeBSD.org> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.29; amd64-portbld-freebsd10.2) X-Face: $wrgCtfdVw_H9WAY?S&9+/F"!41z'L$uo*WzT8miX?kZ~W~Lr5W7v?j0Sde\mwB&/ypo^}> +a'4xMc^^KroE~+v^&^#[B">soBo1y6(TW6#UZiC]o>C6`ej+i Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEWJBwe5BQDl LASZU0/LTEWEfHbyj0Txi32+sKrp1Mv944X8/fm1rS+cAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAAB3RJTUUH3wESCxwC7OBhbgAAACFpVFh0Q29tbWVudAAAAAAAQ3Jl YXRlZCB3aXRoIFRoZSBHSU1QbbCXAAAAAghJREFUOMu11DFvEzEUAGCfEhBVFzuq AKkLd0O6VrIQsLXVSZXoWE5N1K3DobBBA9fQpRWc8OkWouaIjedWKiyREOKs+3PY fvalCNjgLVHeF7/3bMtBzV8C/VsQ8tecEgCcDgrzjekwKZ7TwsJZd/ywEKwwP+ZM 8P3drTsAwWn2mpWuDDuYiK1bFs6De0KUUFw0tWxm+D4AIhuuvZqtyWYeO7jQ4Aea 7jUqI+ixhQoHex4WshEvSXdood7stlv4oSuFOC4tqGcr0NjEqXgV4mMJO38nld4+ xKNxRDon7khyKVqY7YR4d+Cg0OMrkWXZOM7YDkEfKiilCn1qYv4mighZiynuHHOA Wq9QJq+BIES7lMFUtcikMnkDGHUoncA+uHgrP0ctIEqfwLHzeSo+eUA66AqzwN6n 2ZHJhw6Qh/PoyC/QENyEyC/AyNjq74Bs+3UH0xYwzDUC4B97HgLocg1QLYgDDO1v f3UX9Y307Ew4AHh67YAFFsxEpkXwpXY3eIgMhAAE3R19L919nNnuD2wlPcDE3UeT L2ytEICQib9BXgS2fU8PrD82ToYO1OEmMSnYTjSqSv9wdC0tPYC+rQRQD9ESnldF CyqfmiYW+tlALt8gH2xrMdC/youbjzPXEun+/ReXsMCDyve3dZc09fn2Oas8oXGc Jj6/fOeK5UmSMPmf/jL+GD8BEj0k/Fn6IO4AAAAASUVORK5CYII= MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Oct 2016 11:46:20 -0000 On Mon, 10 Oct 2016 14:35:22 +0300 Andriy Gapon wrote: > On 09/10/2016 23:22, Warner Losh wrote: > > There seems to be enough information present in the smbios data to > > know what devices are at what addresses. Perhaps we should use it as > > much as possible in well controlled situations to move this > > knowledge into the OS. > > So, I was thinking about maybe doing something like this to preserve > the status quo, to avoid requiring manual hints and to lay a > foundation for the proper Chromebook I2C slave discovery: > > > static struct { > uint32_t ctlrid, > const char *name; > uint_t addr; > } slaves[] = { > { 0x9c628086, "isl", 0x88 }, > { 0x9c628086, "cyapa", 0xce }, > } > > static void > chromebook_i2c_identify(driver_t *driver, device_t bus) > { > device_t controller; > device_t child; > int i; > > /* > * A stop gap approach to preserve the status quo. > * A more intelligent approach is required to correctly > * identify a machine model and hadrdware available on it. > * For instance, DMI could be used. > * See > http://lxr.free-electrons.com/source/drivers/platform/chrome/chromeos_laptop.c > */ > controller = device_get_parent(bus); > if (strcmp(device_get_name(controller), "ig4iic") != 0) > return; > > for (i = 0; i < nitems(slaves); i++) { > if (device_find_child(bus, slave->name, -1) != NULL) > continue; > if (slave->ctlrid != pci_get_devid(controller)) > continue; > child = BUS_ADD_CHILD(bus, 0, slave->name, -1); > if (child != NULL) > iicbus_set_addr(child, slave->addr); > } > } > > static device_method_t chromebook_i2c_methods[] = { > DEVMETHOD(device_identify, chromebook_i2c_identify), > { 0, 0 } > }; > > static driver_t chromebook_i2c_driver = { > "chromebook_i2c", > chromebook_i2c_methods, > 0 /* no softc */ > }; > > static devclass_t chromebook_i2c_devclass; > > DRIVER_MODULE(chromebook_i2c, iicbus, chromebook_i2c_driver, > chromebook_i2c_devclass, 0, 0); > MODULE_DEPEND(chromebook_i2c, iicbus, IICBUS_MINVER, IICBUS_PREFVER, > IICBUS_MAXVER); > MODULE_VERSION(chromebook_i2c, 1); > > The idea is that this is a driver that listens for new iicbus-es and > adds isl and cyapa devices to a bus if some criteria are met. > For the Acer c720, these criteria would be: smbios.bios.vendor=="coreboot" smbios.system.maker=="Acer" smbios.system.product=="Peppy" See also boot/i386/libi386/biosmem.c dev/atkbdc/atkbdc.c - Michael -- Michael Gmelin