mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a65f19c61a | ||
|
|
b7d12c3aee | ||
|
|
89aad3fa76 | ||
|
|
366b853e96 | ||
|
|
2465336236 | ||
|
|
0817207f9b | ||
|
|
8799eebba3 | ||
|
|
6470f8219d | ||
|
|
6efe60d1a7 | ||
|
|
7fdacd4d7c | ||
|
|
4ef2280701 | ||
|
|
b44a93feca | ||
|
|
92e3f20f0a | ||
|
|
47f4c36aea | ||
|
|
f11abc36d6 | ||
|
|
75f40dd98d | ||
|
|
1597dcedd4 | ||
|
|
0802c6e815 | ||
|
|
743680d778 | ||
|
|
363e2bd65c | ||
|
|
a411c2c547 | ||
|
|
840e7e8f27 | ||
|
|
5e256123ae | ||
|
|
f925410801 | ||
|
|
00697d1203 | ||
|
|
244e027d71 | ||
|
|
fe37277daf | ||
|
|
d88228c8e2 | ||
|
|
b910f8f2e1 |
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="1.99.2"
|
||||
OPENELEC_VERSION="2.0.0"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="2.0"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libcec"
|
||||
PKG_VERSION="2.0.0"
|
||||
PKG_VERSION="2.0.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="linux"
|
||||
PKG_VERSION="3.2.30"
|
||||
PKG_VERSION="3.2.31"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
From f27b853ea24a9b70585f9251384d97929e6551c3 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Mon, 14 May 2012 21:36:00 -0300
|
||||
Subject: [PATCH] [media] rc: Fix invalid free_region and/or free_irq on probe
|
||||
failure
|
||||
|
||||
fintek-cir, ite-cir and nuvoton-cir may try to free an I/O region
|
||||
and/or IRQ handler that was never allocated after a failure in their
|
||||
respective probe functions. Add and use separate labels on the
|
||||
failure path so they will do the right cleanup after each possible
|
||||
point of failure.
|
||||
|
||||
Compile-tested only.
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
---
|
||||
drivers/media/rc/fintek-cir.c | 13 ++++++-------
|
||||
drivers/media/rc/ite-cir.c | 14 ++++++--------
|
||||
drivers/media/rc/nuvoton-cir.c | 26 ++++++++++++--------------
|
||||
3 files changed, 24 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c
|
||||
index 4a3a238..6aabf7a 100644
|
||||
--- a/drivers/media/rc/fintek-cir.c
|
||||
+++ b/drivers/media/rc/fintek-cir.c
|
||||
@@ -556,11 +556,11 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
|
||||
if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
|
||||
FINTEK_DRIVER_NAME, (void *)fintek))
|
||||
- goto failure;
|
||||
+ goto failure2;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto failure3;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
fintek->rdev = rdev;
|
||||
@@ -570,12 +570,11 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
|
||||
return 0;
|
||||
|
||||
+failure3:
|
||||
+ free_irq(fintek->cir_irq, fintek);
|
||||
+failure2:
|
||||
+ release_region(fintek->cir_addr, fintek->cir_port_len);
|
||||
failure:
|
||||
- if (fintek->cir_irq)
|
||||
- free_irq(fintek->cir_irq, fintek);
|
||||
- if (fintek->cir_addr)
|
||||
- release_region(fintek->cir_addr, fintek->cir_port_len);
|
||||
-
|
||||
rc_free_device(rdev);
|
||||
kfree(fintek);
|
||||
|
||||
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
|
||||
index 0e49c99..36fe5a3 100644
|
||||
--- a/drivers/media/rc/ite-cir.c
|
||||
+++ b/drivers/media/rc/ite-cir.c
|
||||
@@ -1598,24 +1598,22 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
|
||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
||||
ITE_DRIVER_NAME, (void *)itdev))
|
||||
- goto failure;
|
||||
+ goto failure2;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto failure3;
|
||||
|
||||
itdev->rdev = rdev;
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
+failure3:
|
||||
+ free_irq(itdev->cir_irq, itdev);
|
||||
+failure2:
|
||||
+ release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
failure:
|
||||
- if (itdev->cir_irq)
|
||||
- free_irq(itdev->cir_irq, itdev);
|
||||
-
|
||||
- if (itdev->cir_addr)
|
||||
- release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
-
|
||||
rc_free_device(rdev);
|
||||
kfree(itdev);
|
||||
|
||||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
||||
index 8b2c071..dc8a7dd 100644
|
||||
--- a/drivers/media/rc/nuvoton-cir.c
|
||||
+++ b/drivers/media/rc/nuvoton-cir.c
|
||||
@@ -1075,19 +1075,19 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
|
||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure;
|
||||
+ goto failure2;
|
||||
|
||||
if (!request_region(nvt->cir_wake_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto failure3;
|
||||
|
||||
if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure;
|
||||
+ goto failure4;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto failure5;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
nvt->rdev = rdev;
|
||||
@@ -1099,17 +1099,15 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
|
||||
return 0;
|
||||
|
||||
+failure5:
|
||||
+ free_irq(nvt->cir_wake_irq, nvt);
|
||||
+failure4:
|
||||
+ release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
+failure3:
|
||||
+ free_irq(nvt->cir_irq, nvt);
|
||||
+failure2:
|
||||
+ release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
failure:
|
||||
- if (nvt->cir_irq)
|
||||
- free_irq(nvt->cir_irq, nvt);
|
||||
- if (nvt->cir_addr)
|
||||
- release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
-
|
||||
- if (nvt->cir_wake_irq)
|
||||
- free_irq(nvt->cir_wake_irq, nvt);
|
||||
- if (nvt->cir_wake_addr)
|
||||
- release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
-
|
||||
rc_free_device(rdev);
|
||||
kfree(nvt);
|
||||
|
||||
--
|
||||
1.7.7.6
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
|
||||
index 647dd95..62f9076 100644
|
||||
--- a/drivers/media/rc/ene_ir.c
|
||||
+++ b/drivers/media/rc/ene_ir.c
|
||||
@@ -1000,7 +1000,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
||||
rdev = rc_allocate_device();
|
||||
if (!dev || !rdev)
|
||||
- goto error1;
|
||||
+ goto failure;
|
||||
|
||||
/* validate resources */
|
||||
error = -ENODEV;
|
||||
@@ -1011,10 +1011,10 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
|
||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
if (!pnp_irq_valid(pnp_dev, 0))
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
spin_lock_init(&dev->hw_lock);
|
||||
|
||||
@@ -1030,7 +1030,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
/* detect hardware version and features */
|
||||
error = ene_hw_detect(dev);
|
||||
if (error)
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
||||
dev->hw_learning_and_tx_capable = true;
|
||||
@@ -1075,30 +1075,27 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- dev->hw_io = -1;
|
||||
- dev->irq = -1;
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
if (request_irq(dev->irq, ene_isr,
|
||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
||||
- dev->irq = -1;
|
||||
- goto error;
|
||||
+ goto failure2;
|
||||
}
|
||||
|
||||
error = rc_register_device(rdev);
|
||||
if (error < 0)
|
||||
- goto error;
|
||||
+ goto failure3;
|
||||
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
-error:
|
||||
- if (dev && dev->irq >= 0)
|
||||
- free_irq(dev->irq, dev);
|
||||
- if (dev && dev->hw_io >= 0)
|
||||
- release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
-error1:
|
||||
+
|
||||
+failure3:
|
||||
+ free_irq(dev->irq, dev);
|
||||
+failure2:
|
||||
+ release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
+failure:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
return error;
|
||||
@@ -0,0 +1,366 @@
|
||||
diff --git a/drivers/media/rc/ati_remote.c b/drivers/media/rc/ati_remote.c
|
||||
index 8fa72e2..58fce6a 100644
|
||||
--- a/drivers/media/rc/ati_remote.c
|
||||
+++ b/drivers/media/rc/ati_remote.c
|
||||
@@ -877,11 +877,11 @@ static int ati_remote_probe(struct usb_interface *interface,
|
||||
ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL);
|
||||
rc_dev = rc_allocate_device();
|
||||
if (!ati_remote || !rc_dev)
|
||||
- goto fail1;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* Allocate URB buffers, URBs */
|
||||
if (ati_remote_alloc_buffers(udev, ati_remote))
|
||||
- goto fail2;
|
||||
+ goto exit_free_buffers;
|
||||
|
||||
ati_remote->endpoint_in = endpoint_in;
|
||||
ati_remote->endpoint_out = endpoint_out;
|
||||
@@ -929,12 +929,12 @@ static int ati_remote_probe(struct usb_interface *interface,
|
||||
/* Device Hardware Initialization - fills in ati_remote->idev from udev. */
|
||||
err = ati_remote_initialize(ati_remote);
|
||||
if (err)
|
||||
- goto fail3;
|
||||
+ goto exit_kill_urbs;
|
||||
|
||||
/* Set up and register rc device */
|
||||
err = rc_register_device(ati_remote->rdev);
|
||||
if (err)
|
||||
- goto fail3;
|
||||
+ goto exit_kill_urbs;
|
||||
|
||||
/* use our delay for rc_dev */
|
||||
ati_remote->rdev->input_dev->rep[REP_DELAY] = repeat_delay;
|
||||
@@ -943,26 +943,31 @@ static int ati_remote_probe(struct usb_interface *interface,
|
||||
if (mouse) {
|
||||
input_dev = input_allocate_device();
|
||||
if (!input_dev)
|
||||
- goto fail4;
|
||||
+ goto exit_unregister_device;
|
||||
|
||||
ati_remote->idev = input_dev;
|
||||
ati_remote_input_init(ati_remote);
|
||||
err = input_register_device(input_dev);
|
||||
|
||||
if (err)
|
||||
- goto fail5;
|
||||
+ goto exit_free_input_device;
|
||||
}
|
||||
|
||||
usb_set_intfdata(interface, ati_remote);
|
||||
return 0;
|
||||
|
||||
- fail5: input_free_device(input_dev);
|
||||
- fail4: rc_unregister_device(rc_dev);
|
||||
+ exit_free_input_device:
|
||||
+ input_free_device(input_dev);
|
||||
+ exit_unregister_device:
|
||||
+ rc_unregister_device(rc_dev);
|
||||
rc_dev = NULL;
|
||||
- fail3: usb_kill_urb(ati_remote->irq_urb);
|
||||
+ exit_kill_urbs:
|
||||
+ usb_kill_urb(ati_remote->irq_urb);
|
||||
usb_kill_urb(ati_remote->out_urb);
|
||||
- fail2: ati_remote_free_buffers(ati_remote);
|
||||
- fail1: rc_free_device(rc_dev);
|
||||
+ exit_free_buffers:
|
||||
+ ati_remote_free_buffers(ati_remote);
|
||||
+ exit_free_dev_rdev:
|
||||
+ rc_free_device(rc_dev);
|
||||
kfree(ati_remote);
|
||||
return err;
|
||||
}
|
||||
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
|
||||
index 62f9076..7337816 100644
|
||||
--- a/drivers/media/rc/ene_ir.c
|
||||
+++ b/drivers/media/rc/ene_ir.c
|
||||
@@ -1000,7 +1000,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
||||
rdev = rc_allocate_device();
|
||||
if (!dev || !rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* validate resources */
|
||||
error = -ENODEV;
|
||||
@@ -1011,10 +1011,10 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
|
||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (!pnp_irq_valid(pnp_dev, 0))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
spin_lock_init(&dev->hw_lock);
|
||||
|
||||
@@ -1030,7 +1030,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
/* detect hardware version and features */
|
||||
error = ene_hw_detect(dev);
|
||||
if (error)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
||||
dev->hw_learning_and_tx_capable = true;
|
||||
@@ -1075,27 +1075,27 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
if (request_irq(dev->irq, ene_isr,
|
||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
||||
- goto failure2;
|
||||
+ goto exit_release_hw_io;
|
||||
}
|
||||
|
||||
error = rc_register_device(rdev);
|
||||
if (error < 0)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(dev->irq, dev);
|
||||
-failure2:
|
||||
+exit_release_hw_io:
|
||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
return error;
|
||||
diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c
|
||||
index ab30c64..8284d28 100644
|
||||
--- a/drivers/media/rc/fintek-cir.c
|
||||
+++ b/drivers/media/rc/fintek-cir.c
|
||||
@@ -495,18 +495,18 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
/* validate pnp resources */
|
||||
if (!pnp_port_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "IR PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
fintek->cir_addr = pnp_port_start(pdev, 0);
|
||||
@@ -523,7 +523,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
|
||||
ret = fintek_hw_detect(fintek);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* Initialize CIR & CIR Wake Logical Devices */
|
||||
fintek_config_mode_enable(fintek);
|
||||
@@ -556,15 +556,15 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
/* now claim resources */
|
||||
if (!request_region(fintek->cir_addr,
|
||||
fintek->cir_port_len, FINTEK_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
|
||||
FINTEK_DRIVER_NAME, (void *)fintek))
|
||||
- goto failure2;
|
||||
+ goto exit_free_cir_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
fintek->rdev = rdev;
|
||||
@@ -574,11 +574,11 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(fintek->cir_irq, fintek);
|
||||
-failure2:
|
||||
+exit_free_cir_addr:
|
||||
release_region(fintek->cir_addr, fintek->cir_port_len);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(fintek);
|
||||
|
||||
diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
|
||||
index 04cb272..0c03b7d 100644
|
||||
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
|
||||
index 36fe5a3..77cb21f 100644
|
||||
--- a/drivers/media/rc/ite-cir.c
|
||||
+++ b/drivers/media/rc/ite-cir.c
|
||||
@@ -1472,7 +1472,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
|
||||
@@ -1497,12 +1497,12 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
if (!pnp_port_valid(pdev, io_rsrc_no) ||
|
||||
pnp_port_len(pdev, io_rsrc_no) != dev_desc->io_region_size) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
/* store resource values */
|
||||
@@ -1594,26 +1594,26 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
||||
ITE_DRIVER_NAME, (void *)itdev))
|
||||
- goto failure2;
|
||||
+ goto exit_release_cir_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
itdev->rdev = rdev;
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(itdev->cir_irq, itdev);
|
||||
-failure2:
|
||||
+exit_release_cir_addr:
|
||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(itdev);
|
||||
|
||||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
||||
index 699eef3..8ab6843 100644
|
||||
--- a/drivers/media/rc/nuvoton-cir.c
|
||||
+++ b/drivers/media/rc/nuvoton-cir.c
|
||||
@@ -986,25 +986,25 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
/* validate pnp resources */
|
||||
if (!pnp_port_valid(pdev, 0) ||
|
||||
pnp_port_len(pdev, 0) < CIR_IOREG_LENGTH) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_port_valid(pdev, 1) ||
|
||||
pnp_port_len(pdev, 1) < CIR_IOREG_LENGTH) {
|
||||
dev_err(&pdev->dev, "Wake PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
nvt->cir_addr = pnp_port_start(pdev, 0);
|
||||
@@ -1027,7 +1027,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
|
||||
ret = nvt_hw_detect(nvt);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* Initialize CIR & CIR Wake Logical Devices */
|
||||
nvt_efm_enable(nvt);
|
||||
@@ -1070,23 +1070,23 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
/* now claim resources */
|
||||
if (!request_region(nvt->cir_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure2;
|
||||
+ goto exit_release_cir_addr;
|
||||
|
||||
if (!request_region(nvt->cir_wake_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure4;
|
||||
+ goto exit_release_cir_wake_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure5;
|
||||
+ goto exit_free_wake_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
nvt->rdev = rdev;
|
||||
@@ -1098,15 +1098,15 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
|
||||
return 0;
|
||||
|
||||
-failure5:
|
||||
+exit_free_wake_irq:
|
||||
free_irq(nvt->cir_wake_irq, nvt);
|
||||
-failure4:
|
||||
+exit_release_cir_wake_addr:
|
||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(nvt->cir_irq, nvt);
|
||||
-failure2:
|
||||
+exit_release_cir_addr:
|
||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(nvt);
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c
|
||||
index 8284d28..54809b8 100644
|
||||
--- a/drivers/media/rc/fintek-cir.c
|
||||
+++ b/drivers/media/rc/fintek-cir.c
|
||||
@@ -552,6 +552,8 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
||||
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
||||
|
||||
+ fintek->rdev = rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(fintek->cir_addr,
|
||||
@@ -567,7 +569,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
|
||||
goto exit_free_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
- fintek->rdev = rdev;
|
||||
+
|
||||
fit_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
if (debug)
|
||||
cir_dump_regs(fintek);
|
||||
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
|
||||
index 77cb21f..158bd0a 100644
|
||||
--- a/drivers/media/rc/ite-cir.c
|
||||
+++ b/drivers/media/rc/ite-cir.c
|
||||
@@ -1590,6 +1590,8 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
rdev->driver_name = ITE_DRIVER_NAME;
|
||||
rdev->map_name = RC_MAP_RC6_MCE;
|
||||
|
||||
+ itdev->rdev = rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
@@ -1604,7 +1606,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
if (ret)
|
||||
goto exit_free_irq;
|
||||
|
||||
- itdev->rdev = rdev;
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
||||
index 8ab6843..a1b6be6 100644
|
||||
--- a/drivers/media/rc/nuvoton-cir.c
|
||||
+++ b/drivers/media/rc/nuvoton-cir.c
|
||||
@@ -1065,6 +1065,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
/* tx bits */
|
||||
rdev->tx_resolution = XYZ;
|
||||
#endif
|
||||
+ nvt->rdev = rdev;
|
||||
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
@@ -1089,7 +1090,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
goto exit_free_wake_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
- nvt->rdev = rdev;
|
||||
+
|
||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
if (debug) {
|
||||
cir_dump_regs(nvt);
|
||||
@@ -0,0 +1,177 @@
|
||||
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
|
||||
index 7337816..17b38a9 100644
|
||||
--- a/drivers/media/rc/ene_ir.c
|
||||
+++ b/drivers/media/rc/ene_ir.c
|
||||
@@ -1072,10 +1072,14 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
device_set_wakeup_capable(&pnp_dev->dev, true);
|
||||
device_set_wakeup_enable(&pnp_dev->dev, true);
|
||||
|
||||
+ error = rc_register_device(rdev);
|
||||
+ if (error < 0)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
@@ -1084,17 +1088,13 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
|
||||
goto exit_release_hw_io;
|
||||
}
|
||||
|
||||
- error = rc_register_device(rdev);
|
||||
- if (error < 0)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(dev->irq, dev);
|
||||
exit_release_hw_io:
|
||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
|
||||
index 158bd0a..974836a 100644
|
||||
--- a/drivers/media/rc/ite-cir.c
|
||||
+++ b/drivers/media/rc/ite-cir.c
|
||||
@@ -1592,28 +1592,28 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
|
||||
|
||||
itdev->rdev = rdev;
|
||||
|
||||
+ ret = rc_register_device(rdev);
|
||||
+ if (ret)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
|
||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
||||
ITE_DRIVER_NAME, (void *)itdev))
|
||||
goto exit_release_cir_addr;
|
||||
|
||||
- ret = rc_register_device(rdev);
|
||||
- if (ret)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(itdev->cir_irq, itdev);
|
||||
exit_release_cir_addr:
|
||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(itdev);
|
||||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
||||
index a1b6be6..18a50b9 100644
|
||||
--- a/drivers/media/rc/nuvoton-cir.c
|
||||
+++ b/drivers/media/rc/nuvoton-cir.c
|
||||
@@ -1067,11 +1067,15 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
#endif
|
||||
nvt->rdev = rdev;
|
||||
|
||||
+ ret = rc_register_device(rdev);
|
||||
+ if (ret)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(nvt->cir_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
|
||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
@@ -1085,10 +1089,6 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
goto exit_release_cir_wake_addr;
|
||||
|
||||
- ret = rc_register_device(rdev);
|
||||
- if (ret)
|
||||
- goto exit_free_wake_irq;
|
||||
-
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
|
||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
@@ -1099,14 +1099,14 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_wake_irq:
|
||||
- free_irq(nvt->cir_wake_irq, nvt);
|
||||
exit_release_cir_wake_addr:
|
||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
exit_free_irq:
|
||||
free_irq(nvt->cir_irq, nvt);
|
||||
exit_release_cir_addr:
|
||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(nvt);
|
||||
diff --git a/drivers/media/rc/winbond-cir.c b/drivers/media/rc/winbond-cir.c
|
||||
index 54ee348..1f90e8c 100644
|
||||
--- a/drivers/media/rc/winbond-cir.c
|
||||
+++ b/drivers/media/rc/winbond-cir.c
|
||||
@@ -1035,11 +1035,15 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
|
||||
data->dev->timeout = MS_TO_NS(100);
|
||||
data->dev->allowed_protos = RC_TYPE_ALL;
|
||||
|
||||
+ err = rc_register_device(data->dev);
|
||||
+ if (err)
|
||||
+ goto exit_free_rc;
|
||||
+
|
||||
if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
|
||||
dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
|
||||
data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
|
||||
err = -EBUSY;
|
||||
- goto exit_free_rc;
|
||||
+ goto exit_unregister_device;
|
||||
}
|
||||
|
||||
if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
|
||||
@@ -1064,24 +1068,20 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
|
||||
goto exit_release_sbase;
|
||||
}
|
||||
|
||||
- err = rc_register_device(data->dev);
|
||||
- if (err)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
device_init_wakeup(&device->dev, 1);
|
||||
|
||||
wbcir_init_hw(data);
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(data->irq, device);
|
||||
exit_release_sbase:
|
||||
release_region(data->sbase, SP_IOMEM_LEN);
|
||||
exit_release_ebase:
|
||||
release_region(data->ebase, EHFUNC_IOMEM_LEN);
|
||||
exit_release_wbase:
|
||||
release_region(data->wbase, WAKEUP_IOMEM_LEN);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(data->dev);
|
||||
exit_free_rc:
|
||||
rc_free_device(data->dev);
|
||||
exit_unregister_led:
|
||||
@@ -0,0 +1,25 @@
|
||||
This patch adds a module-device-table-entry to the
|
||||
technisat-usb2-driver which will help udev to on-demand load the
|
||||
driver. This was obviously forgotten during initial commit.
|
||||
|
||||
Signed-off-by: Patrick Boettcher <pboettcher@kernellabs.com>
|
||||
---
|
||||
drivers/media/dvb/dvb-usb/technisat-usb2.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/media/dvb/dvb-usb/technisat-usb2.c b/drivers/media/dvb/dvb-usb/technisat-usb2.c
|
||||
index acefaa8..7a8c8c1 100644
|
||||
--- a/drivers/media/dvb/dvb-usb/technisat-usb2.c
|
||||
+++ b/drivers/media/dvb/dvb-usb/technisat-usb2.c
|
||||
@@ -677,6 +677,7 @@ static struct usb_device_id technisat_usb2_id_table[] = {
|
||||
{ USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_DVB_S2) },
|
||||
{ 0 } /* Terminating entry */
|
||||
};
|
||||
+MODULE_DEVICE_TABLE(usb, technisat_usb2_id_table);
|
||||
|
||||
/* device description */
|
||||
static struct dvb_usb_device_properties technisat_usb2_devices = {
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
--
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-frodo-theme-Confluence"
|
||||
PKG_VERSION="0ff0d2e"
|
||||
PKG_VERSION="9777cc0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<latency>
|
||||
<delay>0</delay>
|
||||
<refresh>
|
||||
<min>20</min>
|
||||
<min>23</min>
|
||||
<max>24</max>
|
||||
<delay>175</delay>
|
||||
</refresh>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-frodo"
|
||||
PKG_VERSION="0ff0d2e"
|
||||
PKG_VERSION="9777cc0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
From 3e1367b680b26123e9e1aa09f8caf2a932d47572 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Op den Kamp <lars@opdenkamp.eu>
|
||||
Date: Tue, 17 Apr 2012 01:57:43 +0200
|
||||
Subject: [PATCH 2/2] cec: libCEC 1.6 support and fixes. libCEC 1.6+ is needed
|
||||
when using firmware v2 on the CEC adapter, which adds
|
||||
wake over CEC * added a new setting to control
|
||||
whether to put the TV in standby when the player is put
|
||||
in standby. * added some button mappings: all menu
|
||||
related buttons -> menu, previous channel -> teletext,
|
||||
added support for the channels list on samsung, mapped
|
||||
next fav -> menu (when available) * display the
|
||||
firmware version in the peripheral manager (if
|
||||
available) * handle the new CEC alert callback
|
||||
(libCEC 1.6+) * replaced 'Put this PC in standby mode
|
||||
when the TV is switched off' with an enum that allows
|
||||
the user to chose between 'Ignore', 'Suspend' and
|
||||
'Shutdown' * fixed - crash when changing settings
|
||||
without libCEC started. * fixed - range of wake and
|
||||
power-off devices * fixed - update the correct
|
||||
standby device setting ('standby_devices' not
|
||||
'wake_devices') * fixed - don't get the settings from
|
||||
the eeprom, but always use the settings provided in
|
||||
xbmc
|
||||
|
||||
---
|
||||
.../720p/DialogPeripheralManager.xml | 4 +-
|
||||
configure.in | 2 +-
|
||||
language/English/strings.xml | 5 +-
|
||||
project/BuildDependencies/scripts/libcec_d.txt | 2 +-
|
||||
system/peripherals.xml | 15 +-
|
||||
tools/darwin/depends/libcec/Makefile | 2 +-
|
||||
xbmc/peripherals/bus/PeripheralBus.cpp | 1 +
|
||||
xbmc/peripherals/devices/Peripheral.h | 2 +
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.cpp | 160 ++++++++++++++++----
|
||||
xbmc/peripherals/devices/PeripheralCecAdapter.h | 4 +
|
||||
10 files changed, 152 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/720p/DialogPeripheralManager.xml b/720p/DialogPeripheralManager.xml
|
||||
index 07954d0..5717017 100644
|
||||
--- a/720p/DialogPeripheralManager.xml
|
||||
+++ b/720p/DialogPeripheralManager.xml
|
||||
@@ -117,7 +117,7 @@
|
||||
<posy>50</posy>
|
||||
<width>520</width>
|
||||
<height>20</height>
|
||||
- <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR]</label>
|
||||
+ <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR] $LOCALIZE[19114]: [COLOR=grey2]$INFO[ListItem.Property(Version)][/COLOR]</label>
|
||||
<align>left</align>
|
||||
<aligny>center</aligny>
|
||||
<font>font12</font>
|
||||
@@ -173,7 +173,7 @@
|
||||
<posy>50</posy>
|
||||
<width>520</width>
|
||||
<height>20</height>
|
||||
- <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR]</label>
|
||||
+ <label>$LOCALIZE[35501]: [COLOR=grey2]$INFO[ListItem.Property(Class)][/COLOR] $LOCALIZE[19114]: [COLOR=grey2]$INFO[ListItem.Property(Version)][/COLOR]</label>
|
||||
<align>left</align>
|
||||
<aligny>center</aligny>
|
||||
<font>font12</font>
|
||||
--
|
||||
1.7.5.4
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<latency>
|
||||
<delay>0</delay>
|
||||
<refresh>
|
||||
<min>20</min>
|
||||
<min>23</min>
|
||||
<max>24</max>
|
||||
<delay>175</delay>
|
||||
</refresh>
|
||||
|
||||
@@ -0,0 +1,392 @@
|
||||
From dffb8b123b9c85e0f78c8ad10ea09534edbe6e61 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Fri, 5 Oct 2012 11:46:26 +0200
|
||||
Subject: [PATCH] xvba: reduce needed memory, in particular during channel
|
||||
switching
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 230 ++++++++++---------------
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h | 7 +-
|
||||
2 files changed, 97 insertions(+), 140 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
index 78ad0a6..790b3b4 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
@@ -517,37 +517,7 @@ long CDecoder::Release()
|
||||
{
|
||||
CSingleLock lock(m_decoderSection);
|
||||
CLog::Log(LOGNOTICE,"XVBA::Release pre-cleanup");
|
||||
-
|
||||
- Message *reply;
|
||||
- if (m_xvbaOutput.m_controlPort.SendOutMessageSync(COutputControlProtocol::PRECLEANUP,
|
||||
- &reply,
|
||||
- 2000))
|
||||
- {
|
||||
- bool success = reply->signal == COutputControlProtocol::ACC ? true : false;
|
||||
- reply->Release();
|
||||
- if (!success)
|
||||
- {
|
||||
- CLog::Log(LOGERROR, "XVBA::%s - pre-cleanup returned error", __FUNCTION__);
|
||||
- m_displayState = XVBA_ERROR;
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- CLog::Log(LOGERROR, "XVBA::%s - pre-cleanup timed out", __FUNCTION__);
|
||||
- m_displayState = XVBA_ERROR;
|
||||
- }
|
||||
-
|
||||
- for(unsigned int i = 0; i < m_videoSurfaces.size(); ++i)
|
||||
- {
|
||||
- xvba_render_state *render = m_videoSurfaces[i];
|
||||
- if (render->surface && !(render->state & FF_XVBA_STATE_USED_FOR_RENDER))
|
||||
- {
|
||||
- g_XVBA_vtable.DestroySurface(render->surface);
|
||||
- render->surface = 0;
|
||||
- render->picture_descriptor = 0;
|
||||
- render->iq_matrix = 0;
|
||||
- }
|
||||
- }
|
||||
+ DestroySession(true);
|
||||
}
|
||||
IHardwareDecoder::Release();
|
||||
}
|
||||
@@ -726,7 +696,7 @@ bool CDecoder::CreateSession(AVCodecContext* avctx)
|
||||
return true;
|
||||
}
|
||||
|
||||
-void CDecoder::DestroySession()
|
||||
+void CDecoder::DestroySession(bool precleanup /*= false*/)
|
||||
{
|
||||
// wait for unfinished decoding jobs
|
||||
XbmcThreads::EndTime timer;
|
||||
@@ -762,7 +732,29 @@ void CDecoder::DestroySession()
|
||||
}
|
||||
}
|
||||
|
||||
- m_xvbaOutput.Dispose();
|
||||
+ if (precleanup)
|
||||
+ {
|
||||
+ Message *reply;
|
||||
+ if (m_xvbaOutput.m_controlPort.SendOutMessageSync(COutputControlProtocol::PRECLEANUP,
|
||||
+ &reply,
|
||||
+ 2000))
|
||||
+ {
|
||||
+ bool success = reply->signal == COutputControlProtocol::ACC ? true : false;
|
||||
+ reply->Release();
|
||||
+ if (!success)
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "XVBA::%s - pre-cleanup returned error", __FUNCTION__);
|
||||
+ m_displayState = XVBA_ERROR;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "XVBA::%s - pre-cleanup timed out", __FUNCTION__);
|
||||
+ m_displayState = XVBA_ERROR;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ m_xvbaOutput.Dispose();
|
||||
|
||||
XVBA_Destroy_Decode_Buffers_Input bufInput;
|
||||
bufInput.size = sizeof(bufInput);
|
||||
@@ -804,6 +796,7 @@ void CDecoder::DestroySession()
|
||||
{
|
||||
g_XVBA_vtable.DestroySurface(render->surface);
|
||||
render->surface = 0;
|
||||
+ render->state = 0;
|
||||
render->picture_descriptor = 0;
|
||||
render->iq_matrix = 0;
|
||||
}
|
||||
@@ -1431,14 +1424,6 @@ long CXvbaRenderPicture::Release()
|
||||
return refCount;
|
||||
}
|
||||
|
||||
-void CXvbaRenderPicture::Transfer()
|
||||
-{
|
||||
- CSingleLock lock(*renderPicSection);
|
||||
-
|
||||
- if (valid)
|
||||
- xvbaOutput->TransferSurface(sourceIdx);
|
||||
-}
|
||||
-
|
||||
void CXvbaRenderPicture::ReturnUnused()
|
||||
{
|
||||
{ CSingleLock lock(*renderPicSection);
|
||||
@@ -1617,9 +1602,10 @@ void COutput::StateMachine(int signal, Protocol *port, Message *msg)
|
||||
msg->Reply(COutputControlProtocol::ACC);
|
||||
return;
|
||||
case COutputControlProtocol::PRECLEANUP:
|
||||
- m_state = O_TOP_CONFIGURED_WAIT_RES1;
|
||||
+ m_state = O_TOP_UNCONFIGURED;
|
||||
+ m_extTimeout = 10000;
|
||||
Flush();
|
||||
- PreReleaseBufferPool();
|
||||
+ ReleaseBufferPool(true);
|
||||
msg->Reply(COutputControlProtocol::ACC);
|
||||
return;
|
||||
default:
|
||||
@@ -1885,6 +1871,7 @@ bool COutput::Init()
|
||||
|
||||
m_xvbaError = false;
|
||||
m_processPicture.render = 0;
|
||||
+ m_fence = None;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1972,32 +1959,6 @@ bool COutput::IsDecodingFinished()
|
||||
return false;
|
||||
}
|
||||
|
||||
-void COutput::TransferSurface(uint32_t source)
|
||||
-{
|
||||
- XvbaBufferPool::GLVideoSurface *glSurface = &m_bufferPool.glSurfaces[source];
|
||||
-
|
||||
- if (glSurface->transferred)
|
||||
- return;
|
||||
-
|
||||
- glSurface->transferred = true;
|
||||
-
|
||||
- // transfer surface
|
||||
- XVBA_Transfer_Surface_Input transInput;
|
||||
- transInput.size = sizeof(transInput);
|
||||
- transInput.session = m_config.xvbaSession;
|
||||
- transInput.src_surface = glSurface->render->surface;
|
||||
- transInput.target_surface = glSurface->glSurface;
|
||||
- transInput.flag = glSurface->field;
|
||||
- { CSingleLock lock(*(m_config.apiSec));
|
||||
- if (Success != g_XVBA_vtable.TransferSurface(&transInput))
|
||||
- {
|
||||
- CLog::Log(LOGERROR,"(XVBA) failed to transfer surface");
|
||||
- m_xvbaError = true;
|
||||
- return;
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
CXvbaRenderPicture* COutput::ProcessPicture()
|
||||
{
|
||||
CXvbaRenderPicture *retPic = 0;
|
||||
@@ -2021,36 +1982,25 @@ CXvbaRenderPicture* COutput::ProcessPicture()
|
||||
int cmd = 0;
|
||||
m_config.stats->GetCmd(cmd);
|
||||
|
||||
-// if (!(cmd & DVP_FLAG_SKIP_PROC))
|
||||
-// {
|
||||
- // transfer surface
|
||||
- XVBA_Transfer_Surface_Input transInput;
|
||||
- transInput.size = sizeof(transInput);
|
||||
- transInput.session = m_config.xvbaSession;
|
||||
- transInput.src_surface = m_processPicture.render->surface;
|
||||
- transInput.target_surface = glSurface->glSurface;
|
||||
- transInput.flag = m_field;
|
||||
- { CSingleLock lock(*(m_config.apiSec));
|
||||
- if (Success != g_XVBA_vtable.TransferSurface(&transInput))
|
||||
- {
|
||||
- CLog::Log(LOGERROR,"(XVBA) failed to transfer surface");
|
||||
- m_xvbaError = true;
|
||||
- return retPic;
|
||||
- }
|
||||
- }
|
||||
+// if (m_fence)
|
||||
+// glDeleteSync(m_fence);
|
||||
+// m_fence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
||||
|
||||
- // make sure that transfer is completed
|
||||
-// uint64_t maxTimeout = 1000000000LL;
|
||||
-// GLsync ReadyFence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
||||
-// glClientWaitSync(ReadyFence, GL_SYNC_FLUSH_COMMANDS_BIT, maxTimeout);
|
||||
-// glDeleteSync(ReadyFence);
|
||||
-// glFinish();GL_SYNC_FLUSH_COMMANDS_BIT
|
||||
-// }
|
||||
-// else
|
||||
-// {
|
||||
-// CLog::Log(LOGDEBUG,"XVBA::ProcessPicture - skipped transfer surface");
|
||||
-// m_processPicture.DVDPic.iFlags |= DVP_FLAG_DROPPED;
|
||||
-// }
|
||||
+ // transfer surface
|
||||
+ XVBA_Transfer_Surface_Input transInput;
|
||||
+ transInput.size = sizeof(transInput);
|
||||
+ transInput.session = m_config.xvbaSession;
|
||||
+ transInput.src_surface = m_processPicture.render->surface;
|
||||
+ transInput.target_surface = glSurface->glSurface;
|
||||
+ transInput.flag = m_field;
|
||||
+ { CSingleLock lock(*(m_config.apiSec));
|
||||
+ if (Success != g_XVBA_vtable.TransferSurface(&transInput))
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR,"(XVBA) failed to transfer surface");
|
||||
+ m_xvbaError = true;
|
||||
+ return retPic;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
// prepare render pic
|
||||
retPic = m_bufferPool.freeRenderPics.front();
|
||||
@@ -2096,36 +2046,34 @@ void COutput::ProcessReturnPicture(CXvbaRenderPicture *pic)
|
||||
return;
|
||||
}
|
||||
|
||||
- if (m_config.useSharedSurfaces)
|
||||
+ xvba_render_state *render = m_bufferPool.glSurfaces[pic->sourceIdx].render;
|
||||
+ if (render)
|
||||
{
|
||||
- xvba_render_state *render = m_bufferPool.glSurfaces[pic->sourceIdx].render;
|
||||
- if (render)
|
||||
+ // check if video surface is referenced by other glSurfaces
|
||||
+ bool referenced(false);
|
||||
+ for (unsigned int i=0; i<m_bufferPool.glSurfaces.size();++i)
|
||||
{
|
||||
- // check if video surface if referenced by other glSurfaces
|
||||
- bool referenced(false);
|
||||
- for (unsigned int i=0; i<m_bufferPool.glSurfaces.size();++i)
|
||||
+ if (i == pic->sourceIdx)
|
||||
+ continue;
|
||||
+ if (m_bufferPool.glSurfaces[i].render == render)
|
||||
{
|
||||
- if (i == pic->sourceIdx)
|
||||
- continue;
|
||||
- if (m_bufferPool.glSurfaces[i].render == render)
|
||||
- {
|
||||
- referenced = true;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
- if (m_processPicture.render == render)
|
||||
referenced = true;
|
||||
-
|
||||
- // release video surface
|
||||
- if (!referenced)
|
||||
- {
|
||||
- CSingleLock lock(*m_config.videoSurfaceSec);
|
||||
- render->state &= ~(FF_XVBA_STATE_USED_FOR_RENDER | FF_XVBA_STATE_DECODED);
|
||||
+ break;
|
||||
}
|
||||
+ }
|
||||
+ if (m_processPicture.render == render)
|
||||
+ referenced = true;
|
||||
|
||||
- // unreference video surface
|
||||
- m_bufferPool.glSurfaces[pic->sourceIdx].render = 0;
|
||||
+ // release video surface
|
||||
+ if (!referenced)
|
||||
+ {
|
||||
+ CSingleLock lock(*m_config.videoSurfaceSec);
|
||||
+ render->state &= ~(FF_XVBA_STATE_USED_FOR_RENDER | FF_XVBA_STATE_DECODED);
|
||||
}
|
||||
+
|
||||
+ // unreference video surface
|
||||
+ m_bufferPool.glSurfaces[pic->sourceIdx].render = 0;
|
||||
+
|
||||
m_bufferPool.glSurfaces[pic->sourceIdx].used = false;
|
||||
return;
|
||||
}
|
||||
@@ -2266,32 +2214,42 @@ bool COutput::EnsureBufferPool()
|
||||
return true;
|
||||
}
|
||||
|
||||
-void COutput::ReleaseBufferPool()
|
||||
+void COutput::ReleaseBufferPool(bool precleanup /*= false*/)
|
||||
{
|
||||
+// if (m_fence)
|
||||
+// {
|
||||
+// uint64_t maxTimeout = 1000000000LL;
|
||||
+// glClientWaitSync(m_fence, GL_SYNC_FLUSH_COMMANDS_BIT, maxTimeout);
|
||||
+// glDeleteSync(m_fence);
|
||||
+// m_fence = None;
|
||||
+// }
|
||||
+
|
||||
CSingleLock lock(m_bufferPool.renderPicSec);
|
||||
|
||||
- if (m_config.useSharedSurfaces)
|
||||
+ for (unsigned int i = 0; i < m_bufferPool.glSurfaces.size(); ++i)
|
||||
{
|
||||
- for (unsigned int i = 0; i < m_bufferPool.glSurfaces.size(); ++i)
|
||||
+ if (m_bufferPool.glSurfaces[i].glSurface)
|
||||
{
|
||||
- if (!m_bufferPool.glSurfaces[i].glSurface)
|
||||
- continue;
|
||||
g_XVBA_vtable.DestroySurface(m_bufferPool.glSurfaces[i].glSurface);
|
||||
+ m_bufferPool.glSurfaces[i].glSurface = 0;
|
||||
+ }
|
||||
+ if (m_bufferPool.glSurfaces[i].texture && !precleanup)
|
||||
+ {
|
||||
glDeleteTextures(1, &m_bufferPool.glSurfaces[i].texture);
|
||||
+ m_bufferPool.glSurfaces[i].texture = 0;
|
||||
}
|
||||
- m_bufferPool.glSurfaces.clear();
|
||||
+ m_bufferPool.glSurfaces[i].render = 0;
|
||||
+ m_bufferPool.glSurfaces[i].used = true;
|
||||
}
|
||||
- // invalidate all used render pictures
|
||||
- for (unsigned int i = 0; i < m_bufferPool.usedRenderPics.size(); ++i)
|
||||
+
|
||||
+ if (!precleanup)
|
||||
{
|
||||
- m_bufferPool.usedRenderPics[i]->valid = false;
|
||||
- unsigned int idx = m_bufferPool.usedRenderPics[i]->sourceIdx;
|
||||
- if (m_bufferPool.glSurfaces[idx].render)
|
||||
+ m_bufferPool.glSurfaces.clear();
|
||||
+
|
||||
+ // invalidate all used render pictures
|
||||
+ for (unsigned int i = 0; i < m_bufferPool.usedRenderPics.size(); ++i)
|
||||
{
|
||||
- { CSingleLock lock(*m_config.videoSurfaceSec);
|
||||
- m_bufferPool.glSurfaces[idx].render->state &= ~(FF_XVBA_STATE_USED_FOR_RENDER | FF_XVBA_STATE_DECODED);
|
||||
- m_bufferPool.glSurfaces[idx].render = 0;
|
||||
- }
|
||||
+ m_bufferPool.usedRenderPics[i]->valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h
|
||||
index 24331e9..f38444c 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h
|
||||
@@ -144,7 +144,6 @@ class CXvbaRenderPicture
|
||||
CDecoder *xvba;
|
||||
CXvbaRenderPicture* Acquire();
|
||||
long Release();
|
||||
- void Transfer();
|
||||
private:
|
||||
void ReturnUnused();
|
||||
int refCount;
|
||||
@@ -226,7 +225,6 @@ class COutput : private CThread
|
||||
virtual ~COutput();
|
||||
void Start();
|
||||
void Dispose();
|
||||
- void TransferSurface(uint32_t source);
|
||||
COutputControlProtocol m_controlPort;
|
||||
COutputDataProtocol m_dataPort;
|
||||
protected:
|
||||
@@ -247,7 +245,7 @@ class COutput : private CThread
|
||||
bool CreateGlxContext();
|
||||
bool DestroyGlxContext();
|
||||
bool EnsureBufferPool();
|
||||
- void ReleaseBufferPool();
|
||||
+ void ReleaseBufferPool(bool precleanup = false);
|
||||
void PreReleaseBufferPool();
|
||||
CEvent m_outMsgEvent;
|
||||
CEvent *m_inMsgEvent;
|
||||
@@ -265,6 +263,7 @@ class COutput : private CThread
|
||||
GLXWindow m_glWindow;
|
||||
Pixmap m_pixmap;
|
||||
GLXPixmap m_glPixmap;
|
||||
+ GLsync m_fence;
|
||||
std::queue<CXvbaDecodedPicture> m_decodedPics;
|
||||
CXvbaDecodedPicture m_processPicture;
|
||||
XVBA_SURFACE_FLAG m_field;
|
||||
@@ -338,7 +337,7 @@ class CDecoder : public CDVDVideoCodecFFmpeg::IHardwareDecoder,
|
||||
|
||||
protected:
|
||||
bool CreateSession(AVCodecContext* avctx);
|
||||
- void DestroySession();
|
||||
+ void DestroySession(bool precleanup = false);
|
||||
bool EnsureDataControlBuffers(unsigned int num);
|
||||
void ResetState();
|
||||
void SetError(const char* function, const char* msg, int line);
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From 97132cf318aa40823ba5af94b9f8ae18dbf5de36 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 14 Oct 2012 13:46:54 +0200
|
||||
Subject: [PATCH] rendermanager: fix stuttering in non full-screen mode,
|
||||
squash to add buffering
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
index ac31c32..4c7b48e 100644
|
||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
@@ -965,8 +965,9 @@ void CXBMCRenderManager::PrepareNextRender()
|
||||
presenttime = clocktime + MAXPRESENTDELAY;
|
||||
|
||||
m_sleeptime = presenttime - clocktime;
|
||||
+ double frametime = 1 / g_graphicsContext.GetFPS();
|
||||
|
||||
- if (g_graphicsContext.IsFullScreenVideo() || presenttime <= clocktime+0.01)
|
||||
+ if (g_graphicsContext.IsFullScreenVideo() || presenttime <= clocktime + frametime)
|
||||
{
|
||||
m_presentPts = m_renderBuffers[idx].pts;
|
||||
m_presenttime = presenttime;
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 33d005b693b044d62f93a6449b4482f1dd1520aa Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 14 Oct 2012 14:34:01 +0200
|
||||
Subject: [PATCH] rendermanger: used wrong flags for backport of:
|
||||
d0c23ddfad95612c47bcf9ce430b00a414b42912
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
index 4c7b48e..4ece507 100644
|
||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
@@ -237,9 +237,9 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi
|
||||
|
||||
// check if decoder supports buffering
|
||||
m_bCodecSupportsBuffering = false;
|
||||
- if ((flags & DVDVideoPicture::FMT_VDPAU)
|
||||
- || (flags & DVDVideoPicture::FMT_VDPAU_420)
|
||||
- || (flags & DVDVideoPicture::FMT_XVBA))
|
||||
+ if ((CONF_FLAGS_FORMAT_MASK(flags) == CONF_FLAGS_FORMAT_VDPAU)
|
||||
+ || (CONF_FLAGS_FORMAT_MASK(flags) == CONF_FLAGS_FORMAT_VDPAU_420)
|
||||
+ || (CONF_FLAGS_FORMAT_MASK(flags) == CONF_FLAGS_FORMAT_XVBA))
|
||||
m_bCodecSupportsBuffering = true;
|
||||
|
||||
bool result = m_pRenderer->Configure(width, height, d_width, d_height, fps, flags, format);
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From 39836e3c8e5b89026ec6a270ca135d20f48d99ea Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 14 Oct 2012 17:54:02 +0200
|
||||
Subject: [PATCH] rendermanager: forgot to set flip event if buffering is not
|
||||
used
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/RenderManager.cpp | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
index b141c80..9290f80 100644
|
||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||
@@ -1096,17 +1096,17 @@ void CXBMCRenderManager::NotifyDisplayFlip()
|
||||
if (!m_pRenderer)
|
||||
return;
|
||||
|
||||
- if (m_iNumRenderBuffers < 3)
|
||||
- return;
|
||||
-
|
||||
- int last = m_iDisplayedRenderBuffer;
|
||||
- m_iDisplayedRenderBuffer = (m_iCurrentRenderBuffer + m_iNumRenderBuffers - 1) % m_iNumRenderBuffers;
|
||||
-
|
||||
- if (last != m_iDisplayedRenderBuffer
|
||||
- && m_iDisplayedRenderBuffer != m_iCurrentRenderBuffer)
|
||||
+ if (m_iNumRenderBuffers >= 3)
|
||||
{
|
||||
- m_pRenderer->ReleaseBuffer(m_iDisplayedRenderBuffer);
|
||||
- m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer);
|
||||
+ int last = m_iDisplayedRenderBuffer;
|
||||
+ m_iDisplayedRenderBuffer = (m_iCurrentRenderBuffer + m_iNumRenderBuffers - 1) % m_iNumRenderBuffers;
|
||||
+
|
||||
+ if (last != m_iDisplayedRenderBuffer
|
||||
+ && m_iDisplayedRenderBuffer != m_iCurrentRenderBuffer)
|
||||
+ {
|
||||
+ m_pRenderer->ReleaseBuffer(m_iDisplayedRenderBuffer);
|
||||
+ m_overlays.ReleaseBuffer(m_iDisplayedRenderBuffer);
|
||||
+ }
|
||||
}
|
||||
|
||||
lock.Leave();
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur xbmc-11.0.3/language/Czech/strings.xml xbmc-11.0.3.patch/language/Czech/strings.xml
|
||||
--- xbmc-11.0.3/language/Czech/strings.xml 2012-10-09 12:09:08.000000000 +0200
|
||||
+++ xbmc-11.0.3.patch/language/Czech/strings.xml 2012-10-13 12:18:00.792572590 +0200
|
||||
@@ -2830,7 +2830,7 @@
|
||||
<string id="36011">Nepodařilo se najít CEC port. Nastavte jej ručně.</string>
|
||||
<string id="36012">Nepodařilo se najít CEC adaptér.</string>
|
||||
<string id="36013">Nepodporovaná verze libcec rozhraní. %d je vyšší než verze podporovaná XBMC (%d)</string>
|
||||
- <string id="36014">/string>
|
||||
+ <string id="36014"></string>
|
||||
<string id="36015">HDMI port</string>
|
||||
<string id="36016">Připojeno</string> <!-- maximálně 13 znaků -->
|
||||
<string id="36017">Adaptér byl nalezen, ale libcec není k dispozici</string>
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -uNr libvdpau-0.5-orig/src/vdpau_wrapper.c libvdpau-0.5/src/vdpau_wrapper.c
|
||||
--- libvdpau-0.5-orig/src/vdpau_wrapper.c 2012-09-04 19:26:33.000000000 +0200
|
||||
+++ libvdpau-0.5/src/vdpau_wrapper.c 2012-10-14 17:05:52.000000000 +0200
|
||||
@@ -320,7 +320,7 @@
|
||||
}
|
||||
buffer[ret] = '\0';
|
||||
|
||||
- if (strstr(buffer, "libflashplayer") != NULL) {
|
||||
+ if (strstr(buffer, "libflashplayer") != NULL || strstr(buffer, "operapluginwrapper") != NULL) {
|
||||
_running_under_flash = 1;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,6 @@ add_user system x 430 430 "service" "/var/run/connman" "/bin/sh"
|
||||
add_group system 430
|
||||
|
||||
mkdir -p $INSTALL/etc
|
||||
cp $PKG_DIR/config/services $INSTALL/etc
|
||||
cp $PKG_DIR/config/resolv.conf $INSTALL/etc
|
||||
|
||||
mkdir -p $INSTALL/etc/connman
|
||||
|
||||
27
packages/network/iana-etc/build
Executable file
27
packages/network/iana-etc/build
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# This Program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
|
||||
cd $PKG_BUILD
|
||||
|
||||
make
|
||||
28
packages/network/iana-etc/install
Executable file
28
packages/network/iana-etc/install
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# This Program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
|
||||
mkdir -p $INSTALL/etc
|
||||
cp $PKG_BUILD/protocols $INSTALL/etc
|
||||
cp $PKG_BUILD/services $INSTALL/etc
|
||||
|
||||
36
packages/network/iana-etc/meta
Normal file
36
packages/network/iana-etc/meta
Normal file
@@ -0,0 +1,36 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# This Program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="iana-etc"
|
||||
PKG_VERSION="2.30"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.linuxfromscratch.org/lfs/view/development/chapter06/iana-etc.html"
|
||||
PKG_URL="http://anduin.linuxfromscratch.org/sources/LFS/lfs-packages/conglomeration/iana-etc/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS=""
|
||||
PKG_BUILD_DEPENDS="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="network"
|
||||
PKG_SHORTDESC="iana-etc: The Iana-Etc package provides data for network services and protocols."
|
||||
PKG_LONGDESC="The Iana-Etc package provides data for network services and protocols."
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
@@ -23,6 +23,7 @@
|
||||
. config/options $1
|
||||
|
||||
$SCRIPTS/install connman
|
||||
$SCRIPTS/install iana-etc
|
||||
$SCRIPTS/install ethtool
|
||||
$SCRIPTS/install openssh
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Busybox version: 1.20.2
|
||||
# Wed Sep 26 00:23:57 2012
|
||||
# Fri Oct 12 19:25:56 2012
|
||||
#
|
||||
CONFIG_HAVE_DOT_CONFIG=y
|
||||
|
||||
@@ -248,7 +248,7 @@ CONFIG_MKNOD=y
|
||||
CONFIG_MV=y
|
||||
CONFIG_FEATURE_MV_LONG_OPTIONS=y
|
||||
CONFIG_NICE=y
|
||||
# CONFIG_NOHUP is not set
|
||||
CONFIG_NOHUP=y
|
||||
CONFIG_OD=y
|
||||
CONFIG_PRINTENV=y
|
||||
CONFIG_PRINTF=y
|
||||
|
||||
@@ -119,6 +119,7 @@ EOF
|
||||
|
||||
cat >configparms <<EOF
|
||||
slibdir=/lib
|
||||
libdir=/usr/lib
|
||||
EOF
|
||||
|
||||
../configure --host=$TARGET_NAME \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/i386 3.2.30 Kernel Configuration
|
||||
# Linux/i386 3.2.31 Kernel Configuration
|
||||
#
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_X86_32=y
|
||||
@@ -894,8 +894,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -915,7 +917,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 3.2.30 Kernel Configuration
|
||||
# Linux/x86_64 3.2.31 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_X86_32 is not set
|
||||
@@ -855,8 +855,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -876,7 +878,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/i386 3.2.30 Kernel Configuration
|
||||
# Linux/i386 3.2.31 Kernel Configuration
|
||||
#
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_X86_32=y
|
||||
@@ -906,8 +906,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -927,7 +929,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/i386 3.2.30 Kernel Configuration
|
||||
# Linux/i386 3.2.31 Kernel Configuration
|
||||
#
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_X86_32=y
|
||||
@@ -906,8 +906,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -927,7 +929,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/i386 3.2.30 Kernel Configuration
|
||||
# Linux/i386 3.2.31 Kernel Configuration
|
||||
#
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_X86_32=y
|
||||
@@ -902,8 +902,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -923,7 +925,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 3.2.30 Kernel Configuration
|
||||
# Linux/x86_64 3.2.31 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_X86_32 is not set
|
||||
@@ -852,8 +852,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -873,7 +875,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/i386 3.2.30 Kernel Configuration
|
||||
# Linux/i386 3.2.31 Kernel Configuration
|
||||
#
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_X86_32=y
|
||||
@@ -904,8 +904,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -925,7 +927,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 3.2.30 Kernel Configuration
|
||||
# Linux/x86_64 3.2.31 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
# CONFIG_X86_32 is not set
|
||||
@@ -855,8 +855,10 @@ CONFIG_SCSI_WAIT_SCAN=m
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
CONFIG_SCSI_SAS_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=y
|
||||
# CONFIG_SCSI_SAS_ATA is not set
|
||||
CONFIG_SCSI_SAS_HOST_SMP=y
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
CONFIG_ISCSI_TCP=y
|
||||
@@ -876,7 +878,9 @@ CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_SCSI_AIC94XX is not set
|
||||
# CONFIG_SCSI_MVSAS is not set
|
||||
CONFIG_SCSI_MVSAS=y
|
||||
# CONFIG_SCSI_MVSAS_DEBUG is not set
|
||||
# CONFIG_SCSI_MVSAS_TASKLET is not set
|
||||
# CONFIG_SCSI_MVUMI is not set
|
||||
# CONFIG_SCSI_DPT_I2O is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
|
||||
Reference in New Issue
Block a user