Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit efd50585 authored by Dominik Brodowski's avatar Dominik Brodowski
Browse files

[PATCH] pcmcia: remove manf_id and card_id indirection



As we read out the manufactor and card_id from the PCMCIA device in the
PCMCIA core, and device drivers can access those reliably in struct
pcmcia_device's fields manf_id and card_id, remove additional (and partly
broken) manf_id and card_id detection logic from PCMCIA device drivers.

Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
parent 44e5e33e
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -164,9 +164,9 @@ static int pcmcia_init_one(struct pcmcia_device *pdev)


	/* See if we have a manufacturer identifier. Use it to set is_kme for
	/* See if we have a manufacturer identifier. Use it to set is_kme for
	   vendor quirks */
	   vendor quirks */
	tuple.DesiredTuple = CISTPL_MANFID;
	is_kme = ((pdev->manf_id == MANFID_KME) &&
	if (!pcmcia_get_first_tuple(pdev, &tuple) && !pcmcia_get_tuple_data(pdev, &tuple) && !pcmcia_parse_tuple(pdev, &tuple, &stk->parse))
		  ((pdev->card_id == PRODID_KME_KXLC005_A) ||
			is_kme = ((stk->parse.manfid.manf == MANFID_KME) && ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) || (stk->parse.manfid.card == PRODID_KME_KXLC005_B)));
		   (pdev->card_id == PRODID_KME_KXLC005_B)));


	/* Not sure if this is right... look up the current Vcc */
	/* Not sure if this is right... look up the current Vcc */
	CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(pdev, &stk->conf));
	CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(pdev, &stk->conf));
+3 −7
Original line number Original line Diff line number Diff line
@@ -199,13 +199,9 @@ static int ide_config(struct pcmcia_device *link)
    link->conf.ConfigBase = stk->parse.config.base;
    link->conf.ConfigBase = stk->parse.config.base;
    link->conf.Present = stk->parse.config.rmask[0];
    link->conf.Present = stk->parse.config.rmask[0];


    tuple.DesiredTuple = CISTPL_MANFID;
    is_kme = ((link->manf_id == MANFID_KME) &&
    if (!pcmcia_get_first_tuple(link, &tuple) &&
	      ((link->card_id == PRODID_KME_KXLC005_A) ||
	!pcmcia_get_tuple_data(link, &tuple) &&
	       (link->card_id == PRODID_KME_KXLC005_B)));
	!pcmcia_parse_tuple(link, &tuple, &stk->parse))
	is_kme = ((stk->parse.manfid.manf == MANFID_KME) &&
		  ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) ||
		   (stk->parse.manfid.card == PRODID_KME_KXLC005_B)));


    /* Not sure if this is right... look up the current Vcc */
    /* Not sure if this is right... look up the current Vcc */
    CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf));
    CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf));
+4 −8
Original line number Original line Diff line number Diff line
@@ -272,17 +272,13 @@ static int tc589_config(struct pcmcia_device *link)
    CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse));
    CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse));
    link->conf.ConfigBase = parse.config.base;
    link->conf.ConfigBase = parse.config.base;
    link->conf.Present = parse.config.rmask[0];
    link->conf.Present = parse.config.rmask[0];
    tuple.Attributes = TUPLE_RETURN_COMMON;


    /* Is this a 3c562? */
    /* Is this a 3c562? */
    tuple.DesiredTuple = CISTPL_MANFID;
    if (link->manf_id != MANFID_3COM)
    tuple.Attributes = TUPLE_RETURN_COMMON;
    if ((pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) &&
	(pcmcia_get_tuple_data(link, &tuple) == CS_SUCCESS)) {
	if (le16_to_cpu(buf[0]) != MANFID_3COM)
	    printk(KERN_INFO "3c589_cs: hmmm, is this really a "
	    printk(KERN_INFO "3c589_cs: hmmm, is this really a "
		   "3Com card??\n");
		   "3Com card??\n");
	multi = (le16_to_cpu(buf[1]) == PRODID_3COM_3C562);
    multi = (link->card_id == PRODID_3COM_3C562);
    }


    /* For the 3c562, the base address must be xx00-xx7f */
    /* For the 3c562, the base address must be xx00-xx7f */
    link->io.IOAddrLines = 16;
    link->io.IOAddrLines = 16;
+8 −18
Original line number Original line Diff line number Diff line
@@ -374,17 +374,12 @@ static int fmvj18x_config(struct pcmcia_device *link)
	CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple));
	CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple));
	CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse));
	CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse));
	link->conf.ConfigIndex = parse.cftable_entry.index;
	link->conf.ConfigIndex = parse.cftable_entry.index;
	tuple.DesiredTuple = CISTPL_MANFID;
	switch (link->manf_id) {
	if (pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS)
	    CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple));
	else
	    buf[0] = 0xffff;
	switch (le16_to_cpu(buf[0])) {
	case MANFID_TDK:
	case MANFID_TDK:
	    cardtype = TDK;
	    cardtype = TDK;
	    if (le16_to_cpu(buf[1]) == PRODID_TDK_GN3410
	    if (link->card_id == PRODID_TDK_GN3410
			|| le16_to_cpu(buf[1]) == PRODID_TDK_NP9610
			|| link->card_id == PRODID_TDK_NP9610
			|| le16_to_cpu(buf[1]) == PRODID_TDK_MN3200) {
			|| link->card_id == PRODID_TDK_MN3200) {
		/* MultiFunction Card */
		/* MultiFunction Card */
		link->conf.ConfigBase = 0x800;
		link->conf.ConfigBase = 0x800;
		link->conf.ConfigIndex = 0x47;
		link->conf.ConfigIndex = 0x47;
@@ -395,11 +390,11 @@ static int fmvj18x_config(struct pcmcia_device *link)
	    cardtype = CONTEC;
	    cardtype = CONTEC;
	    break;
	    break;
	case MANFID_FUJITSU:
	case MANFID_FUJITSU:
	    if (le16_to_cpu(buf[1]) == PRODID_FUJITSU_MBH10302)
	    if (link->card_id == PRODID_FUJITSU_MBH10302)
                /* RATOC REX-5588/9822/4886's PRODID are 0004(=MBH10302),
                /* RATOC REX-5588/9822/4886's PRODID are 0004(=MBH10302),
                   but these are MBH10304 based card. */ 
                   but these are MBH10304 based card. */ 
		cardtype = MBH10304;
		cardtype = MBH10304;
	    else if (le16_to_cpu(buf[1]) == PRODID_FUJITSU_MBH10304)
	    else if (link->card_id == PRODID_FUJITSU_MBH10304)
		cardtype = MBH10304;
		cardtype = MBH10304;
	    else
	    else
		cardtype = LA501;
		cardtype = LA501;
@@ -409,14 +404,9 @@ static int fmvj18x_config(struct pcmcia_device *link)
	}
	}
    } else {
    } else {
	/* old type card */
	/* old type card */
	tuple.DesiredTuple = CISTPL_MANFID;
	switch (link->manf_id) {
	if (pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS)
	    CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple));
	else
	    buf[0] = 0xffff;
	switch (le16_to_cpu(buf[0])) {
	case MANFID_FUJITSU:
	case MANFID_FUJITSU:
	    if (le16_to_cpu(buf[1]) == PRODID_FUJITSU_MBH10304) {
	    if (link->card_id == PRODID_FUJITSU_MBH10304) {
		cardtype = XXX10304;    /* MBH10304 with buggy CIS */
		cardtype = XXX10304;    /* MBH10304 with buggy CIS */
	        link->conf.ConfigIndex = 0x20;
	        link->conf.ConfigIndex = 0x20;
	    } else {
	    } else {
+7 −15
Original line number Original line Diff line number Diff line
@@ -519,7 +519,7 @@ static int pcnet_config(struct pcmcia_device *link)
    tuple_t tuple;
    tuple_t tuple;
    cisparse_t parse;
    cisparse_t parse;
    int i, last_ret, last_fn, start_pg, stop_pg, cm_offset;
    int i, last_ret, last_fn, start_pg, stop_pg, cm_offset;
    int manfid = 0, prodid = 0, has_shmem = 0;
    int has_shmem = 0;
    u_short buf[64];
    u_short buf[64];
    hw_info_t *hw_info;
    hw_info_t *hw_info;


@@ -536,14 +536,6 @@ static int pcnet_config(struct pcmcia_device *link)
    link->conf.ConfigBase = parse.config.base;
    link->conf.ConfigBase = parse.config.base;
    link->conf.Present = parse.config.rmask[0];
    link->conf.Present = parse.config.rmask[0];


    tuple.DesiredTuple = CISTPL_MANFID;
    tuple.Attributes = TUPLE_RETURN_COMMON;
    if ((pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) &&
 	(pcmcia_get_tuple_data(link, &tuple) == CS_SUCCESS)) {
	manfid = le16_to_cpu(buf[0]);
	prodid = le16_to_cpu(buf[1]);
    }

    tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
    tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
    tuple.Attributes = 0;
    tuple.Attributes = 0;
    CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple));
    CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple));
@@ -589,8 +581,8 @@ static int pcnet_config(struct pcmcia_device *link)
	link->conf.Attributes |= CONF_ENABLE_SPKR;
	link->conf.Attributes |= CONF_ENABLE_SPKR;
	link->conf.Status = CCSR_AUDIO_ENA;
	link->conf.Status = CCSR_AUDIO_ENA;
    }
    }
    if ((manfid == MANFID_IBM) &&
    if ((link->manf_id == MANFID_IBM) &&
	(prodid == PRODID_IBM_HOME_AND_AWAY))
	(link->card_id == PRODID_IBM_HOME_AND_AWAY))
	link->conf.ConfigIndex |= 0x10;
	link->conf.ConfigIndex |= 0x10;


    CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf));
    CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf));
@@ -624,10 +616,10 @@ static int pcnet_config(struct pcmcia_device *link)
    info->flags = hw_info->flags;
    info->flags = hw_info->flags;
    /* Check for user overrides */
    /* Check for user overrides */
    info->flags |= (delay_output) ? DELAY_OUTPUT : 0;
    info->flags |= (delay_output) ? DELAY_OUTPUT : 0;
    if ((manfid == MANFID_SOCKET) &&
    if ((link->manf_id == MANFID_SOCKET) &&
	((prodid == PRODID_SOCKET_LPE) ||
	((link->card_id == PRODID_SOCKET_LPE) ||
	 (prodid == PRODID_SOCKET_LPE_CF) ||
	 (link->card_id == PRODID_SOCKET_LPE_CF) ||
	 (prodid == PRODID_SOCKET_EIO)))
	 (link->card_id == PRODID_SOCKET_EIO)))
	info->flags &= ~USE_BIG_BUF;
	info->flags &= ~USE_BIG_BUF;
    if (!use_big_buf)
    if (!use_big_buf)
	info->flags &= ~USE_BIG_BUF;
	info->flags &= ~USE_BIG_BUF;
Loading