Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Mar 2007 23:15:17 +0200
From:      usleepless@gmail.com
To:        "Sean West" <sean.west@gmail.com>
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: FreeBSD 5.5, PVR500, MythTV svn
Message-ID:  <c39ec84c0703301415g6e84c70dma77507b1919bf870@mail.gmail.com>
In-Reply-To: <c39ec84c0703292326g1a252f2cg46db6fc915382c4f@mail.gmail.com>
References:  <50feecaf0703250944r2a373b13waad923d872701b93@mail.gmail.com> <957626.19205.qm@web30312.mail.mud.yahoo.com> <50feecaf0703251312m52c7cd79p9392db778ed33b4@mail.gmail.com> <50feecaf0703281744o6598298ck52e8199ac7bcb7e9@mail.gmail.com> <20070329013122.GD79742@wantadilla.lemis.com> <50feecaf0703290559w15757d0dh2a5b5babbd2c86ef@mail.gmail.com> <c39ec84c0703291157o276bb2f3l99168a80e9e75bd3@mail.gmail.com> <50feecaf0703291556t4043b38an2be257b1cbd6b4e1@mail.gmail.com> <c39ec84c0703292326g1a252f2cg46db6fc915382c4f@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Sean,

On 3/30/07, usleepless@gmail.com <usleepless@gmail.com> wrote:
> Sean,
>
> On 3/30/07, Sean West <sean.west@gmail.com> wrote:
> > On 3/29/07, usleepless@gmail.com <usleepless@gmail.com> wrote:
> > > Sean, List,
> > >
> > > On 3/29/07, Sean West <sean.west@gmail.com> wrote:
> > > > On 3/28/07, Greg 'groggy' Lehey <grog@freebsd.org> wrote:
> > > > > On Wednesday, 28 March 2007 at 17:44:47 -0700, Sean West wrote:
> > > > > > I'm stumped. Does anyone else have any suggestions?
> > > > >
> > > > > No.  How can I?
> > > >
> > > > Sorry. See my first post here:
> > > >
> > > >
> >
> http://lists.freebsd.org/pipermail/freebsd-multimedia/2007-March/006262.html
> > >
> > > sorry i have been away for so long.
> > >
> > > i would like to try to fix this with you. my first question is: why
> > > are you still on 5.5?
> >
> > Hahaha... I was actually asking myself the same question as I was
> > writing the subject for the first post. I just cvsup'd 6.2-release
> > lastnight and I was going to upgrade today. If you would like my to do
> > some testing on 5.5, I'm all for it.
>
> go ahead and upgrade: i have no wish for the driver to be backwards
> compatible: it uses fast interrupts and firmware(9) now, which is only
> available in >6.1.
>
> if upgrading solves your problem, then the problem is solved. right?
>
> let me know,

don't forget to repatch the kernel. and there is another problem: the
patches from the current port don't apply cleanly to the latest
source. your kernel build will fail.

use the attached patch instead.

regards,

usleep

[-- Attachment #2 --]
*** dev/iicbus/iicbb.c.ORIGINAL	Sun Aug 24 13:49:13 2003
--- dev/iicbus/iicbb.c	Fri Jul  1 15:55:21 2005
*************** struct iicbb_softc {
*** 66,71 ****
--- 66,72 ----
  static int iicbb_probe(device_t);
  static int iicbb_attach(device_t);
  static int iicbb_detach(device_t);
+ static void iicbb_child_detached(device_t, device_t);
  static int iicbb_print_child(device_t, device_t);
  
  static int iicbb_callback(device_t, int, caddr_t);
*************** static device_method_t iicbb_methods[] =
*** 82,87 ****
--- 83,89 ----
  	DEVMETHOD(device_detach,	iicbb_detach),
  
  	/* bus interface */
+ 	DEVMETHOD(bus_child_detached,	iicbb_child_detached),
  	DEVMETHOD(bus_print_child,	iicbb_print_child),
  
  	/* iicbus interface */
*************** static int iicbb_attach(device_t dev)
*** 130,144 ****
  static int iicbb_detach(device_t dev)
  {
  	struct iicbb_softc *sc = (struct iicbb_softc *)device_get_softc(dev);
  
! 	if (sc->iicbus) {
! 		bus_generic_detach(dev);
! 		device_delete_child(dev, sc->iicbus);
! 	}
  
  	return (0);
  }
  
  static int
  iicbb_print_child(device_t bus, device_t dev)
  {
--- 132,165 ----
  static int iicbb_detach(device_t dev)
  {
  	struct iicbb_softc *sc = (struct iicbb_softc *)device_get_softc(dev);
+ 	device_t child;
  
! 	/*
! 	 * Detach the children before recursively deleting
! 	 * in case a child has a pointer to a grandchild
! 	 * which is used by the child's detach routine.
! 	 *
! 	 * Remember the child before detaching so we can
! 	 * delete it (bus_generic_detach indirectly zeroes
! 	 * sc->child_dev).
! 	 */
! 	child = sc->iicbus;
! 	bus_generic_detach(dev);
! 	if (child)
! 		device_delete_child(dev, child);
  
  	return (0);
  }
  
+ static void
+ iicbb_child_detached( device_t dev, device_t child )
+ {
+ 	struct iicbb_softc *sc = (struct iicbb_softc *)device_get_softc(dev);
+ 
+ 	if (child == sc->iicbus)
+ 		sc->iicbus = NULL;
+ }
+ 
  static int
  iicbb_print_child(device_t bus, device_t dev)
  {
*************** static int iicbb_read(device_t dev, char
*** 383,388 ****
--- 404,410 ----
  }
  
  DRIVER_MODULE(iicbb, bktr, iicbb_driver, iicbb_devclass, 0, 0);
+ DRIVER_MODULE(iicbb, cxm_iic, iicbb_driver, iicbb_devclass, 0, 0);
  DRIVER_MODULE(iicbb, lpbb, iicbb_driver, iicbb_devclass, 0, 0);
  DRIVER_MODULE(iicbb, viapm, iicbb_driver, iicbb_devclass, 0, 0);
  
*** dev/iicbus/iiconf.h.ORIGINAL	Wed Jun 16 22:51:57 2004
--- dev/iicbus/iiconf.h	Mon Oct 24 00:43:41 2005
*************** extern int iicbus_started(device_t);
*** 114,120 ****
  extern int iicbus_start(device_t, u_char, int);
  extern int iicbus_stop(device_t);
  extern int iicbus_repeated_start(device_t, u_char, int);
! extern int iicbus_write(device_t, char *, int, int *, int);
  extern int iicbus_read(device_t, char *, int, int *, int, int);
  
  /* single byte read/write functions, start/stop not managed */
--- 114,120 ----
  extern int iicbus_start(device_t, u_char, int);
  extern int iicbus_stop(device_t);
  extern int iicbus_repeated_start(device_t, u_char, int);
! extern int iicbus_write(device_t, const char *, int, int *, int);
  extern int iicbus_read(device_t, char *, int, int *, int, int);
  
  /* single byte read/write functions, start/stop not managed */
*** dev/iicbus/iiconf.c.ORIGINAL	Wed Jun 16 22:51:57 2004
--- dev/iicbus/iiconf.c	Mon Oct 24 00:47:32 2005
*************** iicbus_stop(device_t bus)
*** 234,240 ****
   * iicbus_start() call
   */
  int
! iicbus_write(device_t bus, char *buf, int len, int *sent, int timeout)
  {
  	struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
  	
--- 234,240 ----
   * iicbus_start() call
   */
  int
! iicbus_write(device_t bus, const char *buf, int len, int *sent, int timeout)
  {
  	struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
  	

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c39ec84c0703301415g6e84c70dma77507b1919bf870>