lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 15 Dec 2011 18:20:47 +0900
From:	Donggeun Kim <dg77.kim@...sung.com>
To:	linux-kernel@...r.kernel.org
Cc:	arnd@...db.de, greg@...ah.com, sameo@...ux.intel.com,
	myungjoo.ham@...sung.com, kyungmin.park@...sung.com,
	dg77.kim@...sung.com
Subject: [PATCH] misc: max8997-muic: remove sysfs attribute

The 'switch' sysfs attribute is used for
showing and setting the switch state of the device.
However, setting it from the userspace focibly is not appropriate.
And showing the state can be handled from
other places (e.g. external connector) in a unified manner.
This patch removes the sysfs attribute.
Plus, uevent messages for interrupts are also removed.

The initial max8997-muic driver is merged at:
git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git for-next

Signed-off-by: Donggeun Kim <dg77.kim@...sung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@...sung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@...sung.com>
---
 drivers/misc/max8997-muic.c |  137 +-----------------------------------------
 1 files changed, 4 insertions(+), 133 deletions(-)

diff --git a/drivers/misc/max8997-muic.c b/drivers/misc/max8997-muic.c
index 74a9448..d74ef41 100644
--- a/drivers/misc/max8997-muic.c
+++ b/drivers/misc/max8997-muic.c
@@ -307,11 +307,8 @@ static void max8997_muic_irq_work(struct work_struct *work)
 			struct max8997_muic_info, irq_work);
 	struct max8997_platform_data *pdata =
 				dev_get_platdata(info->iodev->dev);
-	char env_name_str[30], env_state_str[15];
-	char *envp[] = { env_name_str, env_state_str, NULL };
 	u8 status[3];
-	u8 adc, adc_low, adc_err;
-	u8 vb_volt, db_chg, dcd_tmr, cdr, chg_type, ovp;
+	u8 adc, chg_type;
 
 	int irq_type = info->irq - pdata->irq_base;
 	int ret;
@@ -330,72 +327,24 @@ static void max8997_muic_irq_work(struct work_struct *work)
 			status[0], status[1]);
 
 	switch (irq_type) {
-	case MAX8997_MUICIRQ_ADCError:
-		adc_err = status[0] & STATUS1_ADCERR_MASK;
-		adc_err >>= STATUS1_ADCERR_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "ADC_Error");
-		sprintf(env_state_str, "STATE=%d", adc_err);
-		break;
-	case MAX8997_MUICIRQ_ADCLow:
-		adc_low = status[0] & STATUS1_ADCLOW_MASK;
-		adc_low >>= STATUS1_ADCLOW_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "ADC_Low");
-		sprintf(env_state_str, "STATE=%d", adc_low);
-		break;
 	case MAX8997_MUICIRQ_ADC:
 		adc = status[0] & STATUS1_ADC_MASK;
 		adc >>= STATUS1_ADC_SHIFT;
 
 		max8997_muic_handle_adc(info, adc);
-
-		sprintf(env_name_str, "IRQ=%s", "ADC");
-		sprintf(env_state_str, "STATE=%d", adc);
-		break;
-	case MAX8997_MUICIRQ_VBVolt:
-		vb_volt = status[1] & STATUS2_VBVOLT_MASK;
-		vb_volt >>= STATUS2_VBVOLT_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "VB_Volt");
-		sprintf(env_state_str, "STATE=%d", vb_volt);
-		break;
-	case MAX8997_MUICIRQ_DBChg:
-		db_chg = status[1] & STATUS2_DBCHG_MASK;
-		db_chg >>= STATUS2_DBCHG_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "DB_CHARGER");
-		sprintf(env_state_str, "STATE=%d", db_chg);
-		break;
-	case MAX8997_MUICIRQ_DCDTmr:
-		dcd_tmr = status[1] & STATUS2_DCDTMR_MASK;
-		dcd_tmr >>= STATUS2_DCDTMR_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "DCD_TIMER");
-		sprintf(env_state_str, "STATE=%d", dcd_tmr);
-		break;
-	case MAX8997_MUICIRQ_ChgDetRun:
-		cdr = status[1] & STATUS2_CHGDETRUN_MASK;
-		cdr >>= STATUS2_CHGDETRUN_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "CHG_DET_RUN");
-		sprintf(env_state_str, "STATE=%d", cdr);
 		break;
 	case MAX8997_MUICIRQ_ChgTyp:
 		chg_type = status[1] & STATUS2_CHGTYP_MASK;
 		chg_type >>= STATUS2_CHGTYP_SHIFT;
 
 		max8997_muic_handle_charger_type(info, chg_type);
-
-		sprintf(env_name_str, "IRQ=%s", "CHARGER_TYPE");
-		sprintf(env_state_str, "STATE=%d", chg_type);
-		break;
-	case MAX8997_MUICIRQ_OVP:
-		ovp = status[2] & STATUS3_OVP_MASK;
-		ovp >>= STATUS3_OVP_SHIFT;
-		sprintf(env_name_str, "IRQ=%s", "OVER-VOLTAGE");
-		sprintf(env_state_str, "STATE=%d", ovp);
 		break;
 	default:
+		dev_info(info->dev, "misc interrupt: %s occurred\n",
+			 muic_irqs[irq_type].name);
 		break;
 	}
 
-	kobject_uevent_env(&info->dev->kobj, KOBJ_CHANGE, envp);
-
 	mutex_unlock(&info->mutex);
 
 	return;
@@ -438,74 +387,6 @@ static void max8997_muic_detect_dev(struct max8997_muic_info *info)
 	max8997_muic_handle_charger_type(info, chg_type);
 }
 
-static ssize_t max8997_muic_show_manualsw(struct device *dev,
-		struct device_attribute *attr, char *buf)
-{
-	struct max8997_muic_info *info = dev_get_drvdata(dev);
-	int ret;
-	u8 value, manual_switch;
-
-	ret = max8997_read_reg(info->muic, MAX8997_MUIC_REG_CONTROL1, &value);
-	if (ret) {
-		dev_err(info->dev, "failed to read muic register\n");
-		return sprintf(buf, "UNKNOWN\n");
-	}
-
-	manual_switch = value & (COMN1SW_MASK | COMP2SW_MASK);
-
-	switch (manual_switch) {
-	case MAX8997_SW_USB:
-		return sprintf(buf, "USB\n");
-	case MAX8997_SW_AUDIO:
-		return sprintf(buf, "AUDIO\n");
-	case MAX8997_SW_UART:
-		return sprintf(buf, "UART\n");
-	default:
-		return sprintf(buf, "OPEN\n");
-	}
-}
-
-static ssize_t max8997_muic_store_manualsw(struct device *dev,
-				    struct device_attribute *attr,
-				    const char *buf, size_t count)
-{
-	struct max8997_muic_info *info = dev_get_drvdata(dev);
-	int ret;
-	u8 manual_switch;
-
-	if (!strncmp(buf, "USB", 3)) {
-		manual_switch = MAX8997_SW_USB;
-	} else if (!strncmp(buf, "AUDIO", 5)) {
-		manual_switch = MAX8997_SW_AUDIO;
-	} else if (!strncmp(buf, "UART", 4)) {
-		manual_switch = MAX8997_SW_UART;
-	} else if (!strncmp(buf, "OPEN", 4)) {
-		manual_switch = MAX8997_SW_OPEN;
-	} else {
-		dev_err(info->dev, "invalid parameter\n");
-		goto out;
-	}
-
-	ret = max8997_update_reg(info->muic, MAX8997_MUIC_REG_CONTROL1,
-			manual_switch, SW_MASK);
-	if (ret)
-		dev_err(info->dev, "failed to update muic register\n");
-out:
-	return count;
-}
-
-static DEVICE_ATTR(switch, S_IRUGO | S_IWUSR,
-		max8997_muic_show_manualsw, max8997_muic_store_manualsw);
-
-static struct attribute *max8997_muic_attributes[] = {
-	&dev_attr_switch.attr,
-	NULL
-};
-
-static const struct attribute_group max8997_muic_group = {
-	.attrs = max8997_muic_attributes,
-};
-
 static void max8997_initialize_device(struct max8997_muic_info *info)
 {
 	struct max8997_muic_platform_data *mdata = info->muic_pdata;
@@ -545,13 +426,6 @@ static int __devinit max8997_muic_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, info);
 	mutex_init(&info->mutex);
 
-	ret = sysfs_create_group(&pdev->dev.kobj, &max8997_muic_group);
-	if (ret) {
-		dev_err(&pdev->dev,
-			"failed to create max8997 muic attribute group\n");
-		goto err_sysfs;
-	}
-
 	INIT_WORK(&info->irq_work, max8997_muic_irq_work);
 
 	for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) {
@@ -583,8 +457,6 @@ static int __devinit max8997_muic_probe(struct platform_device *pdev)
 	return ret;
 
 err_irq:
-	sysfs_remove_group(&pdev->dev.kobj, &max8997_muic_group);
-err_sysfs:
 err_pdata:
 	kfree(info);
 err_kfree:
@@ -598,10 +470,9 @@ static int __devexit max8997_muic_remove(struct platform_device *pdev)
 				dev_get_platdata(info->iodev->dev);
 	int i;
 
-	sysfs_remove_group(&pdev->dev.kobj, &max8997_muic_group);
-
 	for (i = 0; i < ARRAY_SIZE(muic_irqs); i++)
 		free_irq(pdata->irq_base + muic_irqs[i].irq, info);
+	cancel_work_sync(&info->irq_work);
 
 	kfree(info);
 
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ