Re: [PATCH] staging:iio:ad7152: Rename misspelled RESEVERD -> RESERVED

2019-01-27 Thread Alexandru Ardelean
On Sat, Jan 26, 2019 at 8:09 PM Jonathan Cameron  wrote:
>
> On Fri, 25 Jan 2019 10:19:54 +0200
> Alexandru Ardelean  wrote:
>
> > On Thu, Jan 24, 2019 at 9:35 PM Rodrigo Ribeiro  
> > wrote:
> > >
> > > Remove the checkpatch.pl check:
> > >
> > > CHECK: 'RESEVERD' may be misspelled - perhaps 'RESERVED'?
> >
> > Hey,
> >
> > A bit curios about this one.
> > Are you using this chip/driver ?
> >
> > Thing is: the part is nearing EOL, and it could be an idea to be
> > marked for removal (since it's still in staging).
> > But if there are users for this driver, it could be left around for a while.
>
> While it might be going away soon, I'm also not that bothered about
> the small amount of churn that a tidy up patch like this causes,
> and it might not go away ;)
>
> However it is rather odd to have a 'reserved' entry for a register.
> can't see that providing any useful information.  Normally I'm
> happy to have complete register sets as a form of documentation
> if the author wants to do it that way.  This however seems silly.
>
> Alex, we haven't really gone with marking things as 'going away'
> before.  I'd suggest we take a guess and remove it if you and the
> team an analog don't think it's in use.  Happy to get a patch for
> that if you want to send one.  Of course, Rodrigo could do that
> patch to get started if that works for everyone? :)
>

We'll also start a discussion about this particular driver internally.
And maybe a procedure for removing drivers that become obsolete [or
come close to it].
We also don't/didn't have one for removing "going away" drivers; I
just remembered that we took a look over this one and decided not to
invest time into it as it's close to being obsolete.

Thanks
Alex

> Jonathan
> >
> > Thanks
> > Alex
> >
> > >
> > > Signed-off-by: Rodrigo Ribeiro 
> > > Signed-off-by: Rafael Tsuha 
> > > ---
> > > This macro is not used anywhere. Should we just correct the
> > > spelling or remove the macro?
> > >
> > >  drivers/staging/iio/cdc/ad7152.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/staging/iio/cdc/ad7152.c 
> > > b/drivers/staging/iio/cdc/ad7152.c
> > > index 25f51db..c9da6d4 100644
> > > --- a/drivers/staging/iio/cdc/ad7152.c
> > > +++ b/drivers/staging/iio/cdc/ad7152.c
> > > @@ -35,7 +35,7 @@
> > >  #define AD7152_REG_CH2_GAIN_HIGH   12
> > >  #define AD7152_REG_CH2_SETUP   14
> > >  #define AD7152_REG_CFG 15
> > > -#define AD7152_REG_RESEVERD16
> > > +#define AD7152_REG_RESERVED16
> > >  #define AD7152_REG_CAPDAC_POS  17
> > >  #define AD7152_REG_CAPDAC_NEG  18
> > >  #define AD7152_REG_CFG226
> > > --
> > > 2.7.4
> > >
>
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging:iio:ad7152: Rename misspelled RESEVERD -> RESERVED

2019-01-27 Thread valdis . kletnieks
On Fri, 25 Jan 2019 22:14:32 -0200, Rodrigo Ribeiro said:
> Maybe, one checkstyle patch is enough, right? Which drivers can I truly
> contribute to?

I'll give you a pointer to the "How to contribute" the Kernel Newbies list and 
IRC
channel uses:

https://lists.kernelnewbies.org/pipermail/kernelnewbies/2017-April/017765.html
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 2/2] staging: iio: ad7780: moving ad7780 out of staging

2019-01-27 Thread Renato Lui Geh

Move ad7780 ADC driver out of staging and into the mainline.

The ad7780 is a sigma-delta analog to digital converter. This driver provides
reading voltage values and status bits from both the ad778x and ad717x series.
Its interface also allows writing on the FILTER and GAIN GPIO pins on the
ad778x.

Signed-off-by: Renato Lui Geh 
Signed-off-by: Giuliano Belinassi 
Co-developed-by: Giuliano Belinassi 
---
Changes in v2:
- Added information on the ad7780 driver in commit message
- SPDX GPLv2 license
- GPIO inits now come before regulator in probe

drivers/iio/adc/Kconfig  |  13 ++
drivers/iio/adc/Makefile |   1 +
drivers/iio/adc/ad7780.c | 361 ++
drivers/staging/iio/adc/Kconfig  |  13 --
drivers/staging/iio/adc/Makefile |   1 -
drivers/staging/iio/adc/ad7780.c | 362 ---
6 files changed, 375 insertions(+), 376 deletions(-)
create mode 100644 drivers/iio/adc/ad7780.c
delete mode 100644 drivers/staging/iio/adc/ad7780.c

diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index f3cc7a31bce5..2cdee166d0e9 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -108,6 +108,19 @@ config AD7766
  To compile this driver as a module, choose M here: the module will be
  called ad7766.

+config AD7780
+   tristate "Analog Devices AD7780 and similar ADCs driver"
+   depends on SPI
+   depends on GPIOLIB || COMPILE_TEST
+   select AD_SIGMA_DELTA
+   help
+ Say yes here to build support for Analog Devices AD7170, AD7171,
+ AD7780 and AD7781 SPI analog to digital converters (ADC).
+ If unsure, say N (but it's safe to say "Y").
+
+ To compile this driver as a module, choose M here: the
+ module will be called ad7780.
+
config AD7791
tristate "Analog Devices AD7791 ADC driver"
depends on SPI
diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile
index ea5031348052..b48852157115 100644
--- a/drivers/iio/adc/Makefile
+++ b/drivers/iio/adc/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_AD7606_IFACE_PARALLEL) += ad7606_par.o
obj-$(CONFIG_AD7606_IFACE_SPI) += ad7606_spi.o
obj-$(CONFIG_AD7606) += ad7606.o
obj-$(CONFIG_AD7766) += ad7766.o
+obj-$(CONFIG_AD7780) += ad7780.o
obj-$(CONFIG_AD7791) += ad7791.o
obj-$(CONFIG_AD7793) += ad7793.o
obj-$(CONFIG_AD7887) += ad7887.o
diff --git a/drivers/iio/adc/ad7780.c b/drivers/iio/adc/ad7780.c
new file mode 100644
index ..db2360af82b7
--- /dev/null
+++ b/drivers/iio/adc/ad7780.c
@@ -0,0 +1,361 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * AD7170/AD7171 and AD7780/AD7781 SPI ADC driver
+ *
+ * Copyright 2011 Analog Devices Inc.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#define AD7780_RDY BIT(7)
+#define AD7780_FILTER  BIT(6)
+#define AD7780_ERR BIT(5)
+#define AD7780_ID1 BIT(4)
+#define AD7780_ID0 BIT(3)
+#define AD7780_GAINBIT(2)
+#define AD7780_PAT1BIT(1)
+#define AD7780_PAT0BIT(0)
+
+#define AD7780_PATTERN (AD7780_PAT0)
+#define AD7780_PATTERN_MASK(AD7780_PAT0 | AD7780_PAT1)
+
+#define AD7170_PAT2BIT(2)
+
+#define AD7170_PATTERN (AD7780_PAT0 | AD7170_PAT2)
+#define AD7170_PATTERN_MASK(AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)
+
+#define AD7780_GAIN_GPIO   0
+#define AD7780_FILTER_GPIO 1
+
+#define AD7780_GAIN_MIDPOINT   64
+#define AD7780_FILTER_MIDPOINT 13350
+
+static const unsigned int ad778x_gain[2]= { 1, 128 };
+static const unsigned int ad778x_filter[2]  = { 1, 16700 };
+
+struct ad7780_chip_info {
+   struct iio_chan_specchannel;
+   unsigned intpattern_mask;
+   unsigned intpattern;
+   boolis_ad778x;
+};
+
+struct ad7780_state {
+   const struct ad7780_chip_info   *chip_info;
+   struct regulator*reg;
+   struct gpio_desc*powerdown_gpio;
+   struct gpio_desc*gain_gpio;
+   struct gpio_desc*filter_gpio;
+   unsigned intgain;
+   unsigned intfilter;
+   unsigned intint_vref_mv;
+
+   struct ad_sigma_delta sd;
+};
+
+enum ad7780_supported_device_ids {
+   ID_AD7170,
+   ID_AD7171,
+   ID_AD7780,
+   ID_AD7781,
+};
+
+static struct ad7780_state *ad_sigma_delta_to_ad7780(struct ad_sigma_delta *sd)
+{
+   return container_of(sd, struct ad7780_state, sd);
+}
+
+static int ad7780_set_mode(struct ad_sigma_delta *sigma_delta,
+  enum ad_sigma_delta_mode mode)
+{
+   struct ad7780_state *st = ad_sigma_delta_to_ad7780(sigma_delta);
+   unsigned int val;
+
+   switch (mode) {
+   case AD_SD_MODE_SINGLE:
+   case 

[PATCH v2 0/2] staging: iio: ad7780: move out of staging

2019-01-27 Thread Renato Lui Geh

This series of patches add user input to ad7780 'gain' & 'filter' gpio
pins. It also includes a patch to move ad7780 out of staging and to the
main tree.

Renato Lui Geh (2):
 staging: iio: ad7780: add gain & filter gpio support
 staging: iio: ad7780: moving ad7780 out of staging

drivers/iio/adc/Kconfig|  13 +
drivers/iio/adc/Makefile   |   1 +
drivers/iio/adc/ad7780.c   | 361 +
drivers/staging/iio/adc/Kconfig|  13 -
drivers/staging/iio/adc/Makefile   |   1 -
drivers/staging/iio/adc/ad7780.c   | 277 ---
include/linux/iio/adc/ad_sigma_delta.h |   5 +
7 files changed, 380 insertions(+), 291 deletions(-)
create mode 100644 drivers/iio/adc/ad7780.c
delete mode 100644 drivers/staging/iio/adc/ad7780.c

--
2.20.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 1/2] staging: iio: ad7780: add gain & filter gpio support

2019-01-27 Thread Renato Lui Geh

Previously, the AD7780 driver only supported gpio for the 'powerdown'
pin. This commit adds suppport for the 'gain' and 'filter' pin.

Signed-off-by: Renato Lui Geh 
Signed-off-by: Giuliano Belinassi 
Co-developed-by: Giuliano Belinassi 
---
Changes in v2:
- Filter reading changed to mHz
- Storing filter, gain and voltage to chip_info

drivers/staging/iio/adc/ad7780.c   | 103 ++---
include/linux/iio/adc/ad_sigma_delta.h |   5 ++
2 files changed, 99 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c
index c4a85789c2db..82394e31b168 100644
--- a/drivers/staging/iio/adc/ad7780.c
+++ b/drivers/staging/iio/adc/ad7780.c
@@ -39,6 +39,15 @@
#define AD7170_PATTERN  (AD7780_PAT0 | AD7170_PAT2)
#define AD7170_PATTERN_MASK (AD7780_PAT0 | AD7780_PAT1 | AD7170_PAT2)

+#define AD7780_GAIN_GPIO   0
+#define AD7780_FILTER_GPIO 1
+
+#define AD7780_GAIN_MIDPOINT   64
+#define AD7780_FILTER_MIDPOINT 13350
+
+static const unsigned int ad778x_gain[2]= { 1, 128 };
+static const unsigned int ad778x_filter[2]  = { 1, 16700 };
+
struct ad7780_chip_info {
struct iio_chan_specchannel;
unsigned intpattern_mask;
@@ -50,7 +59,11 @@ struct ad7780_state {
const struct ad7780_chip_info   *chip_info;
struct regulator*reg;
struct gpio_desc*powerdown_gpio;
-   unsigned intgain;
+   struct gpio_desc*gain_gpio;
+   struct gpio_desc*filter_gpio;
+   unsigned intgain;
+   unsigned intfilter;
+   unsigned intint_vref_mv;

struct ad_sigma_delta sd;
};
@@ -104,17 +117,65 @@ static int ad7780_read_raw(struct iio_dev *indio_dev,
voltage_uv = regulator_get_voltage(st->reg);
if (voltage_uv < 0)
return voltage_uv;
-   *val = (voltage_uv / 1000) * st->gain;
+   voltage_uv /= 1000;
+   *val = voltage_uv * st->gain;
*val2 = chan->scan_type.realbits - 1;
+   st->int_vref_mv = voltage_uv;
return IIO_VAL_FRACTIONAL_LOG2;
case IIO_CHAN_INFO_OFFSET:
*val = -(1 << (chan->scan_type.realbits - 1));
return IIO_VAL_INT;
+   case IIO_CHAN_INFO_SAMP_FREQ:
+   *val = st->filter;
+   return IIO_VAL_INT;
}

return -EINVAL;
}

+static int ad7780_write_raw(struct iio_dev *indio_dev,
+   struct iio_chan_spec const *chan,
+   int val,
+   int val2,
+   long m)
+{
+   struct ad7780_state *st = iio_priv(indio_dev);
+   const struct ad7780_chip_info *chip_info = st->chip_info;
+   int vref, gain;
+   unsigned int full_scale;
+
+   if (!chip_info->is_ad778x)
+   return 0;
+
+   switch (m) {
+   case IIO_CHAN_INFO_SCALE:
+   if (val != 0)
+   return -EINVAL;
+
+   vref = st->int_vref_mv * 100LL;
+   full_scale = 1 << (chip_info->channel.scan_type.realbits - 1);
+   gain = DIV_ROUND_CLOSEST(vref, full_scale);
+   gain = DIV_ROUND_CLOSEST(gain, val2);
+   st->gain = gain;
+   if (gain < AD7780_GAIN_MIDPOINT)
+   gain = 0;
+   else
+   gain = 1;
+   gpiod_set_value(st->gain_gpio, gain);
+   break;
+   case IIO_CHAN_INFO_SAMP_FREQ:
+   if (1000*val + val2/1000 < AD7780_FILTER_MIDPOINT)
+   val = 0;
+   else
+   val = 1;
+   st->filter = ad778x_filter[val];
+   gpiod_set_value(st->filter_gpio, val);
+   break;
+   }
+
+   return 0;
+}
+
static int ad7780_postprocess_sample(struct ad_sigma_delta *sigma_delta,
 unsigned int raw_sample)
{
@@ -126,10 +187,8 @@ static int ad7780_postprocess_sample(struct ad_sigma_delta 
*sigma_delta,
return -EIO;

if (chip_info->is_ad778x) {
-   if (raw_sample & AD7780_GAIN)
-   st->gain = 1;
-   else
-   st->gain = 128;
+   st->gain = ad778x_gain[raw_sample & AD7780_GAIN];
+   st->filter = ad778x_filter[raw_sample & AD7780_FILTER];
}

return 0;
@@ -141,18 +200,20 @@ static const struct ad_sigma_delta_info 
ad7780_sigma_delta_info = {
.has_registers = false,
};

-#define AD7780_CHANNEL(bits, wordsize) \
+#define AD7170_CHANNEL(bits, wordsize) \
AD_SD_CHANNEL_NO_SAMP_FREQ(1, 0, 0, bits, 32, wordsize - bits)
+#define AD7780_CHANNEL(bits, wordsize) \
+   AD_SD_CHANNEL_GAIN_FILTER(1, 0, 0, bits, 32, wordsize - bits)


[PATCH] staging: octeon: fix broken phylib usage

2019-01-27 Thread Aaro Koskinen
Commit 2b3e88ea6528 ("net: phy: improve phy state checking")
added checks for phylib usage, and this triggers with OCTEON ethernet
and results in broken networking.

Fix by replacing phy_start_aneg() with phy_start().

Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking")
Signed-off-by: Aaro Koskinen 
---
 drivers/staging/octeon/ethernet-mdio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/octeon/ethernet-mdio.c 
b/drivers/staging/octeon/ethernet-mdio.c
index 2848fa71a33d..d6248eecf123 100644
--- a/drivers/staging/octeon/ethernet-mdio.c
+++ b/drivers/staging/octeon/ethernet-mdio.c
@@ -170,7 +170,7 @@ int cvm_oct_phy_setup_device(struct net_device *dev)
return -ENODEV;
 
priv->last_link = 0;
-   phy_start_aneg(phydev);
+   phy_start(phydev);
 
return 0;
 no_phy:
-- 
2.17.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 0/2] staging: iio: ad7780: move out of staging

2019-01-27 Thread Renato Lui Geh



___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 3/3] Staging: media: ipu3: fixed max charecter style issue

2019-01-27 Thread Prashantha SP
fixed coding style issue.

Signed-off-by: Prashantha SP 
---
 drivers/staging/media/ipu3/ipu3-css.c | 178 ++
 1 file changed, 94 insertions(+), 84 deletions(-)

diff --git a/drivers/staging/media/ipu3/ipu3-css.c 
b/drivers/staging/media/ipu3/ipu3-css.c
index 44c55639389a..466a1a8cc422 100644
--- a/drivers/staging/media/ipu3/ipu3-css.c
+++ b/drivers/staging/media/ipu3/ipu3-css.c
@@ -186,7 +186,8 @@ static bool ipu3_css_queue_enabled(struct ipu3_css_queue *q)
 /*** css hw ***/
 
 /* In the style of writesl() defined in include/asm-generic/io.h */
-static inline void writes(const void *mem, ssize_t count, void __iomem *addr)
+static inline void writes(const void *mem, ssize_t count,
+ void __iomem *addr)
 {
if (count >= 4) {
const u32 *buf = mem;
@@ -671,8 +672,9 @@ static void ipu3_css_pipeline_cleanup(struct ipu3_css *css, 
unsigned int pipe)
ipu3_css_pool_cleanup(imgu, >pipes[pipe].pool.obgrid);
 
for (i = 0; i < IMGU_ABI_NUM_MEMORIES; i++)
-   ipu3_css_pool_cleanup(imgu,
- 
>pipes[pipe].pool.binary_params_p[i]);
+   ipu3_css_pool_cleanup
+   (imgu,
+   >pipes[pipe].pool.binary_params_p[i]);
 }
 
 /*
@@ -732,43 +734,44 @@ static int ipu3_css_pipeline_init(struct ipu3_css *css, 
unsigned int pipe)
goto bad_firmware;
 
cfg_iter->input_info.res.width =
-   
css_pipe->queue[IPU3_CSS_QUEUE_IN].fmt.mpix.width;
+   css_pipe->queue[IPU3_CSS_QUEUE_IN].fmt.mpix.width;
cfg_iter->input_info.res.height =
-   
css_pipe->queue[IPU3_CSS_QUEUE_IN].fmt.mpix.height;
+   css_pipe->queue[IPU3_CSS_QUEUE_IN].fmt.mpix.height;
cfg_iter->input_info.padded_width =
css_pipe->queue[IPU3_CSS_QUEUE_IN].width_pad;
cfg_iter->input_info.format =
-   
css_pipe->queue[IPU3_CSS_QUEUE_IN].css_fmt->frame_format;
+   css_pipe->queue[IPU3_CSS_QUEUE_IN].css_fmt->frame_format;
cfg_iter->input_info.raw_bit_depth =
css_pipe->queue[IPU3_CSS_QUEUE_IN].css_fmt->bit_depth;
cfg_iter->input_info.raw_bayer_order =
css_pipe->queue[IPU3_CSS_QUEUE_IN].css_fmt->bayer_order;
cfg_iter->input_info.raw_type = IMGU_ABI_RAW_TYPE_BAYER;
 
-   cfg_iter->internal_info.res.width = 
css_pipe->rect[IPU3_CSS_RECT_BDS].width;
+   cfg_iter->internal_info.res.width =
+   css_pipe->rect[IPU3_CSS_RECT_BDS].width;
cfg_iter->internal_info.res.height =
-   
css_pipe->rect[IPU3_CSS_RECT_BDS].height;
+   css_pipe->rect[IPU3_CSS_RECT_BDS].height;
cfg_iter->internal_info.padded_width = bds_width_pad;
cfg_iter->internal_info.format =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
cfg_iter->internal_info.raw_bit_depth =
css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bit_depth;
cfg_iter->internal_info.raw_bayer_order =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bayer_order;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bayer_order;
cfg_iter->internal_info.raw_type = IMGU_ABI_RAW_TYPE_BAYER;
 
cfg_iter->output_info.res.width =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.width;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.width;
cfg_iter->output_info.res.height =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.height;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].fmt.mpix.height;
cfg_iter->output_info.padded_width =
css_pipe->queue[IPU3_CSS_QUEUE_OUT].width_pad;
cfg_iter->output_info.format =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->frame_format;
cfg_iter->output_info.raw_bit_depth =
-   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bit_depth;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bit_depth;
cfg_iter->output_info.raw_bayer_order =
-   
css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bayer_order;
+   css_pipe->queue[IPU3_CSS_QUEUE_OUT].css_fmt->bayer_order;
cfg_iter->output_info.raw_type = IMGU_ABI_RAW_TYPE_BAYER;
 
cfg_iter->vf_info.res.width =
@@ -778,14 +781,15 @@ static int ipu3_css_pipeline_init(struct ipu3_css *css, 
unsigned int pipe)
cfg_iter->vf_info.padded_width =

Re:From M.A J.

2019-01-27 Thread Mrs.Akia Joel.
Dear Beloved,

My dear, I know it will be a great surprise to you reading from me today as we 
did not know each other before now. Please take your time and go through this 
mail, it is my present situation that gave way to my contact to you for a 
proposal for charity work with my money. I never knew things will turn this way 
after a painful death of my beloved husband during the Algerian civil war.

My Name is Mrs. Akia Joel. I am writing this mail to you with heavy heart. I 
married to Mr. Mike Joel for 32 years without a child. He worked with the 
nation's gross domestic product (GDP) as top senior officer before his death. 
After long lonely years i decided to use our joint earned money US$10.5 million 
for charity work since i have no child but unfortunately my sickness 
aggravated. I became sick and unhealthy to continue the work and this owns the 
major reason why i contacted you to hand you over the money to establish a 
charity organization.

Recently my doctor declared that i have but few weeks to live due to the level 
of my cancer. My late husband's relatives who supposed to assist me in my 
situation are greedy and would only need the money. Since my ill-health they 
have stolen and converted all of my late husband's properties to their names 
because i dont have a child. They abandoned me to battle with my sickness alone.

Having known my condition I decided to hand you over this money for charity 
work. I came across your contact on humanitarian calendar event of the year. I 
want you to take 30% of the total money for your personal use while the 
remaining 70% will be invested by you for the benefit of the less 
privileged/orphans in the society. I grew up as an orphan and i know the pains 
and sorrow that are associated with it and it is now my desire to use this 
money to assist them to the glory of God.

I shall be going in for a surgery operations soonest and desire this money to 
be transferred to you as I do not wish to leave this money in the bank because 
bankers might misuse it for their own interest after my death.

As soon as I receive your quick reply assuring me that you will utilize the 
money as i instructed you for the benefit of the less privilege, I shall give 
you more details and also instruct my bank to release the money to you for the 
charity project. I hope you receive this mail in good health.

I need your very urgent reply because i dont know what will be my situation in 
next minute,
I am waiting your reply.

Yours sincerely,
Mrs. Akia Joel.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel