Merge branch 'for-linus' into for-next
Back-merge 4.19-devel branch into 4.20 for applying FireWire patches cleanly. Signed-off-by: Takashi Iwai <tiwai@suse.de>
这个提交包含在:
@@ -40,6 +40,8 @@ static void azx_clear_corbrp(struct hdac_bus *bus)
|
||||
*/
|
||||
void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
|
||||
{
|
||||
WARN_ON_ONCE(!bus->rb.area);
|
||||
|
||||
spin_lock_irq(&bus->reg_lock);
|
||||
/* CORB set up */
|
||||
bus->corb.addr = bus->rb.addr;
|
||||
@@ -383,7 +385,7 @@ void snd_hdac_bus_exit_link_reset(struct hdac_bus *bus)
|
||||
EXPORT_SYMBOL_GPL(snd_hdac_bus_exit_link_reset);
|
||||
|
||||
/* reset codec link */
|
||||
static int azx_reset(struct hdac_bus *bus, bool full_reset)
|
||||
int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset)
|
||||
{
|
||||
if (!full_reset)
|
||||
goto skip_reset;
|
||||
@@ -408,7 +410,7 @@ static int azx_reset(struct hdac_bus *bus, bool full_reset)
|
||||
skip_reset:
|
||||
/* check to see if controller is ready */
|
||||
if (!snd_hdac_chip_readb(bus, GCTL)) {
|
||||
dev_dbg(bus->dev, "azx_reset: controller not ready!\n");
|
||||
dev_dbg(bus->dev, "controller not ready!\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
@@ -423,6 +425,7 @@ static int azx_reset(struct hdac_bus *bus, bool full_reset)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hdac_bus_reset_link);
|
||||
|
||||
/* enable interrupts */
|
||||
static void azx_int_enable(struct hdac_bus *bus)
|
||||
@@ -477,15 +480,17 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
|
||||
return false;
|
||||
|
||||
/* reset controller */
|
||||
azx_reset(bus, full_reset);
|
||||
snd_hdac_bus_reset_link(bus, full_reset);
|
||||
|
||||
/* initialize interrupts */
|
||||
/* clear interrupts */
|
||||
azx_int_clear(bus);
|
||||
azx_int_enable(bus);
|
||||
|
||||
/* initialize the codec command I/O */
|
||||
snd_hdac_bus_init_cmd_io(bus);
|
||||
|
||||
/* enable interrupts after CORB/RIRB buffers are initialized above */
|
||||
azx_int_enable(bus);
|
||||
|
||||
/* program the position buffer */
|
||||
if (bus->use_posbuf && bus->posbuf.addr) {
|
||||
snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);
|
||||
|
@@ -145,9 +145,11 @@ int snd_hdac_i915_init(struct hdac_bus *bus)
|
||||
if (!acomp->ops) {
|
||||
request_module("i915");
|
||||
/* 10s timeout */
|
||||
wait_for_completion_timeout(&bind_complete, 10 * 1000);
|
||||
wait_for_completion_timeout(&bind_complete,
|
||||
msecs_to_jiffies(10 * 1000));
|
||||
}
|
||||
if (!acomp->ops) {
|
||||
dev_info(bus->dev, "couldn't bind with audio component\n");
|
||||
snd_hdac_acomp_exit(bus);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户