the MIF Configuration Register PHY_Select, there is no use in pretending
we could talk to both at the MII interface layer.
If both PHY are reported to be present, prefer the external one.
Remember this selection and enforce it in hme_mii_{read,write}reg.
This fixes problems with one of the dual hmes in Netra T1s.
From OpenBSD.
various orders depending how the upper level driver is flushing it's queue's.
This prevents the deadlocks I was seeing before with >8k writes.
XXX: Still not completely there as > 64k copies trigger bugs and the page
table support still needs to be written to break those down.
FreeBSD, with cleanup/KNF by me.
Note: These chipsets are not well supported by the i810 driver in
NetBSD's in-tree xsrc (based on XFree86 4.2.1 at this time). However,
the driver works perfectly using bleeding-edge XFree86-current on my
Omnibook's i830MG with these agp changes.
accept ranges as well as single addresses. Still need to go through any key
areas and remove the malloc's and replace these with some sort of pooling
instead.
The driver puts the adapter in promisc mode to receive multicast addresses.
At last set the IFF_PROMISC flag so that the upper layer filters frames
that are not for us.
Sure, the real fix would be to get multicast filters working ...
least 1us. Documentation I've found for the simple (SPP) parallel port
mode says that data should be stable 500ns before STROBE, STROBE should
be pulsed for no less than 500ns, and that data should be stable another
500ns after STROBE has been de-asserted.
Makes lpt@ebus on my Sun Ultra5 work with my HP DeskJet 712C, at least in
polled mode. Thanks to Martin for astutely noting it was probably a bug
with STROBE being pulsed too quickly.
1. Reduce debugging level to sane levels
2. Fix bugs in alloc_data_map related to allocing whole bytes of bitmap at
a time.
At this point the driver is functional. It talks to a local drive here and
can label/newfs. Performance is...lacking at the moment as its chewing cpu
heavily (probably due to the number of memcpy's) and will be the next area
attacked.
support up to the max ohci descriptor segments. Then attempt to fill it in
via a load. Use the number of segments filled in as the basis for figuring
out how many descriptors to supply to the ohci DMA engine.
XXX: Still needs to account for requests which because of splits may overflow
the 6 dma descriptors available today. For now this fixes cases where a
single 512 byte write was getting split into 2 dma segments from 1 incoming
iov request
The definitions were not the same between the scsi_messages file and this
definition so simply removing it here and letting the other one be used
results in incorrect behavior (regardless of whether it made the code
compile....)
- Call usbd_transfer_complete at splusb.
- Fix a botched for loop in ohci_rem_ed.
- In ohci_close_pipe, wait 1ms after removing an ED to avoid possible race
condition.
isochronous reception routine for IEEE 1394 OHCI (fwohci). The
transmission part is under construction.
The minimum configuration options for this feature are:
# IEEE 1394 (i.LINK)
fwohci* at pci? dev ? function ?
pseudo-device fwiso 1
This situation is normal for asynchronous sources, and the byte stuffing
algorithm used generates unpleasant noise.
Also take care of scattered data buffer and do memcpy correctly.
This should fix PR kern/16385.
1. Clean up some debugging and trigger some on only extreme debugging needs
2. Comment alloc data mapping a bit better and fix some of the bugs here
(note..there still are some so for now the free method is never called while
I track these down)
3. Fix the copying logic in data_resp. It was calculating negative offsets
which blew up memcpy.
At this point I can probe, inquire and get through the findroot steps of a
boot:
sd0 at scsibus0 target 0 lun 0: <Maxtor, 1394 storage, 60> disk fixed
sd0: mode sense (4) returned nonsense; using fictitious geometry
sd0: 76293 MB, 76293 cyl, 64 head, 32 sec, 512 bytes/sect x 156250000 sectors
sd0: mode sense (4) returned nonsense; using fictitious geometry
sd0: no disk label
findroot: can't open dev sd0a (6)
NOTE: This will panic my machine right now with a simple disklabel -r sd0.
Also, since the free mappings routines are if (0)'d out at the moment do not
use this code for anything except experiments and then only on a machine
you don't mind panic'ing.
Fixing the mapping routines will be the next step and then finally chasing
down the proper mode sense these drives understand.
- Add support for byte system bus mode. Based on patch in kern/17193 by
Christian Groessler, with some improvements by me.
- Rename sc_flags in mb86960_softc to sc_stat, rename "type" to sc_flags
to specify controller quirks and remove enum mb86960_type.
- Pass controller type via new sc_flags in mb86960_softc rather than
via an mb86960_attach() arg.
- Handle unaligned mbufs properly in mb86960_write_mbufs(). (from ne2000.c)
- Fix a signed/unsigned comparision warning.
- Add definitions of status bits in the RX packed header.
- Change types of some members in mb86960_softc.
This change makes the driver work properly for the following card,
which used to function a bit weird:
eap0 at pci0 dev 10 function 0: Ensoniq CT5880 CT5880C (rev. 0x02)
eap0: interrupting at irq 9
eap0: TriTech TR28602 codec; no 3D stereo
There are a number of issues here for anyone trying to use this today:
1. On my test drive the command engine on the drive seems to stall after the
inquire is done. So the mode sense times out for a long time before
aborting. This obviously needs to be tracked down and fixed.
However it does do a proper inquire:
scsibus0 at sbpscsi0: 1 target, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <Maxtor, 1394 storage, 60> disk fixed
2. This code is quite ugly in places as debug code was added to test things.
Definitly needs cleanup/documention in places where it's using command
structures. The structure for alloc'ing orbs, running them through the
command engine and getting state back is mostly set but implementation needs
an overhaul in places.
3. For testing I use the following config options:
fwohci* at cardbus? dev ? function ? # IEEE1394 Controller
fw* at fwbus?
options FW_DEBUG
options FWNODE_DEBUG
options P1212_DEBUG
options SBP2_DEBUG
options SBPSCSI_DEBUG
fwnode* at fwbus?
sbpscsi* at fwnode?
scsibus* at sbpscsi?
pdc202xx_setup_channel, pdc20268_setup_channel:
Properly compute the address of the DMA control register for channel 1.
I think the controllers ignore these bits, I suspect it's only there so that
the BIOS can tell the OS is has configured DMA, but better be correct.
Thanks to Alexander Yurchenko for pointing this out.
- allow vnddetach() to return EBUSY if any vnd's are currently initialised.
lkm:
- add new 'dev' directory, initially with just a 'vnd' LKM. for now, the
vnd lkm driver requests 4 devices....
XXX: vnd should be converted to a psuedo-device that creates & deletes
instances of itself (vnd0, vnd1, etc) when vnconfig -c/-u are called,
then the vnd lkm driver can not be limited to '4' by default.
WI_RID_DBM_ADJUST: In preparation for capturing Prism packets
containing received signal strength indications (RSSI), read the
constant for conversion from RSSI to dBm (decibels relative to
a milliwatt).
WI_RID_FRAG_THRESH: Get/set the packet fragmentation threshold
on Lucent/Prism.
> Remove an entry for AMD PCNETS_PCI.
>
> AMD Am79C974 PCnet-SCSI Ethernet and SCSI conrtoller is
> a multi-function PCI device which has two device IDs
> of Am53C974(PCscsi-PCI) and Am79C970(PCnet-PCI),
> and there is no its own ID.
AMD Am79C974 PCnet-SCSI Ethernet and SCSI conrtoller is
a multi-function PCI device which has two device IDs
of Am53C974(PCscsi-PCI) and Am79C970(PCnet-PCI),
and there is no its own ID.
- Move lm_readreg/lm_writereg into the front-ends. Add/use function pointers
in the softc.
- Add a bank select function pointer to the softc and provide a generic
version. WinBond chips accessed over serial bus present three addresses,
two of which are used to access bank 1/2 registers.
- Mark TSENS2/3 sensor data as invalid if the the corresponding bank select
fails.
This bug appears as "incorrect Mod Counters" in 'raidctl -s'. The
reason it was seen only in 'raidctl -s' is because of the conditions
needed to trigger the bug:
a) a raid set is configured
b) no partitions on that set are mounted or are otherwise in-use
c) a component is failed, and subsequently rebuilt to a hot spare
d) the machine is rebooted while something (e.g. 'raidctl -s') has
the device open (and, therefore, rf_markalldirty() has been called)
but before the final rf_update_component_labels() is done.
Needless to say, the window for this happening is *very* small, and it
was only because I was testing some obscure stuff that I even noticed it.
failing a component that has been spared, or "double-failing"
an already failed component. XXX This isn't the right place to fix
this, but better here than no-where (and I'm hoping to move it sometime
soon).
- Handle IFF_ALLMULTI case correctly. This is necessary to mrouted working.
Tested by taca@netbsd.org.
- Clear unnecessary multicast hash bit. Otherwise, unnecessary multicast
packet is received. Tested by me with the 3C905C bought at akihabara.
It was 2980yen.
The code is written by fvdl@netbsd.org and me.
computed again in siop_add_reselsw()
in siop_reset(), reset the tag reseloff to 0, in addition to the lun reseloff.
If siop_add_dev() fails this time we would use the old reseloff, clobbering
memory now used for something else.
For a fixed-rate codec, when AUMODE_RECORD and AUDIO_ENCODING_MULAW or
AUDIO_ENCODING_ALAW, use AUDIO_ENCODING_SLINEAR_LE/16bit for native encoding
instead of AUDIO_ENCODING_ULINEAR/8bit because aurateconv does not support
sampling rate conversion for 8 bit PCM.
This change fixes PR kern/18834.
when trying to play audio CD's on some drives. The original message was :
> In my analysis, rev 1.19 of cd_scsi.c used cd_scsibus_set_mode()
> instead of scsipi_mode_select(). cd_scsibus_set_mode() had the code
> which clear a data.header.data_length, but scsipi_mode_select()
> does not have. So we need `data.header.data_length = 0;' before
> calling scsipi_mode_select().
Fixes PR 7299 and probably PR 15155 and PR 16883 too.
XXX Now, could someone please explain to me why in the love of Bob a
file containing inline x86 assembler is in sys/dev/isa/????
This should be moved, fixed, or nuked from space.
- disk_unbusy() gets a new parameter to tell the IO direction.
- struct disk_sysctl gets 4 new members for read/write bytes/transfers.
when processing hw.diskstats, add the read&write bytes/transfers for
the old combined stats to attempt to keep backwards compatibility.
unfortunately, due to multiple bugs, this will cause new kernels and old
vmstat/iostat/systat programs to fail. however, the next time this is
change it will not fail again.
this is just the kernel portion.
move a few bits around and make adding screens after attach time
actually work.
When not booting as console, try to properly set up the hardware to
get a display nevertheless (XXX - does not yet work on my U5).
#if 0 some unused functions planned for future extensions (to make clear
they are unused now)
This allows us to use both the old sun keyboard events (/dev/kbd) as
new wscons events (/dev/wskbd*).
TODO: Not implemented for the kbd at zstty attachment.
Wskbd as console does not yet work.
offset calculation. Mostly from Bang Jun Young.
Don't call wsdisplay_cnattach unconditionally.
On sparc use OF to decide whether we are console output.
This makes it actually work on my U5 - if only we had a keyboard driver
to produce wskbd events (coming soon).
kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals
kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)
based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
Add codec id of VT1616.
ALC650 codec specific chagne:
Add outputs.surround.mixtofront,
outputs.center.mixtofront, and outputs.lfe.mixtofront.
VT1616 codec specific change:
Add outputs.surround.mixtofront,
outputs.center.mixtofront, and outputs.lfe.mixtofront.
(Not tested)
XXX: We should provide ac97(4) manual page and describe
codec-specific features.
meaning that there is no packet available. the OF spec reportedly
says that it's supposed to return 0 in this case, but my Firepower box
uses -2, so this is probably another of those FIRMWORKSBUGS things.
we'll accept both values in any case.
ISP_DAC_SUPPORTED is defined and do a real typedef for the size
of DMA addresses. ISP_DAC_SUPPORTED also decides how much of any
particular DMA address is significant.
Lose STRNCAT over the side.
Add in (sight unseen) 10160 support.
Start doing the work necessary to support DAC (Dual Address Cycle)
environments. This allows for direct DMA to > 4GB memory from a PCI
card.
Lose STRNCAT over the side and use SNPRINTF instead.
so that PHY instance is not siginificant in ifmedia_match(). This
is done to support multiple PHYs on the MII. Without this change,
ifmedia_set() would panic the system when no PHYs were matched.
I ran into this on an AMD EasyNow PC, which is built around SiS
system chips with an embedded SiS 900 core, and an external AMD
Am79c901 PHY, which presents two PHYs on the MII: one for HomePNA,
and one for standard 10base-T. The 10base-T PHY ends up with instance
number 1...
to char-cell based vga(4) driver, and fully compatible with existing
apps like XFree86. Currently it supports 80x25, 80x30, 80x40 and 80x50
text modes using emulation. You can enable it by specifying `options
VGA_RASTERCONSOLE' in your kernel config file.
Note that displaying multilingual text doesn't work yet. Necessary
code is already there, but userland stuff and some functionality isn't
ready for prime time yet. I'm working on them.
It seems that the firmware accept 104bit key only if
all the keys have 104bit length. We get the length of
the transmit key and use it for all other keys.
Perhaps we should use software WEP for such situation.
- Add "outputs.surround", "outputs.center", and "outputs.lfe"
- If the codec is not capable of a feature, mixer variables
about the feature is not created. For example, no
"outputs.tone" for a codec without tone control.
- Set the following mixer values in ac97_attach():
outputs.master=127,127
outputs.master.mute=off
outputs.headphones.mute=off
outputs.surround=127,127
outputs.surround.mute=off
outputs.center=127
outputs.center.mute=off
outputs.lfe=127
outputs.lfe.mute=off
inputs.dac.mute=off
inputs.cd.mute=off
inputs.line.mute=off
inputs.aux.mute=off
inputs.video.mute=off
record.volume.mute=off
because the default setting of AC'97 codec (all mutes are on,
and maximum volume) is troublesome.
- Make "char*" parameters of ac97_get_portnum_by_name() "const char*"
Codec ID changes:
- If a codec ID is unknown but its vendor ID is known,
ac97_attach() prints the vendor name like "dev0: <vendor name>
unknown (0xXXXXXXXX) codec;"
- Add IDs of Asahi Kasei AK4542, AK4544, AK4544A, AK4545,
Realtek ALC100
- Correct a vendor name: "Advance Logic" -> "Avance Logic"
- Add capability of codec-specific initialization
ac97_attach():
- CDAC, SDAC, and LDAC are eanabled.
- DELAY() before mixer settings. ThinkPad X24 needs it.
ALC650 codec specific change:
- Add "outputs.surround.lineinjack" to switch the line-in jack
to the surround output
- Add "outputs.center.micjack" and "outputs.lfe.micjack" (alias
of "outputs.center.micjack") to switch the mic jack to the
center/lfe output.
rename former uriopoll() to urioselect() and provide it only for OpenBSD -
FreeBSD uses nopoll() for urio too
g/c no longer needed uriopoll define for OpenBSD
XXX: Current code may have problems if kernel memory is completely depleted.
This is, unfortunately, not the only chunk of RAIDframe code to have
this problem, and will have to be dealt with. :(
* IPKDB_NE_PCISLOT does not need any dependencies (it is merely a
required parameter for IPKDB_NE_PCI).
* IPKDB_NE_PCI does should not have an option-dependency on IPKDB_NE_PCISLOT.
While IPKDB_NE_PCISLOT is a required parameter, that is not how option-
dependencies work, and we don't want IPKDB_NE_PCI to imply IPKDB_NE_PCISLOT,
as that would cause a bogus value for IPKDB_NE_PCISLOT to be used.
Also, the IPKDB_NE_PCI selector should be lower-case; make it so.
intterupts. No more races between the two interrupt handlers, without any
locking, and the driver becomes a bit simpler too.
Use the last bit of the config flags to select between the first and the
second sbus interrupt level the firmware has assigned to us.
"scsi_core". Make all the files previously selected by the "scsi"
attribute selected by the "scsi_core" attribute. Give the "scsibus"
device the "scsi_core" attribute.
initialisation. This is just as silly as the other entropy
estimations, but it at least allows us to see how many values have
been added.
spl protect rnd_get_entropy_counter call properly
Make rndpool start out doing rotations on the first pass - make the
LSFR's be less sensitive to stuck bits in poor initial inputs.
Add considerable comments regarding the mixing function.
- Remove VRA/VRM enabling in auvia_attach()
- Use ac97_codec_if::set_rate()
- Return no AUDIO_PROPS_MMAP for fixed-rate codec
- Remove unused variables in auvia_softc