From owner-FreeBSD-tech-jp@jp.FreeBSD.org Fri Jan  3 23:18:00 2003
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id h03EI0751269;
	Fri, 3 Jan 2003 23:18:00 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from world.fool (h243.p466.iij4u.or.jp [210.149.210.243])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id h03EI0G51264
	for <FreeBSD-tech-jp@jp.FreeBSD.org>; Fri, 3 Jan 2003 23:18:00 +0900 (JST)
	(envelope-from kiyohara@kk.iij4u.or.jp)
Received: from localhost (world [192.168.1.21])
	by world.fool (8.12.6/8.12.3) with ESMTP id h03EHrCk001248
	for <FreeBSD-tech-jp@jp.FreeBSD.org>; Fri, 3 Jan 2003 23:17:54 +0900 (JST)
	(envelope-from kiyohara@kk.iij4u.or.jp)
Message-Id: <20030103.231753.41630988.kiyohara@kk.iij4u.or.jp>
To: FreeBSD-tech-jp@jp.FreeBSD.org
From: KIYOHARA Takashi <kiyohara@kk.iij4u.or.jp>
X-Mailer: Mew version 2.1 on Emacs 20.7 / Mule 4.0 (HANANOEN)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-tech-jp@jp.FreeBSD.org
Precedence: list
Date: Fri, 03 Jan 2003 23:17:53 +0900
X-Sequence: FreeBSD-tech-jp 3313
Subject: [FreeBSD-tech-jp 3313] =?ISO-2022-JP?B?GyRCPCs6biVQJTkbKEI=?=
 =?ISO-2022-JP?B?GyRCJUklaSUkJVAkTiUkJXMlPyE8JVUlJyE8JTkbKEI=?=
 =?ISO-2022-JP?B?GyRCJFgkTiUiJS8lOyU5GyhC?=
Errors-To: owner-FreeBSD-tech-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-tech-jp@jp.FreeBSD.org
X-Originator: kiyohara@kk.iij4u.or.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+021231

$B@686$H?=$7$^$9!#(B


$B%G%P%$%9%I%i%$%P$r:n@.$7$F$$$k$N$G$9$,!"2?$,$*$+$7$$$N$+$o$+$i$J$$(B
$B>uBV$K$J$C$F$7$^$C$F:$$C$F$$$^$9!#$I$J$?$+%U%)%m!<$r$*4j$$CW$7$^$9!#(B

$B$^$:!"9T$J$C$?$3$H$r$*$*$^$+$K@bL@$5$;$FD:$-$^$9!#(B
FreeBSD(98) $B$G(B PC-9821 CanBe $B$NEE8;$r@ZCG$9$k$?$a$N%I%i%$%P$r:n@.(B
$B$7$F$$$^$7$?!#$3$N%I%i%$%P$OEE8;$N@ZCG$HImB0%j%b%3%s$N<u?.%3!<%I$r(B
$B=&$&$3$H$,=PMh$^$9!#$7$+$7A4$/$3$H$J$kJ#?t$N5!G=$r0l$D$N%I%i%$%P$,(B
$B;}$C$F$$$k$N$b$*$+$7$$$N$G!"$3$N%I%i%$%P$NEE8;@ZCG5!G=$HImB0%j%b%3%s(B
$B$N<u?.%3!<%I$r=&$&5!G=$rJL!9$N%I%i%$%P$K$7$F$_$^$7$?!#$=$N$&$(N>J}(B
$B$H$bF1$8(B I/O $B%]!<%H$r;HMQ$9$k$N$G(B I/O $B%]!<%H$X$N%"%/%;%9$N$?$a$@$1$N(B
$B%P%9%I%i%$%P$b:n@.$7$^$7$?!#(B

$B$G$-$?%P%9%I%i%$%P$O(B kldload $B$9$k$3$H$,$G$-$?$N$G$9$,!"$=$N>e$KEE8;(B
$B@ZCG5!G=$N%I%i%$%P$r(B kldload $B$7$h$&$H$9$k$H(B
link_elf: symbol canbus_write_multi_desc undefind
$B$H$$$o$l$F$7$^$$!"(Bkldload $B$G$-$^$;$s$G$7$?!#(B



$B:#$^$G$N%G%P%$%9%D%j!<(B
nexus
  +- canbepm

$BJQ998e$N%G%P%$%9%D%j!<(B ($BM=Dj(B)
nexus
  +- canbus
       +- canbepm
       +- canberc



$B<B:]$K9T$J$C$?$3$H$O0J2<$N$H$*$j$G$9!#(B
1. $B85(B canbepm $B$N(B I/O $B4X78$NItJ,$r@Z$j=P$7$F(B canbus.c $B$r:n@.$9$k!#(B
2. sys/modules/ $B$K(B pc98/canbus $B$H$$$&%G%#%l%/%H%j$r:n@.$9$k!#(B
3. sys/modules/pc98/canbus/Makefile $B$r:n@.$9$k(B
   .PATH:  ${.CURDIR}/../../../pc98/pc98
   KMOD    = canbus
   SRCS    = canbus.c
   SRCS    += device_if.h bus_if.h
   CFLAGS  = -DPC98
   .include <bsd.kmod.mk>
4. $B$H$j$"$($:%b%8%e!<%k$r:n@.$7$F(B kldload $B$7$F3NG'$9$k!#(B
5. $B%P%9%$%s%?!<%U%'!<%9$N(B canbus_add_child()$B!"(Bcanbus_print_child()$B!"(B
   $B$=$l$K4X$9$k$b$N$r=q$/!#(B

   static MALLOC_DEFINE(M_CANBUSDEV, "canbusdev", "CanBe device");
   struct canbus_device {
        struct resource_list cbdev_resources;
   };


   static device_t canbus_add_child(device_t, int, const char *, int);
   static int      canbus_print_child(device_t, device_t);


   static device_method_t canbus_methods[] = {
	  $BN,(B

        /* Bus interface */
        DEVMETHOD(bus_print_child,      canbus_print_child),
        DEVMETHOD(bus_add_child,        canbus_add_child),
   }


6. canbus.ko $B$r(B make $B$7$J$*$7$F(B kldload $B$9$k!#(B
7. $B85(B canbepm $B$N(B I/O $B4X78$r30$7$?$b$N$r:n@.$9$k!#(B
8. sys/modules/ $B$K(B pc98/canbepm $B$H$$$&%G%#%l%/%H%j$r:n@.$9$k!#(B
9. sys/modules/pc98/canbepm/Makefile $B$r:n@.$9$k!#FbMF$O(B 3. $B$G:n@.$7$?(B
   $B$b$N$HF1$8$G!"(Bcanbus $B$r(B canbepm $B$KJQ$($?$b$N!#(B
10. canbepm.ko $B$r(B make $B$7$F(B kldload $B$7$F!"(Bcanbus $B$N%P%9%$%s%?!<%U%'!<%9(B
    $B$NF0:n$r3NG'$9$k!#(B
11. kernel $B$N(B make $B;~$K$b(B make $B=PMh$k$h$&$K(B sys/conf/files.pc98 $B$K(B
    canbus $B$rDI2C$9$k!#(B
    pc98/pc98/canbus.c              optional        canbus
    pc98/pc98/canbus_if.m           optional        canbus
    pc98/pc98/canbepm.c		    optional	    canbus
12. $B<+:n$N%P%9%$%s%?!<%U%'!<%9$r(B canbus.c$B!"(Bcanbus.h $B$K=q$/!#(B
13. $B<+:n%P%9%$%s%?!<%U%'!<%9MQ$N(B canbus_if.m $B$r:n@.$9$k!#0J2<$N$h$&$J(B
    $B46$8!#(B
    #include <sys/bus.h>
    INTERFACE canbus;
    METHOD u_int8_t write_multi {
        device_t        dev;
        device_t        child;
        int             reg;
	u_int8_t *	vals;
    };
14. sys/conf/kmod.mk $B$N(B MFILES?= $B$K(B pc98/pc98/canbus_if.m $B$rDI2C$9$k!#(B
15. sys/modules/pc98/canbus/Makefile $B$N(B SRCS $B$K(B canbus_if.h $B$H(B
    canbus_if.c $B$rDI2C$9$k!#(B
15. canbus.ko $B$r(B make $B$7$F(B kldload $B$7$J$*$9!#(B
16. canbepm.c $B$K(B canbus $B$N%P%9%$%s%?!<%U%'!<%9$r8F$S=P$;$k$h$&$K=$@5(B
    $B$9$k!#(B
    #include <pc98/pc98/canbus.h>
    #include "canbus_if.h"

    static void
    canbepm_soft_off (void *data, int howto)
    {

    $BN,(B

        CANBUS_WRITE_MULTI(device_get_parent(sc->canbepm_dev),
             sc->canbepm_dev, CANBE_POWER_CTRL, poweroff_data);
    }
17. sys/modules/pc98/canbepm/Makefile $B$N(B SRCS $B$K(B canbus_if.h $B$rDI2C(B
    $B$9$k!#(B
18. canbepm.ko $B$r(B make $B$7$J$*$9!#(B
19. kldload ./canbepm.ko $B$H$9$k$H(B
    link_elf: symbol canbus_write_multi_desc undefind
    $B$H$$$o$l$^$9!#(B


CANBUS_WRITE_MULTI() $B$NBe$j$K(B canbus_write_multi() $B$r;H$*$&$H$7$F$b(B
$BF1$8%(%i!<$,I=<($5$l$F(B kldload $B$9$k$3$H$,=PMh$^$;$s$G$7$?!#(B

$B$I$&$+$h$m$7$/$*4j$$CW$7$^$9!#(B
--
kiyohara

