mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
Merge branch 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: pcmcia: re-enable Zoomed Video support cm4000_cs: Fix undefined ops warning pcmcia vs. MECR on pxa25x/sa1111 drivers/char/pcmcia/ipwireless/main.c: Convert release_resource to release_region/release_mem_region
This commit is contained in:
commit
d8204a37ba
7 changed files with 39 additions and 23 deletions
|
@ -830,8 +830,7 @@ static void monitor_card(unsigned long p)
|
||||||
test_bit(IS_ANY_T1, &dev->flags))) {
|
test_bit(IS_ANY_T1, &dev->flags))) {
|
||||||
DEBUGP(4, dev, "Perform AUTOPPS\n");
|
DEBUGP(4, dev, "Perform AUTOPPS\n");
|
||||||
set_bit(IS_AUTOPPS_ACT, &dev->flags);
|
set_bit(IS_AUTOPPS_ACT, &dev->flags);
|
||||||
ptsreq.protocol = ptsreq.protocol =
|
ptsreq.protocol = (0x01 << dev->proto);
|
||||||
(0x01 << dev->proto);
|
|
||||||
ptsreq.flags = 0x01;
|
ptsreq.flags = 0x01;
|
||||||
ptsreq.pts1 = 0x00;
|
ptsreq.pts1 = 0x00;
|
||||||
ptsreq.pts2 = 0x00;
|
ptsreq.pts2 = 0x00;
|
||||||
|
|
|
@ -78,7 +78,6 @@ static void signalled_reboot_callback(void *callback_data)
|
||||||
static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
|
static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
|
||||||
{
|
{
|
||||||
struct ipw_dev *ipw = priv_data;
|
struct ipw_dev *ipw = priv_data;
|
||||||
struct resource *io_resource;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
|
p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
|
||||||
|
@ -92,9 +91,12 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
io_resource = request_region(p_dev->resource[0]->start,
|
if (!request_region(p_dev->resource[0]->start,
|
||||||
resource_size(p_dev->resource[0]),
|
resource_size(p_dev->resource[0]),
|
||||||
IPWIRELESS_PCCARD_NAME);
|
IPWIRELESS_PCCARD_NAME)) {
|
||||||
|
ret = -EBUSY;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
p_dev->resource[2]->flags |=
|
p_dev->resource[2]->flags |=
|
||||||
WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_CM | WIN_ENABLE;
|
WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_CM | WIN_ENABLE;
|
||||||
|
@ -105,22 +107,25 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
|
||||||
|
|
||||||
ret = pcmcia_map_mem_page(p_dev, p_dev->resource[2], p_dev->card_addr);
|
ret = pcmcia_map_mem_page(p_dev, p_dev->resource[2], p_dev->card_addr);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto exit2;
|
goto exit1;
|
||||||
|
|
||||||
ipw->is_v2_card = resource_size(p_dev->resource[2]) == 0x100;
|
ipw->is_v2_card = resource_size(p_dev->resource[2]) == 0x100;
|
||||||
|
|
||||||
ipw->attr_memory = ioremap(p_dev->resource[2]->start,
|
ipw->common_memory = ioremap(p_dev->resource[2]->start,
|
||||||
resource_size(p_dev->resource[2]));
|
resource_size(p_dev->resource[2]));
|
||||||
request_mem_region(p_dev->resource[2]->start,
|
if (!request_mem_region(p_dev->resource[2]->start,
|
||||||
resource_size(p_dev->resource[2]),
|
resource_size(p_dev->resource[2]),
|
||||||
IPWIRELESS_PCCARD_NAME);
|
IPWIRELESS_PCCARD_NAME)) {
|
||||||
|
ret = -EBUSY;
|
||||||
|
goto exit2;
|
||||||
|
}
|
||||||
|
|
||||||
p_dev->resource[3]->flags |= WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_AM |
|
p_dev->resource[3]->flags |= WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_AM |
|
||||||
WIN_ENABLE;
|
WIN_ENABLE;
|
||||||
p_dev->resource[3]->end = 0; /* this used to be 0x1000 */
|
p_dev->resource[3]->end = 0; /* this used to be 0x1000 */
|
||||||
ret = pcmcia_request_window(p_dev, p_dev->resource[3], 0);
|
ret = pcmcia_request_window(p_dev, p_dev->resource[3], 0);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto exit2;
|
goto exit3;
|
||||||
|
|
||||||
ret = pcmcia_map_mem_page(p_dev, p_dev->resource[3], 0);
|
ret = pcmcia_map_mem_page(p_dev, p_dev->resource[3], 0);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
|
@ -128,23 +133,28 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
|
||||||
|
|
||||||
ipw->attr_memory = ioremap(p_dev->resource[3]->start,
|
ipw->attr_memory = ioremap(p_dev->resource[3]->start,
|
||||||
resource_size(p_dev->resource[3]));
|
resource_size(p_dev->resource[3]));
|
||||||
request_mem_region(p_dev->resource[3]->start,
|
if (!request_mem_region(p_dev->resource[3]->start,
|
||||||
resource_size(p_dev->resource[3]),
|
resource_size(p_dev->resource[3]),
|
||||||
IPWIRELESS_PCCARD_NAME);
|
IPWIRELESS_PCCARD_NAME)) {
|
||||||
|
ret = -EBUSY;
|
||||||
|
goto exit4;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
exit4:
|
||||||
|
iounmap(ipw->attr_memory);
|
||||||
exit3:
|
exit3:
|
||||||
|
release_mem_region(p_dev->resource[2]->start,
|
||||||
|
resource_size(p_dev->resource[2]));
|
||||||
exit2:
|
exit2:
|
||||||
if (ipw->common_memory) {
|
iounmap(ipw->common_memory);
|
||||||
release_mem_region(p_dev->resource[2]->start,
|
|
||||||
resource_size(p_dev->resource[2]));
|
|
||||||
iounmap(ipw->common_memory);
|
|
||||||
}
|
|
||||||
exit1:
|
exit1:
|
||||||
release_resource(io_resource);
|
release_region(p_dev->resource[0]->start,
|
||||||
|
resource_size(p_dev->resource[0]));
|
||||||
|
exit:
|
||||||
pcmcia_disable_device(p_dev);
|
pcmcia_disable_device(p_dev);
|
||||||
return -1;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int config_ipwireless(struct ipw_dev *ipw)
|
static int config_ipwireless(struct ipw_dev *ipw)
|
||||||
|
@ -219,6 +229,8 @@ static int config_ipwireless(struct ipw_dev *ipw)
|
||||||
|
|
||||||
static void release_ipwireless(struct ipw_dev *ipw)
|
static void release_ipwireless(struct ipw_dev *ipw)
|
||||||
{
|
{
|
||||||
|
release_region(ipw->link->resource[0]->start,
|
||||||
|
resource_size(ipw->link->resource[0]));
|
||||||
if (ipw->common_memory) {
|
if (ipw->common_memory) {
|
||||||
release_mem_region(ipw->link->resource[2]->start,
|
release_mem_region(ipw->link->resource[2]->start,
|
||||||
resource_size(ipw->link->resource[2]));
|
resource_size(ipw->link->resource[2]));
|
||||||
|
|
|
@ -518,6 +518,8 @@ int pcmcia_enable_device(struct pcmcia_device *p_dev)
|
||||||
flags |= CONF_ENABLE_IOCARD;
|
flags |= CONF_ENABLE_IOCARD;
|
||||||
if (flags & CONF_ENABLE_IOCARD)
|
if (flags & CONF_ENABLE_IOCARD)
|
||||||
s->socket.flags |= SS_IOCARD;
|
s->socket.flags |= SS_IOCARD;
|
||||||
|
if (flags & CONF_ENABLE_ZVCARD)
|
||||||
|
s->socket.flags |= SS_ZVCARD | SS_IOCARD;
|
||||||
if (flags & CONF_ENABLE_SPKR) {
|
if (flags & CONF_ENABLE_SPKR) {
|
||||||
s->socket.flags |= SS_SPKR_ENA;
|
s->socket.flags |= SS_SPKR_ENA;
|
||||||
status = CCSR_AUDIO_ENA;
|
status = CCSR_AUDIO_ENA;
|
||||||
|
|
|
@ -215,7 +215,7 @@ pxa2xx_pcmcia_frequency_change(struct soc_pcmcia_socket *skt,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void pxa2xx_configure_sockets(struct device *dev)
|
void pxa2xx_configure_sockets(struct device *dev)
|
||||||
{
|
{
|
||||||
struct pcmcia_low_level *ops = dev->platform_data;
|
struct pcmcia_low_level *ops = dev->platform_data;
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
int pxa2xx_drv_pcmcia_add_one(struct soc_pcmcia_socket *skt);
|
int pxa2xx_drv_pcmcia_add_one(struct soc_pcmcia_socket *skt);
|
||||||
void pxa2xx_drv_pcmcia_ops(struct pcmcia_low_level *ops);
|
void pxa2xx_drv_pcmcia_ops(struct pcmcia_low_level *ops);
|
||||||
|
void pxa2xx_configure_sockets(struct device *dev);
|
||||||
|
|
||||||
|
|
|
@ -226,6 +226,7 @@ int pcmcia_lubbock_init(struct sa1111_dev *sadev)
|
||||||
lubbock_set_misc_wr((1 << 15) | (1 << 14), 0);
|
lubbock_set_misc_wr((1 << 15) | (1 << 14), 0);
|
||||||
|
|
||||||
pxa2xx_drv_pcmcia_ops(&lubbock_pcmcia_ops);
|
pxa2xx_drv_pcmcia_ops(&lubbock_pcmcia_ops);
|
||||||
|
pxa2xx_configure_sockets(&sadev->dev);
|
||||||
ret = sa1111_pcmcia_add(sadev, &lubbock_pcmcia_ops,
|
ret = sa1111_pcmcia_add(sadev, &lubbock_pcmcia_ops,
|
||||||
pxa2xx_drv_pcmcia_add_one);
|
pxa2xx_drv_pcmcia_add_one);
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,6 +261,7 @@ void pcmcia_disable_device(struct pcmcia_device *p_dev);
|
||||||
#define CONF_ENABLE_ESR 0x0008
|
#define CONF_ENABLE_ESR 0x0008
|
||||||
#define CONF_ENABLE_IOCARD 0x0010 /* auto-enabled if IO resources or IRQ
|
#define CONF_ENABLE_IOCARD 0x0010 /* auto-enabled if IO resources or IRQ
|
||||||
* (CONF_ENABLE_IRQ) in use */
|
* (CONF_ENABLE_IRQ) in use */
|
||||||
|
#define CONF_ENABLE_ZVCARD 0x0020
|
||||||
|
|
||||||
/* flags used by pcmcia_loop_config() autoconfiguration */
|
/* flags used by pcmcia_loop_config() autoconfiguration */
|
||||||
#define CONF_AUTO_CHECK_VCC 0x0100 /* check for matching Vcc? */
|
#define CONF_AUTO_CHECK_VCC 0x0100 /* check for matching Vcc? */
|
||||||
|
|
Loading…
Reference in a new issue