diff options
Diffstat (limited to 'drivers/misc/mic/card')
| -rw-r--r-- | drivers/misc/mic/card/mic_device.c | 88 | ||||
| -rw-r--r-- | drivers/misc/mic/card/mic_x100.c | 2 | 
2 files changed, 4 insertions, 86 deletions
| diff --git a/drivers/misc/mic/card/mic_device.c b/drivers/misc/mic/card/mic_device.c index 6338908b2252..d0edaf7e0cd5 100644 --- a/drivers/misc/mic/card/mic_device.c +++ b/drivers/misc/mic/card/mic_device.c @@ -37,71 +37,6 @@  #include "mic_virtio.h"  static struct mic_driver *g_drv; -static struct mic_irq *shutdown_cookie; - -static void mic_notify_host(u8 state) -{ -	struct mic_driver *mdrv = g_drv; -	struct mic_bootparam __iomem *bootparam = mdrv->dp; - -	iowrite8(state, &bootparam->shutdown_status); -	dev_dbg(mdrv->dev, "%s %d system_state %d\n", -		__func__, __LINE__, state); -	mic_send_intr(&mdrv->mdev, ioread8(&bootparam->c2h_shutdown_db)); -} - -static int mic_panic_event(struct notifier_block *this, unsigned long event, -		void *ptr) -{ -	struct mic_driver *mdrv = g_drv; -	struct mic_bootparam __iomem *bootparam = mdrv->dp; - -	iowrite8(-1, &bootparam->h2c_config_db); -	iowrite8(-1, &bootparam->h2c_shutdown_db); -	mic_notify_host(MIC_CRASHED); -	return NOTIFY_DONE; -} - -static struct notifier_block mic_panic = { -	.notifier_call  = mic_panic_event, -}; - -static irqreturn_t mic_shutdown_isr(int irq, void *data) -{ -	struct mic_driver *mdrv = g_drv; -	struct mic_bootparam __iomem *bootparam = mdrv->dp; - -	mic_ack_interrupt(&g_drv->mdev); -	if (ioread8(&bootparam->shutdown_card)) -		orderly_poweroff(true); -	return IRQ_HANDLED; -} - -static int mic_shutdown_init(void) -{ -	int rc = 0; -	struct mic_driver *mdrv = g_drv; -	struct mic_bootparam __iomem *bootparam = mdrv->dp; -	int shutdown_db; - -	shutdown_db = mic_next_card_db(); -	shutdown_cookie = mic_request_card_irq(mic_shutdown_isr, NULL, -					       "Shutdown", mdrv, shutdown_db); -	if (IS_ERR(shutdown_cookie)) -		rc = PTR_ERR(shutdown_cookie); -	else -		iowrite8(shutdown_db, &bootparam->h2c_shutdown_db); -	return rc; -} - -static void mic_shutdown_uninit(void) -{ -	struct mic_driver *mdrv = g_drv; -	struct mic_bootparam __iomem *bootparam = mdrv->dp; - -	iowrite8(-1, &bootparam->h2c_shutdown_db); -	mic_free_card_irq(shutdown_cookie, mdrv); -}  static int __init mic_dp_init(void)  { @@ -359,11 +294,7 @@ int __init mic_driver_init(struct mic_driver *mdrv)  	u8 node_id;  	g_drv = mdrv; -	/* -	 * Unloading the card module is not supported. The MIC card module -	 * handles fundamental operations like host/card initiated shutdowns -	 * and informing the host about card crashes and cannot be unloaded. -	 */ +	/* Unloading the card module is not supported. */  	if (!try_module_get(mdrv->dev->driver->owner)) {  		rc = -ENODEV;  		goto done; @@ -374,12 +305,9 @@ int __init mic_driver_init(struct mic_driver *mdrv)  	rc = mic_init_irq();  	if (rc)  		goto dp_uninit; -	rc = mic_shutdown_init(); -	if (rc) -		goto irq_uninit;  	if (!mic_request_dma_chans(mdrv)) {  		rc = -ENODEV; -		goto shutdown_uninit; +		goto irq_uninit;  	}  	rc = mic_devices_init(mdrv);  	if (rc) @@ -390,21 +318,18 @@ int __init mic_driver_init(struct mic_driver *mdrv)  					   NULL, &scif_hw_ops,  					   0, node_id, &mdrv->mdev.mmio, NULL,  					   NULL, mdrv->dp, mdrv->dma_ch, -					   mdrv->num_dma_ch); +					   mdrv->num_dma_ch, true);  	if (IS_ERR(mdrv->scdev)) {  		rc = PTR_ERR(mdrv->scdev);  		goto device_uninit;  	}  	mic_create_card_debug_dir(mdrv); -	atomic_notifier_chain_register(&panic_notifier_list, &mic_panic);  done:  	return rc;  device_uninit:  	mic_devices_uninit(mdrv);  dma_free:  	mic_free_dma_chans(mdrv); -shutdown_uninit: -	mic_shutdown_uninit();  irq_uninit:  	mic_uninit_irq();  dp_uninit: @@ -425,13 +350,6 @@ void mic_driver_uninit(struct mic_driver *mdrv)  	scif_unregister_device(mdrv->scdev);  	mic_devices_uninit(mdrv);  	mic_free_dma_chans(mdrv); -	/* -	 * Inform the host about the shutdown status i.e. poweroff/restart etc. -	 * The module cannot be unloaded so the only code path to call -	 * mic_devices_uninit(..) is the shutdown callback. -	 */ -	mic_notify_host(system_state); -	mic_shutdown_uninit();  	mic_uninit_irq();  	mic_dp_uninit();  	module_put(mdrv->dev->driver->owner); diff --git a/drivers/misc/mic/card/mic_x100.c b/drivers/misc/mic/card/mic_x100.c index 77fd41781c2e..b2958ce2368c 100644 --- a/drivers/misc/mic/card/mic_x100.c +++ b/drivers/misc/mic/card/mic_x100.c @@ -261,7 +261,7 @@ static int __init mic_probe(struct platform_device *pdev)  	mic_hw_intr_init(mdrv);  	platform_set_drvdata(pdev, mdrv);  	mdrv->dma_mbdev = mbus_register_device(mdrv->dev, MBUS_DEV_DMA_MIC, -					       NULL, &mbus_hw_ops, +					       NULL, &mbus_hw_ops, 0,  					       mdrv->mdev.mmio.va);  	if (IS_ERR(mdrv->dma_mbdev)) {  		rc = PTR_ERR(mdrv->dma_mbdev); | 
