Commit 6dc96735 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://gkernel.bkbits.net/misc-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents ad866e3a 4e698e64
......@@ -33,7 +33,7 @@ land at the right destination... but I'm getting ahead of myself.
Let's start with this progression:
Each BitKeeper source tree on disk is a repository unto itself.
Each repository has a parent.
Each repository contains a set of a changsets ("csets").
Each repository contains a set of a changesets ("csets").
Each cset is one or more changed files, bundled together.
Each tree is a repository, so all changes are checked into the local
......@@ -44,7 +44,7 @@ lines of development. These changesets are the bread and butter of
the BK system.
After the concept of changesets, the next thing you need to get used
to having multiple copies of source trees lying around. This -really-
to is having multiple copies of source trees lying around. This -really-
takes some getting used to, for some people. Separate source trees
are the means in BitKeeper by which you delineate parallel lines
of development, both minor and major. What would be branches in
......@@ -155,7 +155,7 @@ Small development branches (clones) will appear and disappear:
While long-term branches will parallel a tree (or trees), with period
merge points. In this first example, we pull from a tree (pulls,
"\") periodically, such a what occurs when tracking changes in a
"\") periodically, such as what occurs when tracking changes in a
vendor tree, never pushing changes back up the line:
-------- A --------- B --------- C --------- D -------
......@@ -187,7 +187,7 @@ course).
0) Make sure your tree was originally cloned from the linux-2.5 tree
created by Linus. If your tree does not have this as its ancestor, it
is impossible to reliably exchanges changesets.
is impossible to reliably exchange changesets.
......@@ -232,7 +232,7 @@ lessen any potential merge work Linus may need to do.
4) Split up your changes. Each maintainer<->Linus situation is likely
to be slightly different here, so take this just as general advice. The
author splits up changes according to "themes" when merging with Linus.
Simultaneous pushes from local development to goes special trees which
Simultaneous pushes from local development go to special trees which
exist solely to house changes "queued" for Linus. Example of the trees:
net-drivers-2.5 -- on-going net driver maintenance
......
......@@ -513,7 +513,7 @@ static int __init etherh_addr(char *addr, struct expansion_card *ec)
if (i == 6)
return 0;
}
return ENODEV;
return -ENODEV;
}
/*
......@@ -524,7 +524,7 @@ static int __init etherm_addr(char *addr)
unsigned int serial;
if (system_serial_low == 0 && system_serial_high == 0)
return ENODEV;
return -ENODEV;
serial = system_serial_low | system_serial_high;
......
......@@ -258,7 +258,7 @@ int __init init_mtdblock(void)
if (register_blkdev(MAJOR_NR,DEVICE_NAME,&mtd_fops)) {
printk(KERN_NOTICE "Can't allocate major number %d for Memory Technology Devices.\n",
MTD_BLOCK_MAJOR);
return EAGAIN;
return -EAGAIN;
}
/* We fill it in at open() time. */
......
......@@ -2792,8 +2792,8 @@ int BusLogic_DetectHostAdapter(SCSI_Host_Template_T *HostTemplate)
released, thereby preventing it from being incorrectly identified as
any other type of Host Adapter.
*/
request_region(HostAdapter->IO_Address, HostAdapter->AddressCount,
"BusLogic");
if (!request_region(HostAdapter->IO_Address, HostAdapter->AddressCount,
"BusLogic")) continue;
/*
Register the SCSI Host structure.
*/
......@@ -2834,11 +2834,20 @@ int BusLogic_DetectHostAdapter(SCSI_Host_Template_T *HostTemplate)
*/
release_region(HostAdapter->IO_Address,
HostAdapter->AddressCount);
request_region(HostAdapter->IO_Address,
HostAdapter->AddressCount,
HostAdapter->FullModelName);
BusLogic_InitializeHostStructure(HostAdapter, Host);
BusLogicHostAdapterCount++;
if(!request_region(HostAdapter->IO_Address,
HostAdapter->AddressCount,
HostAdapter->FullModelName)) {
printk(KERN_WARNING "BusLogic: Release and re-register of "
"port 0x%04lx failed \n", HostAdapter->IO_Address);
BusLogic_DestroyCCBs(HostAdapter);
BusLogic_ReleaseResources(HostAdapter);
BusLogic_UnregisterHostAdapter(HostAdapter);
scsi_unregister(Host);
}
else {
BusLogic_InitializeHostStructure(HostAdapter, Host);
BusLogicHostAdapterCount++;
}
}
else
{
......
......@@ -3009,11 +3009,10 @@ static int mega_findCard (Scsi_Host_Template * pHostTmpl,
if (!(flag & BOARD_QUARTZ)) {
/* Request our IO Range */
if (check_region (megaBase, 16)) {
if (!request_region(megaBase, 16, "megaraid")) {
printk(KERN_WARNING "megaraid: Couldn't register I/O range!\n");
goto err_unregister;
}
request_region(megaBase, 16, "megaraid");
}
/* Request our IRQ */
......
......@@ -5947,7 +5947,7 @@ int sym_hcb_attach(hcb_p np, struct sym_fw *fw)
*/
attach_failed:
sym_hcb_free(np);
return ENXIO;
return -ENXIO;
}
/*
......
......@@ -371,14 +371,14 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
return FALSE;
#ifdef PORT_OVERRIDE
if(check_region(PORT_OVERRIDE, 0xc)) {
if(!request_region(PORT_OVERRIDE, 0xc, "ultrastor")) {
printk("Ultrastor I/O space already in use\n");
return FALSE;
};
config.port_address = PORT_OVERRIDE;
#else
for (i = 0; i < ARRAY_SIZE(ultrastor_ports_14f); i++) {
if(check_region(ultrastor_ports_14f[i], 0x0c)) continue;
if(!request_region(ultrastor_ports_14f[i], 0x0c, "ultrastor")) continue;
config.port_address = ultrastor_ports_14f[i];
#endif
......@@ -396,8 +396,9 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
# endif
#endif
#ifdef PORT_OVERRIDE
return FALSE;
goto out_release_port;
#else
release_region(config.port_address, 0x0c);
continue;
#endif
}
......@@ -412,8 +413,9 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
# endif
#endif
#ifdef PORT_OVERRIDE
return FALSE;
goto out_release_port;
#else
release_region(config.port_address, 0x0c);
continue;
#endif
}
......@@ -425,6 +427,7 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
# if (ULTRASTOR_DEBUG & UD_DETECT)
printk("US14F: detect: no port address found!\n");
# endif
/* all ports probed already released - we can just go straight out */
return FALSE;
}
#endif
......@@ -441,7 +444,6 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
/* All above tests passed, must be the right thing. Get some useful
info. */
request_region(config.port_address, 0x0c,"ultrastor");
/* Register the I/O space that we use */
*(char *)&config_1 = inb(CONFIG(config.port_address + 0));
......@@ -465,7 +467,7 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
#if (ULTRASTOR_DEBUG & UD_DETECT)
printk("US14F: detect: not detected.\n");
#endif
return FALSE;
goto out_release_port;
}
/* Final consistency check, verify previous info. */
......@@ -474,7 +476,7 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
#if (ULTRASTOR_DEBUG & UD_DETECT)
printk("US14F: detect: consistency check failed\n");
#endif
return FALSE;
goto out_release_port;
}
/* If we were TRULY paranoid, we could issue a host adapter inquiry
......@@ -507,19 +509,22 @@ static int ultrastor_14f_detect(Scsi_Host_Template * tpnt)
if (request_irq(config.interrupt, do_ultrastor_interrupt, 0, "Ultrastor", &config.mscp[0].SCint->host)) {
printk("Unable to allocate IRQ%u for UltraStor controller.\n",
config.interrupt);
return FALSE;
goto out_release_port;
}
if (config.dma_channel && request_dma(config.dma_channel,"Ultrastor")) {
printk("Unable to allocate DMA channel %u for UltraStor controller.\n",
config.dma_channel);
free_irq(config.interrupt, NULL);
return FALSE;
goto out_release_port;
}
tpnt->sg_tablesize = ULTRASTOR_14F_MAX_SG;
printk("UltraStor driver version" VERSION ". Using %d SG lists.\n",
ULTRASTOR_14F_MAX_SG);
return TRUE;
out_release_port:
release_region(config.port_address, 0x0c);
return FALSE;
}
static int ultrastor_24f_detect(Scsi_Host_Template * tpnt)
......
......@@ -65,6 +65,7 @@ static int tritech_maestro_init(struct ac97_codec * codec);
static int sigmatel_9708_init(struct ac97_codec *codec);
static int sigmatel_9721_init(struct ac97_codec *codec);
static int sigmatel_9744_init(struct ac97_codec *codec);
static int ad1886_init(struct ac97_codec *codec);
static int eapd_control(struct ac97_codec *codec, int);
static int crystal_digital_control(struct ac97_codec *codec, int mode);
......@@ -94,6 +95,7 @@ static struct ac97_ops sigmatel_9708_ops = { sigmatel_9708_init, NULL, NULL };
static struct ac97_ops sigmatel_9721_ops = { sigmatel_9721_init, NULL, NULL };
static struct ac97_ops sigmatel_9744_ops = { sigmatel_9744_init, NULL, NULL };
static struct ac97_ops crystal_digital_ops = { NULL, eapd_control, crystal_digital_control };
static struct ac97_ops ad1886_ops = { ad1886_init, eapd_control, NULL };
/* sorted by vendor/device id */
static const struct {
......@@ -107,7 +109,7 @@ static const struct {
{0x41445360, "Analog Devices AD1885", &default_ops},
{0x41445361, "Analog Devices AD1886", &default_ops},
{0x41445460, "Analog Devices AD1885", &default_ops},
{0x41445461, "Analog Devices AD1886", &default_ops},
{0x41445461, "Analog Devices AD1886", &ad1886_ops},
{0x414B4D00, "Asahi Kasei AK4540", &null_ops},
{0x414B4D01, "Asahi Kasei AK4542", &null_ops},
{0x414B4D02, "Asahi Kasei AK4543", &null_ops},
......@@ -873,6 +875,26 @@ static int tritech_maestro_init(struct ac97_codec * codec)
}
/*
* Presario700 workaround
* for Jack Sense/SPDIF Register misetting causing
* no audible output
* by Santiago Nullo 04/05/2002
*/
#define AC97_AD1886_JACK_SENSE 0x72
static int ad1886_init(struct ac97_codec * codec)
{
/* from AD1886 Specs */
codec->codec_write(codec, AC97_AD1886_JACK_SENSE, 0x0010);
return 0;
}
/*
* This is basically standard AC97. It should work as a default for
* almost all modern codecs. Note that some cards wire EAPD *backwards*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment