|
@@ -238,8 +238,9 @@ static void pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
|
|
|
* pnp_init_resources - Resets a resource table to default values.
|
|
|
* @table: pointer to the desired resource table
|
|
|
*/
|
|
|
-void pnp_init_resource_table(struct pnp_resource_table *table)
|
|
|
+void pnp_init_resources(struct pnp_dev *dev)
|
|
|
{
|
|
|
+ struct pnp_resource_table *table = &dev->res;
|
|
|
int idx;
|
|
|
|
|
|
for (idx = 0; idx < PNP_MAX_IRQ; idx++) {
|
|
@@ -272,11 +273,6 @@ void pnp_init_resource_table(struct pnp_resource_table *table)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void pnp_init_resources(struct pnp_dev *dev)
|
|
|
-{
|
|
|
- pnp_init_resource_table(&dev->res);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* pnp_clean_resources - clears resources that were not manually set
|
|
|
* @res: the resources to clean
|
|
@@ -422,59 +418,6 @@ fail:
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * pnp_manual_config_dev - Disables Auto Config and Manually sets the resource table
|
|
|
- * @dev: pointer to the desired device
|
|
|
- * @res: pointer to the new resource config
|
|
|
- * @mode: 0 or PNP_CONFIG_FORCE
|
|
|
- *
|
|
|
- * This function can be used by drivers that want to manually set thier resources.
|
|
|
- */
|
|
|
-int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res,
|
|
|
- int mode)
|
|
|
-{
|
|
|
- int i;
|
|
|
- struct pnp_resource_table *bak;
|
|
|
-
|
|
|
- if (!pnp_can_configure(dev))
|
|
|
- return -ENODEV;
|
|
|
- bak = pnp_alloc(sizeof(struct pnp_resource_table));
|
|
|
- if (!bak)
|
|
|
- return -ENOMEM;
|
|
|
- *bak = dev->res;
|
|
|
-
|
|
|
- mutex_lock(&pnp_res_mutex);
|
|
|
- dev->res = *res;
|
|
|
- if (!(mode & PNP_CONFIG_FORCE)) {
|
|
|
- for (i = 0; i < PNP_MAX_PORT; i++) {
|
|
|
- if (!pnp_check_port(dev, i))
|
|
|
- goto fail;
|
|
|
- }
|
|
|
- for (i = 0; i < PNP_MAX_MEM; i++) {
|
|
|
- if (!pnp_check_mem(dev, i))
|
|
|
- goto fail;
|
|
|
- }
|
|
|
- for (i = 0; i < PNP_MAX_IRQ; i++) {
|
|
|
- if (!pnp_check_irq(dev, i))
|
|
|
- goto fail;
|
|
|
- }
|
|
|
- for (i = 0; i < PNP_MAX_DMA; i++) {
|
|
|
- if (!pnp_check_dma(dev, i))
|
|
|
- goto fail;
|
|
|
- }
|
|
|
- }
|
|
|
- mutex_unlock(&pnp_res_mutex);
|
|
|
-
|
|
|
- kfree(bak);
|
|
|
- return 0;
|
|
|
-
|
|
|
-fail:
|
|
|
- dev->res = *bak;
|
|
|
- mutex_unlock(&pnp_res_mutex);
|
|
|
- kfree(bak);
|
|
|
- return -EINVAL;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* pnp_auto_config_dev - automatically assigns resources to a device
|
|
|
* @dev: pointer to the desired device
|
|
@@ -602,24 +545,7 @@ int pnp_disable_dev(struct pnp_dev *dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * pnp_resource_change - change one resource
|
|
|
- * @resource: pointer to resource to be changed
|
|
|
- * @start: start of region
|
|
|
- * @size: size of region
|
|
|
- */
|
|
|
-void pnp_resource_change(struct resource *resource, resource_size_t start,
|
|
|
- resource_size_t size)
|
|
|
-{
|
|
|
- resource->flags &= ~(IORESOURCE_AUTO | IORESOURCE_UNSET);
|
|
|
- resource->start = start;
|
|
|
- resource->end = start + size - 1;
|
|
|
-}
|
|
|
-
|
|
|
-EXPORT_SYMBOL(pnp_manual_config_dev);
|
|
|
EXPORT_SYMBOL(pnp_start_dev);
|
|
|
EXPORT_SYMBOL(pnp_stop_dev);
|
|
|
EXPORT_SYMBOL(pnp_activate_dev);
|
|
|
EXPORT_SYMBOL(pnp_disable_dev);
|
|
|
-EXPORT_SYMBOL(pnp_resource_change);
|
|
|
-EXPORT_SYMBOL(pnp_init_resource_table);
|