Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch/arm/omap



Hi! Adam,


From: Adam Hoka <adam.hoka%gmail.com@localhost>
Date: Sun, 5 Sep 2010 20:17:54 +0200

> On Sun, 05 Sep 2010 15:31:45 +0900 (JST)
> KIYOHARA Takashi <kiyohara%kk.iij4u.or.jp@localhost> wrote:
> 
> > Hi! Adam,
> > 
> > 
> > From: Adam Hoka <ahoka%netbsd.org@localhost>
> > Date: Sat, 4 Sep 2010 16:23:48 +0000
> > 
> > > Module Name:      src
> > > Committed By:     ahoka
> > > Date:             Sat Sep  4 16:23:48 UTC 2010
> > > 
> > > Modified Files:
> > >   src/sys/arch/arm/omap: omap2_gpmc.c omap2_gpmcvar.h
> > > 
> > > Log Message:
> > > Add gpmc_register_read and gpmc_register_write to access registers
> > > mapped by the gpmc driver (eg.: GPMC_CONFIG, GPMC_STATUS).
> > > 
> > > The driver should save the parent (gpmc) device's sc pointer
> > > to be able to use these functions.
> > 
> > I think that I should be able to access it with this function doesn't
> > have softc.
> > For instance, u-boot of my Overo doesn't set ethernet.  Therefore, I
> > operate GPMC_CONFIG7_4 in gxio.c for ethernet.
> 
> Why not in the ethernet driver?

My Overo ethernet is:

  smsh0 at gpmc0 addr 0x01000000 intr 272: SMSC LAN9221 Rev 0


However, gpmc0 checks GPMC_CONFIG7_CSVALID and cs_addr, cs_size for
each CS.  And attach, if CS is valid.
If ethernet is not attached, the driver of ethernet cannot set
GPMC_CONFIG7_5.

We are setting it according to this timing now.  ;-)

  initarm()
    +- process_kernel_args()
    |    +- gxio_config_expansion()
    |         +- gxio_config_gpio()
    |              +- eth0_config()
    |
    |   ioreg_write(OVERO_GPMC_VBASE + GPMC_CONFIG7_5,
    |       GPMC_CONFIG7_CSVALID |
    |       GPMC_CONFIG7(GPMC_CONFIG7_MASK_16M, cf->cf_loc[GPMCCF_ADDR]));
    :
    :
  gpmc_attach()
    +- gpmc_csconfig_init()
    |    for (i=0; i < GPMC_NCS; i++) {
    |      memset(cs, 0, sizeof(gpmc_csconfig_t));
    |      if ((r & GPMC_CONFIG7_CSVALID) != 0) {
    |        cs->cs_addr = omap_gpmc_config7_addr(r);
    |        cs->cs_size = omap_gpmc_config7_size(r);
    |      }
    |
    +- config_search_ia(gpmc_search)
         +- gpmc_search()

            for (i=0; i < GPMC_NCS; i++) {
                    if ((aa.gpmc_addr >= cs->cs_addr)
                    &&  (aa.gpmc_addr < (cs->cs_addr + cs->cs_size))) {

                :

                     config_match(parent, cf, &aa)
                     config_attach(parent, cf, &aa, gpmc_print)


After this, our ethernet(smsh(4)) is attached.

Thanks,
--
kiyohara


Home | Main Index | Thread Index | Old Index