KERNEL 2.6.29 and Agere Systems Soft Modem (chipset 11c1:0620)

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

 



KERNEL 2.6.29 and Agere Systems Soft Modem (chipset 11c1:0620)
==============================================================

The following is using Fedora Core11.

Using agrsm06pci-2.1.80~20090825.tar.gz as the source for
the modules to work with this modem:


Attempting to compile the modules for kernel 2.6.29 (Fedora Core 11 with its
PAE configuration) led to
  agrsm06pci-2.1.80~20090825/agrsoftmodem.c:263: error: too few arguments to function `__request_region'

Examining
  /usr/src/linux/include/linux/ioport.h

I see
  #define request_region(start,n,name)    __request_region(&ioport_resource, (start), (n), (name), 0)

  #define __request_mem_region(start,n,name, excl) __request_region(&iomem_resource, (start), (n), (name), excl)

  extern struct resource * __request_region(struct resource *,
                                        resource_size_t start,
                                        resource_size_t n,
                                        const char *name, int flags);

  #define request_mem_region_exclusive(start,n,name) \
        __request_region(&iomem_resource, (start), (n), (name), IORESOURCE_EXCLUSIVE)


and it appears that __request_region has gained another argument, a flag
which may specify exclusivity along with request_region(start,n,name)
which uses a value of zero for that argument.

I changed the code

  //  return(request_region(start, n, name));
  return(__request_region(&ioport_resource, (start), (n), (name)));

in agrsoftmodem.c to

  //  return(request_region(start, n, name));
  //  return(__request_region(&ioport_resource, (start), (n), (name)));
  return(__request_region(&ioport_resource, (start), (n), (name), 0));

It seems that request_region was originally used,
then changed to use the more kernel-specific __request_region and
while request_region did not change, __request_region did.

I am no C-programmer but I *seem* to have gotten it to work.


MODPROBE:
=========
After installing I find that modprobe will not find it.
Howver,
  insmod -f [filename]
is used in
  /etc/init.d/agr_softmodem

    /sbin/insmod -f /lib/modules`uname -r`/kernel/drivers/char/agrmodem.ko; \
    /sbin/insmod -f /lib/modules/`uname -r`/kernel/drivers/char/agrserial.ko; \
    /usr/lib/AgereSoftModem/AgereMdmDaemon

so one may want to edit the material on using modprobe (which cannot
find the module while insmod can specify the module by path/filename
and so the attempt to load the modules in agrsm-test.txt from
agrsm-tools-0.0.1-2.noarch.rpm using modprobe fails).

  service agr_softmodem (start|stop)

can be used to start/stop it (inserting/removing the modules and so
creating/removing /dev/ttyAGS3) in Fedora Core11.

[Index of Archives]     [Linux Media Development]     [Asterisk]     [DCCP]     [Netdev]     [X.org]     [Xfree86]     [Fedora Women]     [Linux USB]

  Powered by Linux