From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: linux-ide@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH 1/4] ide-pmac: media-bay support fixes
Date: Mon, 16 Jun 2008 21:24:42 +0200 [thread overview]
Message-ID: <200806162124.43005.bzolnier@gmail.com> (raw)
* If MB_CD device has already been detected and bay is in mb_up state just
change bay's state to mb_ide_resetting and let probing thread do the rest
instead of having open-coded waiting for IDE device to become ready in
media_bay_set_ide_infos() and doing the probe by ide_device_add().
* Move media_bay_set_ide_infos() call after ide_device_add().
* Use check_media_bay() instead of check_media_bay_by_base(),
then remove the latter function.
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
unchanged patch
drivers/ide/ppc/pmac.c | 18 ++++++++----------
drivers/macintosh/mediabay.c | 33 +++++----------------------------
include/asm-powerpc/mediabay.h | 1 -
3 files changed, 13 insertions(+), 39 deletions(-)
Index: b/drivers/ide/ppc/pmac.c
===================================================================
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -1030,10 +1030,6 @@ pmac_ide_setup_device(pmac_ide_hwif_t *p
/* XXX FIXME: Media bay stuff need re-organizing */
if (np->parent && np->parent->name
&& strcasecmp(np->parent->name, "media-bay") == 0) {
-#ifdef CONFIG_PMAC_MEDIABAY
- media_bay_set_ide_infos(np->parent, pmif->regbase, pmif->irq,
- hwif);
-#endif /* CONFIG_PMAC_MEDIABAY */
pmif->mediabay = 1;
if (!bidp)
pmif->aapl_bus_id = 1;
@@ -1067,19 +1063,21 @@ pmac_ide_setup_device(pmac_ide_hwif_t *p
if (pmif->mediabay) {
#ifdef CONFIG_PMAC_MEDIABAY
- if (check_media_bay_by_base(pmif->regbase, MB_CD)) {
-#else
- if (1) {
+ if (check_media_bay(np->parent, MB_CD) == -ENODEV)
+ break;
#endif
- hwif->drives[0].noprobe = 1;
- hwif->drives[1].noprobe = 1;
- }
+ hwif->drives[0].noprobe = 1;
+ hwif->drives[1].noprobe = 1;
}
idx[0] = hwif->index;
ide_device_add(idx, &d);
+#ifdef CONFIG_PMAC_MEDIABAY
+ media_bay_set_ide_infos(np->parent, pmif->regbase, pmif->irq, hwif);
+#endif
+
return 0;
}
Index: b/drivers/macintosh/mediabay.c
===================================================================
--- a/drivers/macintosh/mediabay.c
+++ b/drivers/macintosh/mediabay.c
@@ -433,21 +433,6 @@ int check_media_bay(struct device_node *
EXPORT_SYMBOL(check_media_bay);
#ifdef CONFIG_BLK_DEV_IDE_PMAC
-int check_media_bay_by_base(unsigned long base, int what)
-{
- int i;
-
- for (i=0; i<media_bay_count; i++)
- if (media_bays[i].mdev && base == (unsigned long) media_bays[i].cd_base) {
- if ((what == media_bays[i].content_id) && media_bays[i].state == mb_up)
- return 0;
- media_bays[i].cd_index = -1;
- return -EINVAL;
- }
-
- return -ENODEV;
-}
-
int media_bay_set_ide_infos(struct device_node* which_bay, unsigned long base,
int irq, ide_hwif_t *hwif)
{
@@ -457,8 +442,6 @@ int media_bay_set_ide_infos(struct devic
struct media_bay_info* bay = &media_bays[i];
if (bay->mdev && which_bay == bay->mdev->ofdev.node) {
- int timeout = 5000, index = hwif->index;
-
down(&bay->lock);
bay->cd_port = hwif;
@@ -469,18 +452,12 @@ int media_bay_set_ide_infos(struct devic
up(&bay->lock);
return 0;
}
- printk(KERN_DEBUG "Registered ide%d for media bay %d\n", index, i);
- do {
- if (MB_IDE_READY(i)) {
- bay->cd_index = index;
- up(&bay->lock);
- return 0;
- }
- mdelay(1);
- } while(--timeout);
- printk(KERN_DEBUG "Timeount waiting IDE in bay %d\n", i);
+
+ /* let probing thread do the rest */
+ bay->state = mb_ide_resetting;
+
up(&bay->lock);
- return -ENODEV;
+ return 0;
}
}
Index: b/include/asm-powerpc/mediabay.h
===================================================================
--- a/include/asm-powerpc/mediabay.h
+++ b/include/asm-powerpc/mediabay.h
@@ -25,7 +25,6 @@ extern int media_bay_count;
#ifdef CONFIG_BLK_DEV_IDE_PMAC
#include <linux/ide.h>
-int check_media_bay_by_base(unsigned long base, int what);
/* called by IDE PMAC host driver to register IDE controller for media bay */
int media_bay_set_ide_infos(struct device_node *which_bay, unsigned long base,
int irq, ide_hwif_t *hwif);
next reply other threads:[~2008-06-16 19:23 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-16 19:24 Bartlomiej Zolnierkiewicz [this message]
2008-06-17 3:39 ` [PATCH 1/4] ide-pmac: media-bay support fixes Benjamin Herrenschmidt
2008-06-17 3:49 ` Benjamin Herrenschmidt
2008-06-17 9:41 ` Bartlomiej Zolnierkiewicz
2008-06-17 9:58 ` Bartlomiej Zolnierkiewicz
2008-06-23 5:35 ` Benjamin Herrenschmidt
2008-06-23 5:54 ` Benjamin Herrenschmidt
2008-06-23 6:41 ` Benjamin Herrenschmidt
2008-06-23 10:47 ` Benjamin Herrenschmidt
2008-06-23 21:45 ` Bartlomiej Zolnierkiewicz
2008-06-24 10:33 ` Benjamin Herrenschmidt
2008-06-23 21:00 ` Bartlomiej Zolnierkiewicz
2008-06-24 10:34 ` Benjamin Herrenschmidt
2008-06-24 18:51 ` Bartlomiej Zolnierkiewicz
2008-06-24 18:55 ` Bartlomiej Zolnierkiewicz
2008-06-26 4:54 ` Benjamin Herrenschmidt
2008-06-26 8:51 ` Bartlomiej Zolnierkiewicz
2008-06-26 9:01 ` Benjamin Herrenschmidt
2008-06-26 9:40 ` Bartlomiej Zolnierkiewicz
2008-07-03 5:33 ` Benjamin Herrenschmidt
2008-07-03 6:47 ` Benjamin Herrenschmidt
2008-07-03 7:33 ` Benjamin Herrenschmidt
2008-07-05 15:56 ` Bartlomiej Zolnierkiewicz
2008-07-05 22:25 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200806162124.43005.bzolnier@gmail.com \
--to=bzolnier@gmail.com \
--cc=benh@kernel.crashing.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.