From: Jan Evert van Grootheest <janevert@iae.nl>
To: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Re: ht6560b patch for 2.4 (and 2.6?)
Date: Sat, 10 Jan 2004 15:39:22 +0100 [thread overview]
Message-ID: <40000E9A.7070805@iae.nl> (raw)
In-Reply-To: <200401090112.19681.bzolnier@elka.pw.edu.pl>
Bart,
Thanks! I'll get on with it as soon as possible.
If you don't mind, I'd like to remove the module code.
I don't use it and I'm not convinced that all functions have proper
__init or similar designations.
In the meantime, perhaps you could give some hints how to get DMA going?
In 2.2 it would do to use hdparm -d1, but in 2.4 that fails (for obvious
reasons when examining the code).
Would it be a trivial task?
Thanks,
Jan Evert
Bartlomiej Zolnierkiewicz wrote:
> Hi,
>
> Sorry for long delay.
>
> On Sunday 28 of December 2003 15:29, Jan Evert van Grootheest wrote:
>
>>Andre,
>>
>>You're listed as the IDE maintainer for 2.4.
>>I'm one of the few people that own one of those Holtek 6560B VLB IDE
>>interfaces.
>
>
> Andre no longer have time to do this.
> You can contact me although I am concentrated on 2.6.x.
>
>
>>Here's a patch against 2.4.23 that at least allows the kernel to boot
>>when using the driver. Without this patch it simply hangs somewhere
>>during early initialisation.
>>
>>I won't be surprised if a comparable patch is required for 2.6, although
>>I have not checked whether it applies. (I have no 2.6 sources yet)
>
>
> Surprise, surprise :-).
>
>
>>This is my first kernel patch so if there is something not in order
>>please let me know.
>
>
> Can you try this patch against kernel 2.4.24?
> It is backport of my 2.6.x patch plus your ide_register_driver() fix.
>
> --bart
>
> [IDE] update ht6560b driver
>
> From: Jan Evert van Grootheest <janevert@iae.nl>:
> - register driver with IDE core or it won't work
>
> Backport of my 2.6.x changes:
> - common ht6560b_init() for built-in and module
> - release hwif only if hwif->chipset == ide_ht6560b
> - when releasing hwif, restore hwif->channel to the default value
> - mark exit functions with __exit
> - do not use ide_hwifs[] directly
> - minor cleanups
>
> drivers/ide/legacy/ht6560b.c | 155 ++++++++++++++++++-------------------------
> 1 files changed, 67 insertions(+), 88 deletions(-)
>
> diff -puN drivers/ide/legacy/ht6560b.c~ide-ht6560b-update drivers/ide/legacy/ht6560b.c
> --- linux-2.4.23/drivers/ide/legacy/ht6560b.c~ide-ht6560b-update 2004-01-09 00:30:21.840090880 +0100
> +++ linux-2.4.23-root/drivers/ide/legacy/ht6560b.c 2004-01-09 01:06:47.081883632 +0100
> @@ -312,119 +312,98 @@ static void tune_ht6560b (ide_drive_t *d
> #endif
> }
>
> -void __init probe_ht6560b (void)
> +static int __init ht6560b_init(void)
> {
> + ide_hwif_t *hwif, *mate;
> int t;
> -
> - request_region(HT_CONFIG_PORT, 1, ide_hwifs[0].name);
> - ide_hwifs[0].chipset = ide_ht6560b;
> - ide_hwifs[1].chipset = ide_ht6560b;
> - ide_hwifs[0].selectproc = &ht6560b_selectproc;
> - ide_hwifs[1].selectproc = &ht6560b_selectproc;
> - ide_hwifs[0].tuneproc = &tune_ht6560b;
> - ide_hwifs[1].tuneproc = &tune_ht6560b;
> - ide_hwifs[0].serialized = 1; /* is this needed? */
> - ide_hwifs[1].serialized = 1; /* is this needed? */
> - ide_hwifs[0].mate = &ide_hwifs[1];
> - ide_hwifs[1].mate = &ide_hwifs[0];
> - ide_hwifs[1].channel = 1;
> -
> +
> + hwif = &ide_hwifs[0];
> + mate = &ide_hwifs[1];
> +
> + if (!request_region(HT_CONFIG_PORT, 1, hwif->name)) {
> + printk(KERN_NOTICE "%s: HT_CONFIG_PORT not found\n",
> + __FUNCTION__);
> + return -ENODEV;
> + }
> +
> + if (!try_to_init_ht6560b()) {
> + release_region(HT_CONFIG_PORT, 1);
> + printk(KERN_NOTICE "%s: HBA not found\n", __FUNCTION__);
> + return -ENODEV;
> + }
> +
> + hwif->chipset = ide_ht6560b;
> + hwif->selectproc = &ht6560b_selectproc;
> + hwif->tuneproc = &tune_ht6560b;
> + hwif->serialized = 1; /* is this needed? */
> + hwif->mate = mate;
> +
> + mate->chipset = ide_ht6560b;
> + mate->selectproc = &ht6560b_selectproc;
> + mate->tuneproc = &tune_ht6560b;
> + mate->serialized = 1; /* is this needed? */
> + mate->mate = hwif;
> + mate->channel = 1;
> +
> /*
> * Setting default configurations for drives
> */
> t = (HT_CONFIG_DEFAULT << 8);
> t |= HT_TIMING_DEFAULT;
> - ide_hwifs[0].drives[0].drive_data = t;
> - ide_hwifs[0].drives[1].drive_data = t;
> + hwif->drives[0].drive_data = t;
> + hwif->drives[1].drive_data = t;
> +
> t |= (HT_SECONDARY_IF << 8);
> - ide_hwifs[1].drives[0].drive_data = t;
> - ide_hwifs[1].drives[1].drive_data = t;
> + mate->drives[0].drive_data = t;
> + mate->drives[1].drive_data = t;
>
> #ifndef HWIF_PROBE_CLASSIC_METHOD
> - probe_hwif_init(&ide_hwifs[0]);
> - probe_hwif_init(&ide_hwifs[1]);
> -#endif /* HWIF_PROBE_CLASSIC_METHOD */
> + probe_hwif_init(hwif);
> + probe_hwif_init(mate);
> +#endif
>
> + return 0;
> }
>
> -void __init ht6560b_release (void)
> +#ifndef MODULE
> +/* Can be called from ide.c. */
> +void __init ht6560b_builtin_init(void)
> {
> - if (ide_hwifs[0].chipset != ide_ht6560b &&
> - ide_hwifs[1].chipset != ide_ht6560b)
> - return;
> -
> - ide_hwifs[0].chipset = ide_unknown;
> - ide_hwifs[1].chipset = ide_unknown;
> - ide_hwifs[0].tuneproc = NULL;
> - ide_hwifs[1].tuneproc = NULL;
> - ide_hwifs[0].selectproc = NULL;
> - ide_hwifs[1].selectproc = NULL;
> - ide_hwifs[0].serialized = 0;
> - ide_hwifs[1].serialized = 0;
> - ide_hwifs[0].mate = NULL;
> - ide_hwifs[1].mate = NULL;
> -
> - ide_hwifs[0].drives[0].drive_data = 0;
> - ide_hwifs[0].drives[1].drive_data = 0;
> - ide_hwifs[1].drives[0].drive_data = 0;
> - ide_hwifs[1].drives[1].drive_data = 0;
> - release_region(HT_CONFIG_PORT, 1);
> + (void)ht6560b_init();
> }
>
> -#ifndef MODULE
> -/*
> - * init_ht6560b:
> - *
> - * called by ide.c when parsing command line
> - */
> -
> -void __init init_ht6560b (void)
> +void __init init_ht6560b(void)
> {
> - if (check_region(HT_CONFIG_PORT,1)) {
> - printk(KERN_NOTICE "%s: HT_CONFIG_PORT not found\n",
> - __FUNCTION__);
> - return;
> - }
> - if (!try_to_init_ht6560b()) {
> - printk(KERN_NOTICE "%s: HBA not found\n", __FUNCTION__);
> - return;
> - }
> - probe_ht6560b();
> + ide_register_driver(ht6560b_builtin_init);
> }
> -
> #else
> -
> -MODULE_AUTHOR("See Local File");
> -MODULE_DESCRIPTION("HT-6560B EIDE-controller support");
> -MODULE_LICENSE("GPL");
> -
> -int __init ht6560b_mod_init(void)
> +static void __exit ht6560b_release_hwif(ide_hwif_t *hwif)
> {
> - if (check_region(HT_CONFIG_PORT,1)) {
> - printk(KERN_NOTICE "%s: HT_CONFIG_PORT not found\n",
> - __FUNCTION__);
> - return -ENODEV;
> - }
> + if (hwif->chipset != ide_ht6560b)
> + return;
>
> - if (!try_to_init_ht6560b()) {
> - printk(KERN_NOTICE "%s: HBA not found\n", __FUNCTION__);
> - return -ENODEV;
> - }
> + hwif->chipset = ide_unknown;
> + hwif->tuneproc = NULL;
> + hwif->selectproc = NULL;
> + hwif->serialized = 0;
> + hwif->mate = NULL;
> + hwif->channel = 0;
>
> - probe_ht6560b();
> - if (ide_hwifs[0].chipset != ide_ht6560b &&
> - ide_hwifs[1].chipset != ide_ht6560b) {
> - ht6560b_release();
> - return -ENODEV;
> - }
> - return 0;
> + hwif->drives[0].drive_data = 0;
> + hwif->drives[1].drive_data = 0;
> }
> -module_init(ht6560b_mod_init);
>
> -void __init ht6560b_mod_exit(void)
> +static void __exit ht6560b_exit(void)
> {
> - ht6560b_release();
> + ht6560b_release_hwif(&ide_hwifs[0]);
> + ht6560b_release_hwif(&ide_hwifs[1]);
> + release_region(HT_CONFIG_PORT, 1);
> }
> -module_exit(ht6560b_mod_exit);
> +
> +module_init(ht6560b_init);
> +module_exit(ht6560b_exit);
> #endif
>
> +MODULE_AUTHOR("See Local File");
> +MODULE_DESCRIPTION("HT-6560B EIDE-controller support");
> +MODULE_LICENSE("GPL");
>
> _
>
prev parent reply other threads:[~2004-01-10 14:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-28 14:29 ht6560b patch for 2.4 (and 2.6?) Jan Evert van Grootheest
2004-01-09 0:12 ` [PATCH] " Bartlomiej Zolnierkiewicz
2004-01-10 14:39 ` Jan Evert van Grootheest [this message]
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=40000E9A.7070805@iae.nl \
--to=janevert@iae.nl \
--cc=B.Zolnierkiewicz@elka.pw.edu.pl \
--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.